【发布时间】:2017-12-15 20:05:04
【问题描述】:
我有两个 sympy 矩阵,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)
我做错了什么?这是预期的行为吗?
【问题讨论】:
标签: python matrix sympy dot-product