我试图在n维欧几里德向量空间中实现两个向量的几何乘积的公理。
即允许用户输入尺寸数,例如3
生成e1,e2,e3作为符号
允许用户输入两个向量作为n大小向量的函数,例如a = a1e1 + a2e2 + a3e3; B = B1E1 + b2e2 + b3e3
其中a1,a2 ......和b1,b2 ......是标量
展开两个向量a和b
(a1e1 + a2e2 + a3e3)(B1E1 + b2e2 + b3e3)
直到现在,这一切都适合我。
从这一点来说,我要求扩展操作是非交换的,即e2e1 = / = e1e2
有没有办法可以做到这一点。
接下来,如果读者感觉很亲切,有没有办法实现几何代数公理,例如e1e1 = e2e2 = enen = 1
和e2e1 = -e1e2 - > eiej = -ejei
非常感谢!
答案 0 :(得分:0)
你喜欢的是"乘法"枚举所有对(T1,T2),其中T1是来自第一个表达式的术语,T2是来自第二个术语的术语。
function C = pairwise_mul(S1, S2)
% ' S1, S2 are cell arrays '
N1 = numel(S1);
N2 = numel(S2);
C = cell(1, N1*N2);
for k1 = 1:N1
for k2 = 1:N2
k = k2 + N1*(k1-1);
C{k} = [S1{k1} S2{k2}];
end;
end;
end
您可以这样调用它:
expr1 = {'a1', 'b1', 'c1'};
expr2 = {'a2', 'b2' };
result = pairwise_mul(expr1, expr2);