在np.linalg.eig中以什么顺序重复的本征值?

时间:2018-08-08 13:25:45

标签: python numpy

文档说,特征值根据其多重性重复,并且不排序。当我打印w时,它会给我[5,3,5,1]。为什么特征值按此顺序出现。特征向量的存储顺序是什么?和特征值一样吗?

B = np.array([[5,-2,6,-1],[0,3,-8,0],[0,0,5,4],[0,0,0,1]])
print(B)
print(B.shape)
w, v= np.linalg.eig(B)
print("eigenvalues are: ", w)

2 个答案:

答案 0 :(得分:0)

是的,特征向量的顺序相同,您可以通过在代码中仅添加两行来验证这一点

import numpy as np
B=np.array([[5,-2,6,-1],[0,3,-8,0],[0,0,5,4],[0,0,0,1]])
print(B)
print(B.shape)
w,v= np.linalg.eig(B)
print("eigenvalues are: ", w)

for i in range(4):
    print (np.dot((B-w[i]*np.eye(4)),v[:,i]))

就多重性概念而言,单个特征值可以与多个线性独立的特征向量相关联。您可以阅读有关此here

的更多信息

答案 1 :(得分:0)

documentation提供了有关特征向量的以下信息。

  

归一化(单位为“长度”)特征向量,使得v [:,i]列是对应于特征值w [i]的特征向量。

换句话说,特征值的顺序原则上是任意的。但是无论特征值的顺序如何,该顺序都将与特征向量匹配。

您可以通过计算Bv的列向量的应用来验证特征值和特征向量顺序是否匹配。在代码中,

for i in range(B.shape[0]):
    # Apply B to the eigenvectors
    scaled = np.dot(B, v[:, i])
    # Check that applying B only applies a scaling to the eigenvector
    np.testing.assert_allclose(scaled, w[i] * v[:, i])