python 中的特征值和向量计算错误

Eigen values and vectors calculation error in python

我正在尝试以特定格式获取任何矩阵 'X' 的特征向量和值。我使用 linalg 函数来获取特征对,但预期的输出格式与我的结果不同。例如,ve 表示特征值和特征向量。 v1 = 1, e1 = [1,0,0], v2 = 2, e2 = [0,1,0], v3 = 3, e3 = [0,0,1].

所以在这个例子中,矩阵X的特征对应该是Ep =[(1, [1,0,0]) (2, [0,1,0]), (3, [0,0,1])]。 这里P[0]表示第一个特征对(1,[1,0,0]),其中特征值为1,特征向量为[1,0,0].

你能帮我进一步编码这部分吗?

e,v = np.linalg.eigh(X)

np.linalg.eigh

首先,应该注意 np.linalg.eigh 计算厄米特矩阵的特征值——这不适用于所有矩阵。如果你想计算任何矩阵的特征值 X 你应该切换到 np.linalg.eig:

import numpy as np

L = np.diag([1,2,3])
V = np.vstack(([1,0,0],[0,1,0],[0,0,1]))

# X = V@L@V.T (eigendecomposition)
X = V@L@V.T

w,v = np.linalg.eig(X)
assert (np.diag(w) == L).all()
assert (v == V).all()

特征对

要构建特征对,只需使用一些列表理解:

import numpy as np

# X = V@L@V.T (eigendecomposition)
X = np.diag([1,2,3])

w,v = np.linalg.eig(X)

Ep = [(val,vec.tolist()) for val,vec in zip(w,v)]

尽情享受吧!