Предположим, у меня есть число X и я хочу, чтобы решить систему уравнений, скажем, Y + Z = X, Z * Y = 1.Решая систему уравнений в Прологе
Теперь это имеет решения Y = 1/Z и Z = (sqrt (X * X-4) + X)/2 или (X- (sqrt (X * X-4)))/2.
Так что я могу писать в Прологе:
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.
Это работает.
НО
это требует много предварительной работы с моей стороны, по существу, решая его заранее и просто прошу Пролог оценить ответ.
Есть ли способ получить Z и Y, не решив X заранее?
Я не могу просто написать такие вещи, как
solve(X,Y,Z):- X is Y+Z, Z is 1/Y.
из-за ошибки экземпляра.
http://stackoverflow.com/questions/13690136/im-curious-if-logical-program-can-do-algebra –