数値 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 に回答を評価してもらうだけです。
Xを事前に解かずに、ZとYを取得する方法はありますか?
私はちょうどのようなものを書くことはできません
solve(X,Y,Z):- X is Y+Z, Z is 1/Y.
インスタンス化エラーのため。