特征分解让我在麻木中感到疑惑



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

返回的矩阵不应该与分解的原始矩阵相同吗?

您正在使用用于对称/埃尔米特矩阵的函数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.]]

不出所料。

相关内容

  • 没有找到相关文章

最新更新