在Mathematica中定义矩阵的半张量积运算

因为Mathematica Notebook支持的符号集(ListingOfNamedCharacters)比较有限, 这里使用比较接近作者所用符号 ” ” 的方式 ” “定义 左半张量积 (类似地,如果必要,可以用接近于原 ” ” 的符号 ” ” 定义 右半张量积), 用 ” ” 定义普通张量积(笛卡尔积).

跟矩阵的维数有关的一种运算; 矩阵乘法也是这样.

Mathematica中 , \[CircleTimes] \[TensorProuct] 用的是形状相似的符号,前者大, 后者小. 识别上是两者有别的,但使用时又十分容易混淆.

ClearAll["Global`*"];
a_\[CircleTimes]b_:=KroneckerProduct[a,b];
SemiTensorProduct[A_,B_]:=Module[{t,n,p,product},
n=Dimensions[A][[2]];
p=Dimensions[B][[1]];
t=LCM[n,p];
product=(A\[CircleTimes]IdentityMatrix[t/n]).(B\[CircleTimes]IdentityMatrix[t/p])//Simplify;
product];
A_\[RightTriangle]B_:=(SemiTensorProduct[A,B])

你可能感兴趣的:(Mathematica)