Giả sử tôi có số X và tôi muốn giải hệ phương trình, nói Y + Z = X, Z * Y = 1.Giải quyết hệ phương trình trong Prolog
Bây giờ, giải pháp này có Y = 1/Z và Z = (sqrt (X * X-4) + X)/2 hoặc (X- (sqrt (X * X-4)))/2.
Vì vậy, tôi có thể viết trong 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.
này hoạt động.
NHƯNG
nó đòi hỏi rất nhiều công việc sơ bộ từ một phần của tôi, về cơ bản giải quyết nó trước và chỉ hỏi Prolog để đánh giá câu trả lời.
Có cách nào tôi có thể nhận được Z và Y, mà không giải quyết X trước?
tôi không thể chỉ viết những thứ như
solve(X,Y,Z):- X is Y+Z, Z is 1/Y.
vì lỗi instantiation.
http://stackoverflow.com/questions/13690136/im-curious-if-logical-program-can-do-algebra –