我正在尝试找出计算NxN实对称矩阵的最大和最小特征值的最快方法(其中N大约为1000)。这个过程已经重复了很多次,所以我需要整个过程尽可能快。目前我使用的方法如下:
def return_max_min(C)
egvs = np.linalg.eigvalsh(C)
return min(egvs) , max(egvs)
不幸的是,这不是很有效率。 在related post中有人提出了以下解决方案:
import scipy.sparse.linalg as sparlg
max_egv = sparlg.eigsh(C, k=10, return_eigenvectors=False, which=('LM'), sigma=1.)
min_egv = sparlg.eigsh(C, k=10, return_eigenvectors=False, which=('SM'), sigma=1.)
然而,这似乎并不比第一次更快。
我做错了什么或者这仅仅是内置方法的限制?
提前感谢您的帮助。