在这些情况下,都需要求解移位矩阵 A-\theta I 的线性系统,有时嵌入在Jacobi-Davidson方法中的投影中。如果这些系统需要精确求解,那么首先考虑直接(稀疏)求解器。通常需要求解多个相同移位矩阵的系统,这有助于分摊在构建稀疏LU分解时产生的大量成本。如果系统不需要精确求解,或者直接求解方法成本过高,那么可以考虑迭代方法。一组流行的迭代方法在《线性系统求解模板》中有所描述[41]。
在简要概述之前,我们提醒读者,与特征问题相关的线性系统通常具有不定矩阵,这是由于涉及的移位。如果移位接近外部特征值,那么在所有情况下这不一定构成障碍,但对于内部移位肯定会有收敛问题。此外,当移位非常接近某个特征值时,例如,如果要确定左或右特征值,那么应该意识到迭代方法在求解几乎奇异系统时存在很大困难。这在感兴趣的情况下尤其如此,其中人们关注(几乎)奇异方向,正如在左和右特征向量的逆迭代中那样。普遍认为,迭代方法需要高效的预处理器才能具有吸引力。这对于移位矩阵尤其如此。不幸的是,构造不定矩阵的有效预处理器是一个棘手的问题。更多内容请参见第11章。
目前最流行的迭代方法属于Krylov子空间方法类别。这些方法从所谓的Krylov子空间构造解的近似。
Krylov子空间 {\mathcal K}^i(A;r_0) 的维度为 i,与线性系统 Ax=b(其中 A 和 b 可能是预处理后的值,如果包含预处理)相关,对于初始向量 x_0 和残差向量 r_0=b-Ax_0,定义为由向量 {r_0, Ar_0, A^2r_0, \ldots, A^{i-1}r_0} 张成的子空间。
不同的方法可以分类如下:
(a)
如果 A 是对称正定的,那么共轭梯度方法[226]使用二项递归生成 x_i,使得 (x-x_i,A(x-x_i))(即所谓的 A-范数或能量范数)在当前Krylov子空间 {\mathcal K}^i(A;r_0) 中所有向量上最小化。
如果 A 是非对称的,那么我们可以计算 x_i\in {\mathcal K}^i(A,r_0),使得残差在欧几里得范数中被最小化。这是通过GMRES方法[389]完成的。这需要在第 i 次迭代步骤中进行 i 次内积运算,以及 i 次向量更新,这意味着除了与 A 相关的运算外,迭代成本随 i 线性增长。
(e)
在双共轭梯度方法中,A^T 的运算可以被 A 本身的运算所替代,通过观察到 \langle x,A^Ty \rangle 等于 \langle Ax,y \rangle,其中 \langle\ldots\rangle 表示内积计算。由于双共轭梯度中 A^T 乘法的作用仅是为了维持残差正交化的对偶空间,用 A 替换此操作符允许我们扩展Krylov子空间,并以与双共轭梯度相同的每次迭代成本找到更好的近似。这导致了所谓的混合方法,如共轭梯度平方[418],Bi-CGSTAB[445],Bi-\mathrm{CGSTAB}(\ell)[409],TFQMR[174],以及QMR的混合[78]。