javascript – 表达式的单变量导数(符号)

我使用JavaScript编写了一个HTML代码来区分单个变量函数.
我的代码是here.我使用Mathjax打印输出.但产生的产出并未简化.例如,sin(x)/ cos(x)的导数产生为

((((cos(x))*(cos(x)))-((sin(x))*(-(sin(x)))))/((cos(x))^2))

这可以简化为

(sin(x)^2+cos(x)^2)/cos(x)^2

我用Dijkstra的调车码算法构造了表达式树.然后递归地构造了导数的表达式树.但我对简化有问题.

任何人都可以帮助简化输出产生的?我的知识不仅仅是基本的数据结构.

最佳答案
我只能想到代数规则的实现.

>极端难以编码
>甚至更难调试

1.创建简化方程列表

>喜欢:

cos^2(x)+sin^2(x)=1
...

>这很容易
>但要注意不要在这里添加循环方程(所以它会循环而没有结束)
>或不简化输出的规则

2.创建替代方法列表

3.通过等式

>测试所有简化规则
>如果它是可应用的,那么应用它(难以编码)
>如果没有找到,那么尝试替换(极端难以正确编码)
>如果仍然没有找到,那么停止

4.所有等式的表示都是第3点

>方程式可以用更多方式写出来
>乘法
> exponentiol
>分数等…
>您需要测试所有变化

转载注明原文:javascript – 表达式的单变量导数(符号) - 代码日志