Załóżmy mam numer X i życzę, aby rozwiązać układ równań, powiedzmy Y + Z = X, Z * Y = 1.Rozwiązując układ równań w Prologu
Teraz ma to rozwiązania Y = 1/Z i Z = (sqrt (X * X-4) + X)/2 lub (X- (sqrt (X * X-4)))/2.
Więc mogę napisać w Prologu:
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.
To działa.
ALE
to wymaga wiele wstępnych prac z mojej strony, zasadniczo rozwiązywania go wcześniej i zadaje Prolog ocenić odpowiedź.
Czy jest jakiś sposób, aby uzyskać Z i Y, bez uprzedniego rozwiązania X?
Nie mogę po prostu pisać takie rzeczy
solve(X,Y,Z):- X is Y+Z, Z is 1/Y.
powodu błędu konkretyzacji.
http://stackoverflow.com/questions/13690136/im-curious-if-logical-program-can-do-algebra –