python - 为什么这两种查找特征向量的方法在 python 中不同?

标签 python numpy matrix sympy eigenvector

import numpy as np
#first way
A = np.array([[1, 0, 1], [-2, 1, 0]])
print(A)
B = A@A.transpose()
print(B)
eig_val, eig_vec = np.linalg.eig(B)
print(eig_vec)

#second way
from sympy import * 
G = Matrix([[2,-2], [-2,5]])
print(G.eigenvects())

为什么这两种方法在寻找特征向量的目标相同时会给出不同的结果?

最佳答案

已经提到,eignevector 仅在标量倍数内是唯一的。这是一个数学事实。要深入了解您正在使用的方法的实现,numpy.linalg.eig返回归一化特征向量(即向量的范数为 1),而 sympyeigenvects() 不会对向量进行归一化。

在某种意义上,归一化向量之所以唯一,正是因为它们具有单位范数。他们可以定义单位特征方向(几何),就像坐标几何中的单位向量一样。 (知道并不重要)

关于python - 为什么这两种查找特征向量的方法在 python 中不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63984421/

相关文章:

python - python中的矩阵文件到字典

c++ - 如何在不使用 C++ OpenGL SuperBible 着色器的情况下使用变换矩阵?

python - Django 休息框架 {"detail":"Authentication credentials were not provided."}

python - 以科学计数法将带有科学计数法的文本文件读取到 Pandas 数据框

python - 在numpy中的一个函数中计算均值或中值

python - 如何使用 np.save 将文件保存在 python 的不同目录中?

matlab - 计算矩阵的每条对角线之和

python - Keras2 ImageDataGenerator 还是 TensorFlow tf.data?

python - 为什么\b\w+\b 不匹配一个词?

python - 如果使用生成器表达式,为什么 Numpy.all() 和 any() 会给出错误的结果?