Vector 在Prolog中,如果有虚数,如何计算向量积?

Vector 在Prolog中,如果有虚数,如何计算向量积?,vector,prolog,Vector,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).

看看这能不能帮你

公式来自:

数字表示为实的、虚的


如果向量包含虚数,那么它们肯定有一个特殊的表示形式,因此,需要一个函数来接收其中两个数字并返回结果乘积。除非Prolog有内置函数来处理想象(我怀疑),否则你必须自己写。你怎么写复数?我不需要复数,只需要虚数。我在Prolog中把它们写成了一个不同的函子。这实际上帮助我们弄清楚了。谢谢!
% (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.
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)).