prolog中的代数简化

时间:2012-09-13 00:17:38

标签: 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)

我不明白推导是如何产生的。非常感谢帮助。

1 个答案:

答案 0 :(得分:2)

我猜测你的意思是函数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.. 

我建议你先试试吧,你可以检查deriv.p。基于计算机代数的autodiff在这里deriv.p

再见