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

ql3eal8s  于 11个月前  发布在  其他
关注(0)|答案(2)|浏览(158)

为什么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])

字符串

y53ybaqx

y53ybaqx1#

它们产生不同的值,因为您当前处于:

  • 要求numpy生成矩阵的特征值;
  • 要求scipy生成矩阵 * 的特征值,假设矩阵是厄米特矩阵 *。

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

6mzjoqzu

6mzjoqzu2#

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

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

from scipy.linalg import eig
# eigvals, eigvecs = normalized left eigenvector if left=True. normalized right eigenvector if right=True.
print( np.real_if_close(eig(newMat)[0]))
#Eigenvalues: ([ 3.56155281 -0.56155281])

字符串

相关问题