表达式树的单变量符号微分

问题描述

我正在尝试寻找最佳方法/算法,以符号方式计算 Javascript 中类型化数学函数的导数。每个方程将只有一个变量。 我从一个类型表达式开始,然后使用 Dijkstra 的 RPN 将中缀方程转换为后缀方程,然后将其转换为 shunting-yard algorithm(反向波兰符号)。我的下一个想法是使用它来创建一个表达式树,它最终看起来像这样:

Equation: 25x^2 + 61x + 3

RPN: 25 x 2 ^ * 61 x * + 3 +

表达式树:

Expression tree

我查看了“已解决”表达式树应该是什么样子,以了解需要做什么:

Solved tree

Derivative (without simplification): x^(2-1)*2*25+61

我想我可以使用 postorder traversal 递归应用微分规则(乘积、商、总和、差等)并根据运算符替换“节点”。

然而,在查看导数的表达式树后,我意识到我不能轻易地将乘积规则之类的东西应用到仍然有孩子的节点(即this

所以我的主要问题是:是否有任何已知的算法类似于调车场以编程方式有效地计算符号导数?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)