저는 SWI-Prolog를 사용하고 있으며 저는 매우 새롭고 여전히 배우고 있습니다. 실질적으로이 질문은 후속 조치입니다. Why can't my rule solve for X in a simple algebraic equation?Prolog/clpq가이 2 차 방정식을 푸는 이유는 무엇입니까?
clpq를 가져 왔습니다.
?- use_module(library(clpq)).
true.
내 방정식 6X 2 + 7 배이다 - 차 방정식을 사용하는 경우, X가 그대로 -1.5 또는도 1/3 인 3 = 0.
?- {(6 * X^2) + (7 * X) - 3 = 0}.
{-3+7*X+6*X^2=0}.
?- {(6 * X^2) + (7 * X) - 3 = 0}, R is float(X).
ERROR: is/2: Arguments are not sufficiently instantiated
음, 그것은 -3의 첨가 3의 감산을 약간 변경하여 식 감소하지만 X
대한 해결되지 않았다. 나의 첫 걸음은 대답을주고 그것을 받아들이는지 보는 것이다.
?- X is -1.5, (6 * X^2) + (7 * X) - 3 =:= 0.
X = -1.5.
음 ... 모든 것이 잘 어울립니다. 완전을 위해, 나는 또한 2 차 방정식을 실행했다. ("방정식"복수의 프롤로그에는 ± 운영자가 없습니다 같아요 때문이다. 적어도, 내가 하나를 찾을 수 없습니다.)
?- A is 6, B is 7, C is -3, X is (-B + sqrt((B^2) - (4 * A * C)))/(2 * A).
A = 6,
B = 7,
C = -3,
X = 0.3333333333333333.
?- A is 6, B is 7, C is -3, X is (-B - sqrt((B^2) - (4 * A * C)))/(2 * A).
A = 6,
B = 7,
C = -3,
X = -1.5.
이 좋아, 모든 체크 아웃 것 같다. 그래서, 왜 내 방정식을 풀 수 없습니까?