三个矩阵的乘积最终得到一个奇数块矩阵?

| 在下面的Mathematica代码中
a1 = {{0, -I}, {I, 0}}
a2 = {{0, 1}, {1, 0}}
a3 = {{1, 0}, {0, -1}}
c = I*a1*a2 // MatrixForm
d = c*a3 // MatrixForm
d的显示形式为一个二乘二的矩阵,其中1,1和2,2元素本身就是2x2矩阵,而我希望它是一个普通的标量2x2矩阵?     
已邀请:
        
use () to protect expression from MatrixFrom which is a wrapper.
use \'.\' for matrix multiplication. Not \'*\'

a1 = {{0, -I}, {I, 0}}
a2 = {{0, 1}, {1, 0}}
a3 = {{1, 0}, {0, -1}}
(c = I a1.a2) // MatrixForm
(d = c.a3) // MatrixForm
这是我对d的输出:
(1  0
 0  1)
    
        这是Mathematica中的经典陷阱之一。
MatrixForm
显示包装程序的优先级高于the4ѭ运算符(
=
)。 假设(基于标签选择)您打算使用矩阵乘法matrix6ѭ(
.
)而不是Times(
*
),我会写
a1 = {{0, -I}, {I, 0}}
a2 = {{0, 1}, {1, 0}}
a3 = {{1, 0}, {0, -1}}
(c = I a1.a2) // MatrixForm
(d = c.a3) // MatrixForm
分别返回
c
d
(1  0
 0  -1)

(1  0
 0  1)
编辑: 我忘了提,如果你输入
c = I a1.a2 // MatrixForm
然后快速浏览ѭ10中的
FullForm
会发现问题所在:
In[6]:= FullForm[c]
Out[6]//FullForm= MatrixForm[List[List[1,0],List[0,-1]]]
您会看到它具有
Head[c] == MatrixForm
,因此它不能与其他矩阵配合使用。     

要回复问题请先登录注册