<p>对于厄米矩阵和对称矩阵,您应该使用另一个函数:<code>eigh</code>。在</p>
<pre><code>import numpy as np
from numpy import linalg as LA
H = np.array([[ 0., 1., 0., 0., 0., 1.],
[ 1., 0., 1., 0., 0., 0.],
[ 0., 1., 0., 1., 0., 0.],
[ 0., 0., 1., 0., 1., 0.],
[ 0., 0., 0., 1., 0., 1.],
[ 1., 0., 0., 0., 1., 0.]])
w, v = LA.eigh(H)
V = np.zeros((6,6))
for i in range(6):
for j in range(6):
V[i,j] = np.dot(v[:,i], v[:,j])
w
Out[19]: array([-2., -1., -1., 1., 1., 2.])
v
Out[20]:
array([[-0.40824829, -0.57735027, 0. , 0. , 0.57735027,
0.40824829],
[ 0.40824829, 0.28867513, -0.5 , -0.5 , 0.28867513,
0.40824829],
[-0.40824829, 0.28867513, 0.5 , -0.5 , -0.28867513,
0.40824829],
[ 0.40824829, -0.57735027, 0. , 0. , -0.57735027,
0.40824829],
[-0.40824829, 0.28867513, -0.5 , 0.5 , -0.28867513,
0.40824829],
[ 0.40824829, 0.28867513, 0.5 , 0.5 , 0.28867513,
0.40824829]])
V
Out[21]:
array([[ 1.00000000e+00, 8.32667268e-17, 2.77555756e-17,
8.32667268e-17, -2.08166817e-16, 0.00000000e+00],
[ 8.32667268e-17, 1.00000000e+00, 5.55111512e-17,
5.55111512e-17, -2.22044605e-16, -1.11022302e-16],
[ 2.77555756e-17, 5.55111512e-17, 1.00000000e+00,
0.00000000e+00, 2.77555756e-17, 1.11022302e-16],
[ 8.32667268e-17, 5.55111512e-17, 0.00000000e+00,
1.00000000e+00, 8.32667268e-17, 5.55111512e-17],
[ -2.08166817e-16, -2.22044605e-16, 2.77555756e-17,
8.32667268e-17, 1.00000000e+00, 0.00000000e+00],
[ 0.00000000e+00, -1.11022302e-16, 1.11022302e-16,
5.55111512e-17, 0.00000000e+00, 1.00000000e+00]])
</code></pre>