У меня есть две симметричные матрицы, U
и B
:
>> U
<< Matrix([
[1.0, 0, 0, 0],
[ 0, 1.0, 0, 0],
[ 0, 0, 1.0, 0],
[ 0, 0, 0, 1.0]])
>> B
<< Matrix([
[sqrt(2)/2, 0.5*sqrt(2)*I, 0, 0],
[ 0, 0, 0.5*sqrt(2)*I, sqrt(2)/2],
[ 0, 0, 0.5*sqrt(2)*I, -sqrt(2)/2],
[sqrt(2)/2, -0.5*sqrt(2)*I, 0, 0]])
Применение к ним скалярного произведения приводит к списку вместо матрицы 4x4:
>> U.dot(B)
<< [0.5*sqrt(2),
0,
0,
0.5*sqrt(2),
0.5*sqrt(2)*I,
0,
0,
-0.5*sqrt(2)*I,
0,
0.5*sqrt(2)*I,
0.5*sqrt(2)*I,
0,
0,
0.5*sqrt(2),
-0.5*sqrt(2),
0]
Напротив, numpy выглядит правильно:
>> numpy.dot(sympy.matrix2numpy(U),sympy.matrix2numpy(B))
<< array([[0.5*sqrt(2), 0.5*sqrt(2)*I, 0, 0],
[0, 0, 0.5*sqrt(2)*I, 0.5*sqrt(2)],
[0, 0, 0.5*sqrt(2)*I, -0.5*sqrt(2)],
[0.5*sqrt(2), -0.5*sqrt(2)*I, 0, 0]], dtype=object)
Что я делаю не так? Это ожидаемое поведение?