假设我有一个数字X,我想要解一组方程,比如Y+Z=X,Z*Y = 1。
现在,解Y=1/Z和Z= (sqrt(X*X-4)+X)/2或(X-(sqrt(X*X-4)/2。
所以我可以用Prolog写:
solve(X,Y,Z):- Y is (sqrt(X*X-4)+X)/2, Z is 1/Y.
solve(X,Y,Z):- Y is (X-(sqrt(X*X-4)))/2,Z is 1/Y.这是可行的。
但
这需要我做大量的前期工作,基本上是事先解决它,然后让Prolog来评估答案。
有没有什么方法可以让我得到Z和Y,而不需要事先求解X?
我不能只写像这样的东西
solve(X,Y,Z):- X is Y+Z, Z is 1/Y.因为实例化错误。
发布于 2013-04-13 01:24:37
我认为你需要一个CAS,来象征性地解决这个系统,就像你“手工”做的那样。这样的软件既不容易找到,也不容易构建。
如果实用的方法可以为您做到这一点,库(clprq)可以提供帮助:
:- [library(clpr)].
solve(X,Y,Z) :- {Y+Z=X, Z*Y=1}.收益率
?- solve(3,Y,Z).
{Z=3.0-Y, -1.0+Z*Y=0.0},
{-1.0+Z*Y=0.0},
{-1.0+Z*Y=0.0}.这有意义吗?
https://stackoverflow.com/questions/15977010
复制相似问题