2
我正在使用SWI-Prolog,我很新,仍在学习。实际上,这个问题是Why can't my rule solve for X in a simple algebraic equation?的后续行动为什么Prolog/clpq不能解决这个二次方程?
我已经导入clpq。
?- use_module(library(clpq)).
true.
我的方程是6X + 7× - 3 = 0,其中x是从字面上-1.5或也1/3如果使用二次方程。
?- {(6 * X^2) + (7 * X) - 3 = 0}.
{-3+7*X+6*X^2=0}.
?- {(6 * X^2) + (7 * X) - 3 = 0}, R is float(X).
ERROR: is/2: Arguments are not sufficiently instantiated
那么,它的公式稍微改变减法到加法的-3减少,但它并没有解决X
。我的第一步是尝试给它答案,看看它是否接受它。
?- X is -1.5, (6 * X^2) + (7 * X) - 3 =:= 0.
X = -1.5.
嗯......一切看起来都不错。为了完整性,我也运行了二次方程。 (“方程”复数,因为我想有没有±运营商Prolog的。至少,我找不到一个。)
?- A is 6, B is 7, C is -3, X is (-B + sqrt((B^2) - (4 * A * C)))/(2 * A).
A = 6,
B = 7,
C = -3,
X = 0.3333333333333333.
?- A is 6, B is 7, C is -3, X is (-B - sqrt((B^2) - (4 * A * C)))/(2 * A).
A = 6,
B = 7,
C = -3,
X = -1.5.
好了,一切似乎退房。那么,为什么cplq无法解决我的方程?