Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Prolog表达式简化_Prolog - Fatal编程技术网

Prolog表达式简化

Prolog表达式简化,prolog,Prolog,我不熟悉Prolog,必须为微积分类编写一个符号微分工具。我的工作方式如下: ?- diff(ln(x^3),D). D = 1*3*x^(3-1) / x^3 ; 以及: 但是,我更愿意将其作为: D = 3x^(-2) / x^3; 以及: 有没有一个简单的方法来简化这些数学表达式。谢谢 您可以使用goal\u expansion/2(在编译时): 跟随 例如: goal_expansion(X,Y):-simplify(X,Y). 您需要编写一些简化谓词。例如,simp(1*X,X)

我不熟悉Prolog,必须为微积分类编写一个符号微分工具。我的工作方式如下:

?- diff(ln(x^3),D).
D = 1*3*x^(3-1) / x^3 ;
以及:

但是,我更愿意将其作为:

D = 3x^(-2) / x^3;
以及:


有没有一个简单的方法来简化这些数学表达式。谢谢

您可以使用
goal\u expansion
/2(在编译时):

跟随

例如:

goal_expansion(X,Y):-simplify(X,Y).

您需要编写一些简化谓词。例如,
simp(1*X,X)
。如果
X
是一个数字,则可以使用
number(X)
成功。所以
simp(X*Y,Z):-number(X),number(Y),Z是X*Y。
等等。如果你愿意,我有一些工作代码(SIMPSV.PRO,Sergio Vaghi,1987)。我想你们也可以在网上查到它。感兴趣的:感兴趣的:GitHub-感兴趣的:Leon Sterling和Ehud Shapiro
D = 4x^(3);
goal_expansion(+, -). 
goal_expansion(X,Y):-simplify(X,Y).