用于〜300 DoF系统的最小几个特征(值|向量)的适当算法?

计算科学 特征值 迭代法
2021-12-11 00:03:27

我不是计算真实对称矩阵(来自框架 FEA 模型的线性质量和刚度矩阵)的特征值和向量的不同类型算法的专家。我正在为大约 300 个自由度的系统寻找计算效率和易于编码的良好结合,其中我只需要前 N 个(N 在 1 到 10 之间)特征值和向量。我将在 VBA 中对其进行编程,因此我需要编程的较少捆绑的算法(例如分解和事物)也是一个因素。

我正在计算移位的逆幂迭代,但如果我移位太多或太少,我担心稳定性或跳过特征值。这是一个现实的担忧吗?

1个回答

几个选项:

  1. 大小为 300 的矩阵非常小,在任何现代计算机上计算这么多特征值和向量都不应该超过几秒钟。通常在计算所有特征值时使用 QR 算法。建议为此使用 LAPACK 例程,它们有很好的文档并且被广泛使用。实现这一点应该非常容易和快速。

  2. 如果(1.)没有削减它,您确实可以找到您需要的最小特征值和向量(如果您可以提供逆运算符,这应该会更快)。有很多选择;经常使用幂迭代和 Arnoldi 方法。Arnoldi 方法可以使用 ARPACK 实现,并且一整套其他方法都包含在 SLEPc 中(这为您提供了一些灵活性)。