gpt4 book ai didi

python - Numpy 计算奇怪的特征向量

转载 作者:行者123 更新时间:2023-11-28 22:33:54 26 4
gpt4 key购买 nike

我在使用 numpy 计算矩阵的特征向量时得到了一些奇怪的结果。然后我决定使用 Matlab,一切都很好。

L = np.array(([2,-1,-1],[-1,2,-1],[-1,-1,2]))
Lam,U = np.linalg.eig(L) #compute eigenvalues and vectors
#sort by ascending eigenvalues
I = [i[0] for i in sorted(zip(xrange(len(Lam)),Lam),key=lambda x: x[1])]
Lam = Lam[I]
U = U[:,I]
print U.dot(U.T)

>> [[ 1.09 -0.24 0.15]
[-0.24 1.15 0.09]
[ 0.15 0.09 0.76]]

结果很奇怪,因为我期待 U.dot(U.T) = I。在 MATLAB 中:

L = [2,-1,-1;-1,2,-1;-1,-1,2]
[V,D] = eig(L)
V*V'
ans =
1.0000 0.0000 -0.0000
0.0000 1.0000 0.0000
0.0000 0.0000 1.0000

顺便说一下你:

[[-0.58  0.82  0.29]
[-0.58 -0.41 -0.81]
[-0.58 -0.41 0.51]]

和 V:

0.5774    0.7634    0.2895
0.5774 -0.6325 0.5164
0.5774 -0.1310 -0.8059

这是怎么回事?

最佳答案

虽然对称矩阵的特征向量确实存在正交基,但不能保证 Numpy 会返回该基。它将返回特征向量的任何基,这种方法没有任何问题。

您正在查看的矩阵有两个特征空间:特征值 3 的二维特征空间和一维核。对于内核,特征向量取决于一个常数因子。然而,对于二维空间,您可以自由选择基,但不能保证它是正交的。

要获得对称矩阵特征向量的标准正交基,您可以使用 numpy.linalg.eigh() .

关于python - Numpy 计算奇怪的特征向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39449091/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com