1
我想在Prolog中乘以兩個向量,但是,如果這些向量包含虛數,我無法讓它工作。到目前爲止我的代碼:如何在Prolog中計算矢量乘積(如果有虛數)?
vector_product([X|Xs],[Y|Ys],OP) :-
inner(Xs,Ys,OP1),
OP is X*Y+OP1.
vector_product([],[],0).
我想在Prolog中乘以兩個向量,但是,如果這些向量包含虛數,我無法讓它工作。到目前爲止我的代碼:如何在Prolog中計算矢量乘積(如果有虛數)?
vector_product([X|Xs],[Y|Ys],OP) :-
inner(Xs,Ys,OP1),
OP is X*Y+OP1.
vector_product([],[],0).
看看這可以幫助你......從Wikipedia
公式:
% (a+bi) + (c+di) = (a+c) + (b+d)i
c_sum((A,B), (C,D), (E,F)) :- E is A+C, F is B+D.
% (a+bi) (c+di) = (ac-bd) + (bc+ad)i
c_mul((A,B), (C,D), (E,F)) :- E is A*C - B*D, F is B*C + A*D.
數字表示爲(Real, Imaginary)
。
vector_product([X|Xs], [Y|Ys], OP) :-
vector_product(Xs, Ys, OP1),
c_mul(X, Y, M),
c_sum(M, OP1, OP).
vector_product([], [], (0,0)).
這確實有助於搞清楚。非常感謝! –
如果您的向量包含虛數,您肯定會爲它們有一個特殊的表示形式,因此您需要一個接收其中兩個數字並返回結果產物的函數。除非Prolog具有處理假想的功能 - 我懷疑 - 你必須自己寫。 – Rubens
好的,讓我試試看! –
不,沒有成功。 –