如果我有一个表达式,例如 x * x * x,存储在如下数据结构中:mult(var x, mult(var x, var x))
我想实现一个函数来递归地微分方程(所以到 3 * x * x 或 x*x + (x + x)*x 等,不需要简化),有什么建议吗?
最佳答案
您会找到匹配的区分规则并应用它。例如,在这种情况下,我们有规则(其中 A 和 B 代表整个子表达式)
diff(mult(A, B)) -> add(mult(diff(A),B), mult(A, diff(B)))
这条规则的左边与我们设置时的公式匹配
A = var x
B = mult(var x, var x)
所以我们可以将这个规则应用到公式中得到
diff(mult(var x, mult(var x, var x))) ->
add(mult(diff(var x),mult(var x, var x)), mult(var x, diff(mult(var x, var x))))
现在对剩余的 diff 操作递归执行相同的操作。
您在这里需要的其他规则是:
diff(var x) -> 1
关于algorithm - 递归微分基本表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42711249/