prolog中的代数化简

prolog中的代数化简,prolog,Prolog,我在读代数表达式的prolog简化,有些部分我不懂 这些是基本的简化 x+0, x-0, 0+x, 0-x --> x. x*1, x/1, 1*x --> x. -1*x, x*(-1), x/(-1) --> –x. x+(-x) --> x–x. 所以给出了一个表达式 (x+4)*(2-x) 我如何推导 (1+0)*(2-x)+(x+4)*(0-1) ? 我不明白推导是怎么来的。非常感谢您的帮

我在读代数表达式的prolog简化,有些部分我不懂

这些是基本的简化

  x+0, x-0, 0+x, 0-x   --> x.
  x*1, x/1, 1*x        --> x.
  -1*x, x*(-1), x/(-1) --> –x.
  x+(-x)               --> x–x.
所以给出了一个表达式

 (x+4)*(2-x)
我如何推导

  (1+0)*(2-x)+(x+4)*(0-1)
?


我不明白推导是怎么来的。非常感谢您的帮助。

我猜您所说的求导是指函数f(x)=(x+4)*(2-x)的数学求导。这是一个非常著名的古老而不太难的计算机代数问题,解决方案最初是用lisp编写的

Prolog版本是直截了当的。您可以实现派生规则,例如:

d/dx (f + g) = d/dx f + d/dx g  
d/dx (f * g) = d/dx f * g + d/dx g * f
etc.. 
我建议你自己先试试,比如说你检查一下。这里有一个基于计算机代数的autodiff


再见

@j4nbur53此链接似乎再次断开。修复了该链接,它现在是GitHub链接。