为什么Scipy和Np Linalg产生不同的特征值来自同一个矩阵?

时间:2016-04-18 03:07:30

标签: python numpy scipy

为什么Scipy和Np Linalg产生不同的特征值来自同一个矩阵?

import numpy as np
newMat = np.array([[3,2],[1,0]])

np.linalg.eigvals(newMat) 
#Eigenvalues: ([ 3.56155281, -0.56155281])


from scipy.linalg import eigh

eigvals, eigvecs = eigh(newMat)
#Eigenvalues: ([-0.30277564,  3.30277564])

1 个答案:

答案 0 :(得分:3)

因为您目前正在制作不同的值:

  • 要求numpy生成矩阵的特征值;
  • 要求scipy生成矩阵的特征值,假设矩阵是hermitian

矩阵埃尔米特,因此scipy结果不正确。 您也可以使用numpy函数从numpy.linalg.eigh生成类似的错误特征值。