如何使用 Lanczos 方法计算特征值和特征向量

计算科学 matlab 本征系统 稀疏矩阵 特征值
2021-12-04 10:11:37

我有一个稀疏对称矩阵 A(nxn)。Lanczos 方法将矩阵 A 转换为三对角和对称矩阵 T 以及矩阵 V 中的 Lanczos 向量。从那里我如何计算 k 个最小或最大特征值和相应的特征向量?

1个回答
  • 对于特征值,只需取k的最大或最小特征值T. 它们是很好的近似值A,前提是 Lanczos 的迭代次数与k.

  • 如果我们也想要特征向量,事情就有点棘手了
    最简单的方法是将每个特征向量相乘uiT经过V向左,在哪里V正如你所说,是 Lanczos 向量的集合。但是这种方法对于许多类别的矩阵都不够用,因为舍入误差会导致 Lanczos 向量失去它们的正交性 (1)。

    更好的方法是重新正交化 Lanczos 向量V通过执行 Gram-Schmidt 步骤。
    z成为i-th Lanczos 向量被计算,并让q1,q2,,qi1是以前的 Lanczos 向量。我们变异z以消除所有组件z平行于任何q1,q2,,qi1

    z=zj=1i1(zTqj)qj
    事实证明,我们需要重新正交化两次以保证 Lanczos 向量 (2) 的数值正交性。

参考

  1. J. Demmel,应用数值线性代数
  2. B. Parlett,对称特征值问题