【问题标题】:NumPy linalg.eigNumPy linalg.eig
【发布时间】:2011-03-28 19:33:30
【问题描述】:

我有这个烦人的问题,我还没有弄清楚。我有一个矩阵,我想找到特征向量,所以我写:

val,vec = np.linalg.eig(mymatrix)

然后我得到了 vec 。我的问题是当我小组中的其他人对相同的矩阵(mymatrix)做同样的事情时,我们没有得到相同的特征向量!

谁能解释一下?

【问题讨论】:

  • 输出有何不同?你能举个例子吗?
  • 几乎一样,只是数字不同。
  • 你能再量化一点吗?我们是在谈论您机器的浮点精度附近的错误吗?请发布一个简单(小)测试用例的输出来说明您的问题。这样可以更轻松地帮助您回答问题。
  • 例如我得到类似:array([[-4.4, 6.6, -1.7], [7.1, 7.8, -2,9], [-9.8, 2.3, -1.4]])他们: array([[4.4, -6.6, 1.7], [7.1, 7.8, -2,9], [-9.8, 2.3, -1.4]]) 所以我的一些结果是一样的,但是第一个我的输出乘以 -1

标签: python numpy eigenvector


【解决方案1】:

特征向量x的基本性质是

A x = lambda x

对于一些常量lambda

如果x是一个特征向量,那么-x也是:

A (-x) = - A x = - lambda x = lambda (-x)

还要注意,特征向量的集合可能不是唯一的。例如,任何(适当维度的)向量都可以是单位矩阵的特征向量。

np.linalg.eig 试图返回一组特征向量,但不保证一个特定的、唯一的集合。

【讨论】:

  • 谢谢!我可以用我的代码做点什么,所以我可以获得不同的输出吗?还是我必须忍受我选择计算特征向量的计算机?
  • 你必须接受你的电脑选择的东西。
  • @Guest:如果您想要矩阵的特征空间的唯一表示,您可以计算每个特征空间的Grassmann coordinates(但这可能远远超出了本论坛的范围)。跨度>
猜你喜欢
  • 2016-03-23
  • 2012-11-11
  • 1970-01-01
  • 1970-01-01
  • 2018-07-07
  • 2018-10-10
  • 2021-07-24
  • 2014-11-02
  • 1970-01-01
相关资源
最近更新 更多