7

数値 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.

インスタンス化エラーのため。

4

1 に答える 1