在scipy的ARPACK绑定中,无法计算矩阵的所有特征值。但是,我发现eigsh能够计算n-1个特征值,而eigs仅能够计算n-2个特征值。谁能证明这实际上是ARPACK的基本限制,而不是scipy中的错误?

这是示例代码:

import scipy.sparse, scipy.sparse.linalg
t = scipy.sparse.eye(3,3).tocsr()
l,v = scipy.sparse.linalg.arpack.eigs(t,k=2)
l,v = scipy.sparse.linalg.arpack.eigsh(t,k=2)

最佳答案

这是ARPACK的限制:

http://forge.scilab.org/index.php/p/arpack-ng/source/tree/master/SRC/dnaupd.f

http://forge.scilab.org/index.php/p/arpack-ng/source/tree/master/SRC/dsaupd.f

弄错了会是一个奇怪的错误...

09-05 23:40