Python 关于使用NumPy计算特征向量的澄清
我正在复习一些线性代数,并正在研究Python中的一些实现。我正在解决一个关于寻找矩阵a的特征向量的问题 当我手工解决这个问题时,我得到特征值3和-3,其中3的重数为2。我的特征向量是[[1/3],[1],[[1],[1],[0],[[-1],[0],[1]] 尝试在NumPy中实现:Python 关于使用NumPy计算特征向量的澄清,python,numpy,matrix,linear-algebra,eigenvector,Python,Numpy,Matrix,Linear Algebra,Eigenvector,我正在复习一些线性代数,并正在研究Python中的一些实现。我正在解决一个关于寻找矩阵a的特征向量的问题 当我手工解决这个问题时,我得到特征值3和-3,其中3的重数为2。我的特征向量是[[1/3],[1],[[1],[1],[0],[[-1],[0],[1]] 尝试在NumPy中实现: import numpy as np A = [[ 1, 2, -2], [-2, 5, -2], [-6, 6, -3]] np.linalg.eig(A) 它给出了输出 (array
import numpy as np
A = [[ 1, 2, -2],
[-2, 5, -2],
[-6, 6, -3]]
np.linalg.eig(A)
它给出了输出
(array([ 3., -3., 3.]), array([[ 0.53452248, -0.30151134, -0.05332571],
[-0.26726124, -0.30151134, -0.73225996],
[-0.80178373, -0.90453403, -0.67893425]]))
特征值是我所期望的,但是特征向量让我困惑。从我所读的内容中,我了解到它们是列,它们是标准化的,即norme1=1。此外,从数值上看,它们似乎是正确的,因为它们满足Ax=lambda*x方程
此外,当我在Symphy中实现时,我得到了预期的结果
from sympy.matrices import Matrix, eye, zeros, ones, diag, GramSchmidt
A = Matrix([[ 1, 2, -2],
[-2, 5, -2],
[-6, 6, -3]])
A.eigenvects()
输出:
[(-3, 1, [Matrix([
[1/3],
[1/3],
[ 1]])]), (3, 2, [Matrix([
[1],
[1],
[0]]), Matrix([
[-1],
[ 0],
[ 1]])])]
有谁能解释一下NumPy的不同之处以及发生了什么?它是数值求解的吗?这些不是真正的特征向量,但它们似乎在某种意义上满足一定数值精度的条件?多谢各位 这里,特征值3的几何重数为2,矩阵A-3i的秩为1,并且有无数种方法可以选择该特征空间的两个基向量特征向量 在A的情况下,numpy.linalg.eig将返回行特征向量数组,形成整个空间的一组正交基,并且在计算实践中,特征向量在每列中的排列和方向符号上是唯一的。在这里的非正常情况下,没有唯一的选择,只有将整个空间唯一划分为与每个特征值相关的子特征空间
可以考虑特征值3的输出特征向量,即返回的特征向量阵列中的零和第二列,满足满足本征值方程的任意一组基。 该实现应该是LAPACK API的底层函数的包装器。除了匹配以共轭对形式排列的特征值顺序外,对输出特征向量的唯一约束似乎是
对每个特征向量进行缩放,使欧几里德范数为1,最大分量为实数所以仍然有很多任意性,我不会指望某个特定的输出。这里,特征值3的几何重数为2,矩阵a-3i的秩为1,并且有无限多的方法来选择该特征空间的两个基向量特征向量 在A的情况下,numpy.linalg.eig将返回行特征向量数组,形成整个空间的一组正交基,并且在计算实践中,特征向量在每列中的排列和方向符号上是唯一的。在这里的非正常情况下,没有唯一的选择,只有将整个空间唯一划分为与每个特征值相关的子特征空间
可以考虑特征值3的输出特征向量,即返回的特征向量阵列中的零和第二列,满足满足本征值方程的任意一组基。 该实现应该是LAPACK API的底层函数的包装器。除了匹配以共轭对形式排列的特征值顺序外,对输出特征向量的唯一约束似乎是
对每个特征向量进行缩放,使欧几里德范数为1,最大分量为实数所以仍然有很多任意性,我不会指望某个特定的输出。如果x满足本征向量方程,c*x也满足任何标量c的方程。如果x满足本征向量方程,c*x也满足任何标量c的方程。@RodrigodeAzevedo,这就是这里的意思。不接受。。我想补充一些links@RodrigodeAzevedo,这是此处的意思。不接受。。关闭以添加一些链接
[(-3, 1, [Matrix([
[1/3],
[1/3],
[ 1]])]), (3, 2, [Matrix([
[1],
[1],
[0]]), Matrix([
[-1],
[ 0],
[ 1]])])]