Si supponga Ho un certo numero X e mi auguro di risolvere sistemi di equazioni, dicono Y + Z = X, Z * Y = 1.Risolvere un sistema di equazioni in Prolog
Ora, questo non ha soluzioni Y = 1/Z e Z = (sqrt (X * X-4) + X)/2 o (X- (sqrt (X * X-4)))/2.
Quindi posso scrivere in 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.
Questo funziona.
MA
richiede un sacco di lavoro preliminare da parte mia, in sostanza, di risolvere in anticipo e solo chiedendo Prolog per valutare la risposta.
C'è un modo per ottenere Z e Y, senza prima risolvere X?
Non posso scrivere cose del genere
solve(X,Y,Z):- X is Y+Z, Z is 1/Y.
causa di un errore di un'istanza.
http://stackoverflow.com/questions/13690136/im-curious-if-logical-program-can-do-algebra –