【发布时间】:2021-04-03 09:09:47
【问题描述】:
我正在尝试找到以符号方式计算 Javascript 中类型化数学函数的导数的最佳方法/算法。每个方程只有一个变量。 我从一个类型化的表达式开始,然后使用 Dijkstra 的 shunting-yard algorithm 将中缀方程转换为后缀方程,然后将其转换为 RPN(反向波兰表示法)。我的下一个想法是使用它来创建一个表达式树,最终看起来像这样:
Equation: 25x^2 + 61x + 3
RPN: 25 x 2 ^ * 61 x * + 3 +
我查看了“已解决”的表达式树应该是什么样子,以了解需要做什么:
Derivative (without simplification): x^(2-1)*2*25+61
我在想我可以使用 postorder traversal 递归地应用微分规则(乘积、商、总和、差等),并根据运算符替换“节点”。
但是,在查看导数的表达式树之后,我意识到我不能轻易地将诸如乘积规则之类的东西应用于仍然有子节点的节点(即this)
所以我的主要问题是:是否有任何已知的类似于 shutting-yard 的算法可以有效地以编程方式计算符号导数?
【问题讨论】:
-
您的问题可能更适合cs.stackexchange.com
标签: javascript symbolic-math derivative