特征分解使我在numpy中感到奇怪

时间:2018-05-23 11:22:12

标签: numpy eigenvalue eigenvector matrix-decomposition

我测试了A = Q * Lambda * Q_inverse的定理,其中Q是具有特征向量的矩阵,而Lambda是具有对角特征值的对角矩阵。

我的代码如下:

import numpy as np
from numpy import linalg as lg

Eigenvalues, Eigenvectors = lg.eigh(np.array([

    [1, 3],

    [2, 5]


]))

Lambda = np.diag(Eigenvalues)


Eigenvectors @ Lambda @ lg.inv(Eigenvectors)

返回:

array([[ 1.,  2.],
       [ 2.,  5.]])

返回的Matrix是否应该与已分解的原始Matrix相同?

您的建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

您正在使用linalg.eigh函数,该函数用于对称/ Hermitian矩阵,您的矩阵不对称。

https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.linalg.eigh.html

您需要使用linalg.eig,您将获得正确的结果:

https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.eig.html

import numpy as np
from numpy import linalg as lg

Eigenvalues, Eigenvectors = lg.eig(np.array([

[1, 3],

[2, 5]


]))

Lambda = np.diag(Eigenvalues)


Eigenvectors @ Lambda @ lg.inv(Eigenvectors)

返回

[[ 1.  3.]
 [ 2.  5.]]

正如所料。