demo_basic_diff.htm
来自「Delphi脚本控件」· HTM 代码 · 共 450 行 · 第 1/3 页
HTM
450 行
<html>
<head>
<link rel=stylesheet type="text/css" href="styles.css">
</head>
<body>
<h3>
LISPPA: Symbolic differentiation (paxBasic).
</h3>
<hr>
<blockquote>
<pre>
<font color="blue"><b>Dim</b></font> X = <font color="Red">"X"</font>
<font color="blue"><b>Dim</b></font> OP_ADD = <font color="Red">"+"</font>
<font color="blue"><b>Dim</b></font> OP_MULT = <font color="Red">"*"</font>
<font color="blue"><b>Dim</b></font> OP_SUB = <font color="Red">"-"</font>
<font color="blue"><b>Dim</b></font> OP_DIV = <font color="Red">"/"</font>
<font color="blue"><b>Dim</b></font> OP_UN = <font color="Red">"~"</font>
<font color="blue"><b>Dim</b></font> OP_LOG = <font color="Red">"ln"</font>
<font color="blue"><b>Dim</b></font> OP_POW = <font color="Red">"^"</font>
<font color="blue"><b>Function</b></font> IsVar(Term <font color="blue"><b>As</b></font> <font color="blue"><b>Variant</b></font>) <font color="blue"><b>As</b></font> <font color="blue"><b>Boolean</b></font>
<font color="blue"><b>If</b></font> isString(Term) <font color="blue"><b>Then</b></font>
<font color="blue"><b>If</b></font> Term = <font color="Red">"X"</font> <font color="blue"><b>Then</b></font>
<font color="blue"><b>Return</b></font> true
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>Return</b></font> false
<font color="blue"><b>End</b></font> <font color="blue"><b>Function</b></font>
<font color="blue"><b>Function</b></font> IsConstant(Term <font color="blue"><b>As</b></font> <font color="blue"><b>Variant</b></font>) <font color="blue"><b>As</b></font> <font color="blue"><b>Boolean</b></font>
<font color="blue"><b>Return</b></font> isNumber(Term)
<font color="blue"><b>End</b></font> <font color="blue"><b>Function</b></font>
<font color="blue"><b>Function</b></font> IsZero(Term <font color="blue"><b>As</b></font> <font color="blue"><b>Variant</b></font>) <font color="blue"><b>As</b></font> <font color="blue"><b>Boolean</b></font>
<font color="blue"><b>If</b></font> IsConstant(Term) <font color="blue"><b>Then</b></font>
<font color="blue"><b>If</b></font> Term = 0 <font color="blue"><b>Then</b></font>
<font color="blue"><b>Return</b></font> true
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>Return</b></font> false
<font color="blue"><b>End</b></font> <font color="blue"><b>Function</b></font>
<font color="blue"><b>Function</b></font> IsUnit(Term <font color="blue"><b>As</b></font> <font color="blue"><b>Variant</b></font>) <font color="blue"><b>As</b></font> <font color="blue"><b>Boolean</b></font>
<font color="blue"><b>If</b></font> IsConstant(Term) <font color="blue"><b>Then</b></font>
<font color="blue"><b>If</b></font> Term = 1 <font color="blue"><b>Then</b></font>
<font color="blue"><b>Return</b></font> true
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>Return</b></font> false
<font color="blue"><b>End</b></font> <font color="blue"><b>Function</b></font>
<font color="blue"><b>Function</b></font> IsCompound(Term <font color="blue"><b>As</b></font> <font color="blue"><b>Variant</b></font>) <font color="blue"><b>As</b></font> <font color="blue"><b>Boolean</b></font>
<font color="blue"><b>Return</b></font> isPaxArray(Term)
<font color="blue"><b>End</b></font> <font color="blue"><b>Function</b></font>
<font color="blue"><b>Function</b></font> IsPow(Term <font color="blue"><b>As</b></font> <font color="blue"><b>Variant</b></font>) <font color="blue"><b>As</b></font> <font color="blue"><b>Boolean</b></font>
<font color="blue"><b>If</b></font> IsCompound(Term) <font color="blue"><b>Then</b></font>
<font color="blue"><b>If</b></font> Term(0) = OP_POW <font color="blue"><b>Then</b></font>
<font color="blue"><b>Return</b></font> true
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>Return</b></font> false
<font color="blue"><b>End</b></font> <font color="blue"><b>Function</b></font>
<font color="blue"><b>Function</b></font> IsMult(Term <font color="blue"><b>As</b></font> <font color="blue"><b>Variant</b></font>) <font color="blue"><b>As</b></font> <font color="blue"><b>Boolean</b></font>
<font color="blue"><b>If</b></font> IsCompound(Term) <font color="blue"><b>Then</b></font>
<font color="blue"><b>If</b></font> Term(0) = OP_MULT <font color="blue"><b>Then</b></font>
<font color="blue"><b>Return</b></font> true
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>Return</b></font> false
<font color="blue"><b>End</b></font> <font color="blue"><b>Function</b></font>
<font color="blue"><b>Function</b></font> IsAdd(Term <font color="blue"><b>As</b></font> <font color="blue"><b>Variant</b></font>) <font color="blue"><b>As</b></font> <font color="blue"><b>Boolean</b></font>
<font color="blue"><b>If</b></font> IsCompound(Term) <font color="blue"><b>Then</b></font>
<font color="blue"><b>If</b></font> Term(0) = OP_ADD <font color="blue"><b>Then</b></font>
<font color="blue"><b>Return</b></font> true
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>Return</b></font> false
<font color="blue"><b>End</b></font> <font color="blue"><b>Function</b></font>
<font color="blue"><b>Function</b></font> IsSub(Term <font color="blue"><b>As</b></font> <font color="blue"><b>Variant</b></font>) <font color="blue"><b>As</b></font> <font color="blue"><b>Boolean</b></font>
<font color="blue"><b>If</b></font> IsCompound(Term) <font color="blue"><b>Then</b></font>
<font color="blue"><b>If</b></font> Term(0) = OP_SUB <font color="blue"><b>Then</b></font>
<font color="blue"><b>Return</b></font> true
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>Return</b></font> false
<font color="blue"><b>End</b></font> <font color="blue"><b>Function</b></font>
<font color="blue"><b>Function</b></font> IsNeg(Term <font color="blue"><b>As</b></font> <font color="blue"><b>Variant</b></font>) <font color="blue"><b>As</b></font> <font color="blue"><b>Boolean</b></font>
<font color="blue"><b>If</b></font> IsCompound(Term) <font color="blue"><b>Then</b></font>
<font color="blue"><b>If</b></font> Term(0) = OP_UN <font color="blue"><b>Then</b></font>
<font color="blue"><b>Return</b></font> true
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>Return</b></font> false
<font color="blue"><b>End</b></font> <font color="blue"><b>Function</b></font>
<font color="blue"><b>Function</b></font> Diff(A <font color="blue"><b>As</b></font> <font color="blue"><b>Variant</b></font>) <font color="blue"><b>As</b></font> <font color="blue"><b>Variant</b></font>
<font color="blue"><b>Dim</b></font> X1, X2, R1, R2, R3 <font color="blue"><b>As</b></font> <font color="blue"><b>Variant</b></font>
<font color="blue"><b>Dim</b></font> Oper <font color="blue"><b>As</b></font> <font color="blue"><b>String</b></font>
<font color="blue"><b>If</b></font> IsCompound(A) <font color="blue"><b>Then</b></font>
Oper = A(0)
X1 = <font color="blue"><b>AddressOf</b></font> A(1)
<font color="blue"><b>If</b></font> A.length >= 3 <font color="blue"><b>Then</b></font>
X2 = <font color="blue"><b>AddressOf</b></font> A(2)
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>If</b></font> Oper = OP_ADD <font color="blue"><b>Then</b></font>
<font color="blue"><b>Return</b></font> [Oper, Diff(X1), Diff(X2)]
<font color="blue"><b>ElseIf</b></font> Oper = OP_SUB <font color="blue"><b>Then</b></font>
<font color="blue"><b>Return</b></font> [Oper, Diff(X1), Diff(X2)]
<font color="blue"><b>ElseIf</b></font> Oper = OP_UN <font color="blue"><b>Then</b></font>
<font color="blue"><b>Return</b></font> [Oper, Diff(X1)]
<font color="blue"><b>ElseIf</b></font> Oper = OP_MULT <font color="blue"><b>Then</b></font>
<font color="blue"><b>Return</b></font> [OP_ADD, [OP_MULT, Diff(X1), X2], [OP_MULT, X1, Diff(X2)]]
<font color="blue"><b>ElseIf</b></font> Oper = OP_DIV <font color="blue"><b>Then</b></font>
R1 = [OP_DIV, Diff(X1), X2]
R2 = [OP_MULT, X1, Diff(X2)]
R3 = [OP_MULT, X2, X2]
<font color="blue"><b>Return</b></font> [OP_SUB, R1, [OP_DIV, R2, R3]]
<font color="blue"><b>ElseIf</b></font> Oper = OP_LOG <font color="blue"><b>Then</b></font>
<font color="blue"><b>Return</b></font> [OP_DIV, Diff(X1), X1]
<font color="blue"><b>ElseIf</b></font> Oper = OP_POW <font color="blue"><b>Then</b></font>
R1 = [OP_MULT, Diff(X1), [OP_MULT, X2, [OP_POW, X1, [OP_SUB, X2, 1]]]]
R2 = [OP_MULT, Diff(X2), [OP_MULT, [OP_LOG, X1], [OP_POW, X1, X2 ]]]
<font color="blue"><b>Return</b></font> [OP_ADD, R1, R2]
<font color="blue"><b>Else</b></font>
<font color="blue"><b>println</b></font> <font color="Red">"Syntax error !"</font>
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>ElseIf</b></font> IsVar(A) <font color="blue"><b>Then</b></font>
<font color="blue"><b>Return</b></font> 1
<font color="blue"><b>Else</b></font>
<font color="blue"><b>Return</b></font> 0
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>End</b></font> <font color="blue"><b>Function</b></font>
<font color="blue"><b>Function</b></font> InOrder(A <font color="blue"><b>As</b></font> <font color="blue"><b>Variant</b></font>) <font color="blue"><b>As</b></font> <font color="blue"><b>String</b></font>
<font color="blue"><b>Dim</b></font> LL, RR, Oper <font color="blue"><b>As</b></font> <font color="blue"><b>String</b></font>
<font color="blue"><b>If</b></font> IsCompound(A) <font color="blue"><b>Then</b></font>
<font color="blue"><b>If</b></font> A.length = 2 <font color="blue"><b>Then</b></font>
Oper = A(0)
<font color="blue"><b>If</b></font> Oper = OP_UN <font color="blue"><b>Then</b></font>
Oper = OP_SUB
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?