非交换乘法

时间:2014-10-17 15:25:57

标签: matlab

我试图在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

非常感谢!

1 个答案:

答案 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);