私は SWI-Prolog を使用していますが、非常に新しく、まだ学習中です。実際には、この質問は、単純な代数方程式で私のルールが X について解けないのはなぜですか?のフォローアップです。
clpq をインポートしました。
?- use_module(library(clpq)).
true.
私の方程式は6x 2 + 7x - 3 = 0で、x は文字通り-1.5または2 次方程式を使用する場合は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 の減算を -3の加算に変更することで方程式をわずかに減らしましたが、 については解けませんでした。私の最初のステップは、答えを与えて、それが受け入れられるかどうかを確認することでした.X
?- X is -1.5, (6 * X ^ 2) + (7 * X) - 3 =:= 0.
X = -1.5.
うーん... すべてが良さそうです。完全を期すために、二次方程式も実行しました。(「Equations」の複数形は、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 が私の方程式を解けなかったのでしょうか?