4

我测试了 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.]])

返回的矩阵不应该和被分解的原始矩阵一样吗?

4

1 回答 1

7

您正在使用用于对称/厄米特矩阵的函数 linalg.eigh,您的矩阵不是对称的。

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.]]

正如预期的那样。

于 2018-05-23T13:03:06.203 回答