Это одна из классических ошибок в Mathematica.
Оболочка экрана MatrixForm
имеет более высокий приоритет, чем оператор Set
(=
).
Предполагая (исходя из выбора тегов), что вы намеревались использовать матричное умножение Dot
(.
) вместо 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)
Edit:
Я забыл упомянуть, если вы введете
c = I a1.a2 // MatrixForm
Затем быстрый взгляд на FullForm
из c
покажет вам, в чем проблема:
In[6]:= FullForm[c]
Out[6]//FullForm= MatrixForm[List[List[1,0],List[0,-1]]]
Вы можете видеть, что у него есть Head[c] == MatrixForm
, и поэтому он не будет хорошо играть с другими матрицами.