关于np.linalg.eig计算4x4矩阵返回特征向量是否有误的咨询
np.linalg.eig返回4x4矩阵特征向量结果正确性说明
问题背景
构造的测试矩阵如下:
M = np.array ([[ 1., 1., -1., 0], [ 1., -2., 0., 1], [ 1., 1., -1., 0],[ 0., 0., 0., 0.]])
基于线性代数规则推导:矩阵最后一行全为0,非零特征值对应的特征向量$[x_1, x_2, x_3, x_4]$的第四个分量$x_4$应该为0,因此怀疑np.linalg.eig返回结果有误。
结果正确性验证
首先确认推导逻辑成立:若$\lambda$为非零特征值,对应特征向量$v=(x_1,x_2,x_3,x_4)$满足$Mv=\lambda v$。由于M第四行全为0,因此$Mv$的第四个分量恒为0,对应等式右侧$\lambda x_4=0$,$\lambda \neq 0$时确实要求$x_4=0$。
查看np.linalg.eig的输出规则:返回的特征向量矩阵每一列对应一个特征值的特征向量,矩阵第四行即为所有特征向量的$x_4$分量。对照你给出的输出:
Eigenvalues : [ 0.95646559+1.656647j 0.95646559-1.656647j -1.91293118+0.j 0. +0.j ] Eigenvectors : [[ 0.77374282+0.j 0.77374282-0.j -0.08130353+0.j -0.64465837+0.j ] [ 0.19917375-0.11160644j 0.19917375+0.11160644j -0.93378468+0.j -0.32232919+0.j ] [-0.08274466-0.58510614j -0.08274466+0.58510614j 0.34847655+0.j 0.40291148+0.j ] [ 0. +0.j 0. -0.j 0. +0.j 0.56407607+0.j ]]
- 前三个非零特征值对应的特征向量,$x_4$分量分别为
0+0j、0-0j、0+0j,完全符合$x_4=0$的要求 - 只有第四个特征值为0,对应的特征向量$x_4$分量非零,也满足$0\times x_4=0$的等式约束
结论
np.linalg.eig的计算结果完全符合线性代数规则,该误解来自对特征向量矩阵行列对应关系的误读。
内容的提问来源于stack exchange,提问作者Suspicious Fred
相关产品推荐
相关产品推荐

