我有一个真正的稀疏矩阵形式
它通常具有尺寸
我使用 LAPACK 例程编写了一个小例程dsyev,这对于小矩阵很好,但对于我感兴趣的上述维度需要一段时间。
有人会建议一个更合适的例程吗?我只对较低的特征值感兴趣,所以迭代过程可能是合适的。
或者是否有任何(现成的)利用稀疏矩阵的例程?LAPACK 似乎主要用于密集矩阵。
我有一个真正的稀疏矩阵形式
它通常具有尺寸
我使用 LAPACK 例程编写了一个小例程dsyev,这对于小矩阵很好,但对于我感兴趣的上述维度需要一段时间。
有人会建议一个更合适的例程吗?我只对较低的特征值感兴趣,所以迭代过程可能是合适的。
或者是否有任何(现成的)利用稀疏矩阵的例程?LAPACK 似乎主要用于密集矩阵。
正如 nicoguaro 所提到的,ARPACK具有自然处理以LAPACK 带格式存储的带状矩阵的例程。此外,由于 ARPACK 使用矩阵向量积 (MVP) 来查找特征值,因此您可以将其“连接”到您自己的 MVP 子例程,而无需重新组织矩阵存储。
作为一个主要的 C++ 用户,在某些时候,我尝试使用Eigen unsupported ARPACK module,但有一段时间没有检查它。Eigen 将为您的矩阵存储和基本线性代数运算提供方便的包装器。虽然您可以通过 Matlab、Python 和许多其他方式使用 ARPACK。
ARPACK 上的 Sparse Eigenvalue Problems上的 python scipy 页面让您了解如何解决您的查找问题通过切换到相应的计算模式来最小特征值。请参阅有关which参数的参考资料:(SM最小量级),SR(最小实部),SI(最小虚部),SA(最小代数)。
听起来问题不大;但是,如果扩展到更大的尺寸成为一个问题,人们也可以考虑SLEPc。