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

Ray*_*Ray 7 python numpy eigenvalue

我想知道是否有一个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]
Run Code Online (Sandbox Code Playgroud)

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

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