algorithm - 递归微分基本表达式

标签 algorithm math calculus mathematical-expressions

如果我有一个表达式,例如 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/

相关文章:

c++ - 交换某些字符后生成的给定子字符串的最大数量的字符串?

algorithm - 查找覆盖整组间隔的最小点数

python - 在没有任何内置 e​​val 函数或外部库的情况下用 python 解决数学问题

math - 帮助构建一个 OBB,尝试用 3 个向量表示一个矩阵

Julia 符号微分

math - 求导数的算法

python - 机器学习中的激活函数

algorithm - 二进制字符串的线性算法

java - 用于处理列表的所有连续子序列的简单代码的算法复杂度 : n^2 or n^3?

java - 以字符串形式给出的两个二进制数的乘法