寻找最低点nn带对角矩阵的特征值

计算科学 线性代数 计算物理学 特征值 软件
2021-12-21 09:59:52

我有一个真正的稀疏矩阵形式

(h11h120h14h21h22h230h250h32h33h340h36h410h43h44h450h520h54h55h56h630h65h66)

它通常具有尺寸2500×2500

我使用 LAPACK 例程编写了一个小例程dsyev,这对于小矩阵很好,但对于我感兴趣的上述维度需要一段时间。

有人会建议一个更合适的例程吗?我只对较低的特征值感兴趣,所以迭代过程可能是合适的。

或者是否有任何(现成的)利用稀疏矩阵的例程?LAPACK 似乎主要用于密集矩阵。

1个回答

正如 nicoguaro 所提到的,ARPACK具有自然处理以LAPACK 带格式存储的带状矩阵的例程。此外,由于 ARPACK 使用矩阵向量积 (MVP) 来查找特征值,因此您可以将其“连接”到您自己的 MVP 子例程,而无需重新组织矩阵存储。

作为一个主要的 C++ 用户,在某些时候,我尝试使用Eigen unsupported ARPACK module,但有一段时间没有检查它。Eigen 将为您的矩阵存储和基本线性代数运算提供方便的包装器。虽然您可以通过 Matlab、Python 和许多其他方式使用 ARPACK。

ARPACK 上的 Sparse Eigenvalue Problems上的 python scipy 页面让您了解如何解决您的查找问题n通过切换到相应的计算模式来最小特征值。请参阅有关which参数的参考资料:(SM最小量级),SR(最小实部),SI(最小虚部),SA(最小代数)。

2500×2500听起来问题不大;但是,如果扩展到更大的尺寸成为一个问题,人们也可以考虑SLEPc