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

2024-05-14 23:18:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着用一种特定的格式来获得矩阵‘X’的特征向量和值。我使用linalg函数来获得本征对,但是预期的输出格式与我的结果不同。例如,ve表示特征值和特征向量。v1 = 1e1 = [1,0,0]v2 = 2e2 = [0,1,0]v3 = 3e3 = [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)

Tags: 函数格式矩阵v3例子v2epv1
1条回答
网友
1楼 · 发布于 2024-05-14 23:18:07

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

好好享受!你知道吗

相关问题 更多 >

    热门问题