因为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])