numpy特征向量的奇怪行为:bug还是no bug
NumPy的特征向量解不同于Wolfram Alpha和我的手工计算 导入numpy.linalg >>>将numpy作为np导入 >>>numpy.linalg.eig(np.array([[-2,1],[2,-1]])) (数组([-3,0.]),数组([-0.70710678,-0.4472136], [ 0.70710678, -0.89442719]])) Wolfram Alpha和我个人的计算给出了特征向量(-1,1)和(2,1)。然而,NumPy解决方案有所不同 然而,NumPy计算的特征值得到了Wolfram Alpha和我个人计算的证实 那么,这是NumPy中的一个bug还是我对数学的理解太简单了?类似的线程在特征向量的舍入/缩放方面看到了主要差异,但解决方案之间的偏差将是巨大的numpy特征向量的奇怪行为:bug还是no bug,numpy,eigenvector,Numpy,Eigenvector,NumPy的特征向量解不同于Wolfram Alpha和我的手工计算 导入numpy.linalg >>>将numpy作为np导入 >>>numpy.linalg.eig(np.array([[-2,1],[2,-1]])) (数组([-3,0.]),数组([-0.70710678,-0.4472136], [ 0.70710678, -0.89442719]])) Wolfram Alpha和我个人的计算给出了特征向量(-1,1)和(2,1)。然而,NumPy解决方案有所不同 然而,NumP
关于
numpy.linalg.eig
标准化特征向量,结果为列向量
eig_vectors = np.linalg.eig(np.array([[-2, 1], [2, -1]]))[1]
vec_1 = eig_vectors[:,0]
vec_2 = eig_vectors[:,1]
现在这两个向量只是你计算的向量的标准化版本
print(vec_1 * np.sqrt(2)) # where root 2 is the magnitude of [-1, 1]
print(vec_1 * np.sqrt(5)) # where root 5 is the magnitude of [2, 1]
因此,这两组计算的结果是等价的,只是Numpy喜欢对结果进行归一化。
Numpy.linalg.eig
对特征向量进行归一化,结果为列向量
eig_vectors = np.linalg.eig(np.array([[-2, 1], [2, -1]]))[1]
vec_1 = eig_vectors[:,0]
vec_2 = eig_vectors[:,1]
现在这两个向量只是你计算的向量的标准化版本
print(vec_1 * np.sqrt(2)) # where root 2 is the magnitude of [-1, 1]
print(vec_1 * np.sqrt(5)) # where root 5 is the magnitude of [2, 1]
所以底线是,两组计算是等价的,只是Numpy喜欢将结果归一化。输入数组的秩是一,输入数组的秩是一