首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python计算的矩阵的特征向量似乎不是特征向量

Python计算的矩阵的特征向量似乎不是特征向量
EN

Stack Overflow用户
提问于 2017-12-03 07:06:04
回答 0查看 537关注 0票数 0

提前道歉,Python不是我的强项。

对应于此矩阵的真实特征值的特征向量(由Python计算)似乎不是特征向量,而由Wolfram Alpha计算的特征向量似乎是有效的。(我的同事证实,在R中执行计算时,似乎也存在相同的病理情况,尽管我没有成绩单。)代码片段:

代码语言:javascript
复制
>>> import numpy as np
>>> in_matrix = np.array([[0.904, 0.012, 0.427], [-0.0032, 0.99975, -0.02207], [-0.4271, 0.0186, 0.904]])
>>> evals, evecs = np.linalg.eig(in_matrix)
>>> print evals
[ 0.90388357+0.42760138j  0.90388357-0.42760138j  0.99998285+0.j]
>>> print evecs[2]
[ 0.70696571+0.j  0.70696571-0.j  0.01741090+0.j]
>>> print in_matrix.dot(evecs[2])
[ 0.65501505+0.j  0.70414242+0.j -0.27305604+0.j]

请注意,将evecs[2]乘以in_matrix变量会产生一个不是evecs[2]的新向量(特征向量应为1)。

将相同的矩阵插入Wolfram Alpha生成真实特征值的特征向量(-0.0474067, -0.998724, 0.0174109)。不出所料,将in_matrix乘以这个特征向量确实会产生相同的向量。

代码语言:javascript
复制
>>> wolfram_vec = np.array([-0.0474067, -0.998724, 0.0174109])
>>> print in_matrix.dot(wolfram_vec)
[-0.04740589 -0.99870688  0.01741059]

Wolfram (正确的)特征向量对应于负Y轴,而numpy给出(sqrt(2), sqrt(2), 0)

结论: numpy中的特征向量不是特征向量,但Wolfram Alpha特征向量是正确的(看起来也是正确的)。有没有人能对此有所了解?

这已经在Mac OS X上的Python 2.7.10的标准安装和Centos 6.8上的Python 2.7.8的自定义安装上进行了测试。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47613566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档