这个问题是由于误解造成的。见下面的答案.
numpy.linalg方法eig()和eigh()似乎为相同的hermitian矩阵返回不同的特征向量。在这里,代码:
import numpy as np
H = [[0.6 , -1j, 0], [1j, 0.4, 0], [0, 0, -1]]
evals, evects = np.linalg.eig(H)
print('\nOutput of the eig function')
for i in range(0,3):
print('evect for eval=',evals[i],'\n',evects[i,0],'\n',evects[i][1],'\n',evects[i][2])
evals, evects = np.linalg.eigh(H)
print('\nOutput of the eigh function')
for i in range(0,3):
print('evect for eval=',evals[i],'\n',evects[i,0],'\n',evects[i][1],'\n',evects[i][2])
发布于 2022-11-24 13:42:34
张贴这篇文章是为了帮助那些可能和我有过同样误解的人:
特征向量是两个函数的生成矩阵的列。故障发生在原始代码中,从特征向量矩阵中提取行而不是列。正确的代码如下。
H = [[0.6 , -1j, 0], [1j, 0.4, 0], [0, 0, -1]]
evals, evects = np.linalg.eig(H)
print('\nOutput of the eig function')
for i in range(0,3):
print('evect for eval=',evals[i],'\n',evects.T[i,0],'\n',evects.T[i][1],'\n',evects.T[i][2])
evals, evects = np.linalg.eigh(H)
print('\nOutput of the eigh function')
for i in range(0,3):
print('evect for eval=',evals[i],'\n',evects.T[i,0],'\n',evects.T[i][1],'\n',evects.T[i][2])
https://stackoverflow.com/questions/74553962
复制相似问题