Python numpy 计算第一个特征值和特征向量

新手上路,请多包涵

我想知道是否有一个 Python 包(numpy 或其他)具有计算小矩阵(比如 2x2)的第一个特征值和特征向量的函数。我可以按如下方式在 numpy 中使用 linalg 包。

 import numpy as np

def whatever():
    A = np.asmatrix(np.rand(2, 2))
    evals, evecs = np.linalg.eig(A)
    #Assume that the eigenvalues are ordered from large to small and that the
    #eigenvectors are ordered accordingly.
    return evals[0], evecs[:, 0]

但这需要很长时间。我怀疑这是因为 numpy 通过某种迭代过程计算特征向量。所以我想知道是否有更快的算法只返回第一个(最大)特征值和特征向量,因为我只需要第一个。

对于 2x2 矩阵,我当然可以自己编写一个函数,以分析方式计算特征值和特征向量,但是浮点计算存在问题,例如,当我将一个非常大的数除以一个非常小的数时,我得到无穷大或 NaN .有人对这个有了解吗?请帮忙!先感谢您!

原文由 Ray 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 684
2 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏