繁体   English   中英

在序言中表达方程式

[英]Expressing an equation in prolog

事实给出了合取和取反表。 写一个谓词:“ AX ^ 2 + BX + C = 0的解是X”。 所有值均为布尔值,1-真,0-假。 事实表是这样的:

c(true, true, true).
c(true, false, false).
c(false, true, false).
c(false, false, false).
n(true, false).
n(false, true).

我不知道该怎么做,从哪里开始。

基本上,我使用给定的事实写出了一个析取谓词,并使用合取和析取来重写该方程。

conjunction(true, true, true).
conjunction(true, false, false).
conjunction(false, true, false).
conjunction(false, false, false).
negation(true, false).
negation(false, true).

disjunction(Bool, Bool2, Result):-negation(Bool, NBool),
                                  negation(Bool2, NBool2),
                                  conjunction(NBool, NBool2, Conj),
                                  negation(Conj, Result).

%X^2 is X*X in this case X^X whis is always equal to X.
equation(A,B,C,X):-conjunction(A, X, AtimesX2),               %A*(X*X)
                   conjunction(B, X, BtimesX),                %B*X
                   disjunction(AtimesX2, BtimesX, AX2plusBX), %A*X^2+B*X
                   disjunction(AX2plusBX, C, Res),            %A*X^2+B*X+C
                   Res = false.                               %Checking if
                                                              %A*X^2+B*X+C is equal to 0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM