广义最小残差 (GMRES) 法(Saad 和 Schultz 1986)是最小残差法 (MINRES) 的扩展,后者仅适用于对称系统,而前者适用于非对称系统。与 MINRES 类似,它生成一个正交向量序列,但在缺少对称性的情况下,这不再能用短递推关系完成;相反,正交序列中所有先前计算的向量都必须保留。因此,使用了该方法的“重启”版本。
在共轭梯度法中,残差构成该空间的正交基
在 GMRES 中,这个基被显式地构造出来
读者可能会认识到这是一个改进的 Gram-Schmidt 正交化。应用于 Krylov 序列 的这种正交化被称为“Arnoldi 方法”(Arnoldi 1951)。内积系数 和 存储在一个上 Hessenberg 矩阵中。
GMRES 迭代被构造为
其中系数 的选择是为了最小化残差范数 。GMRES 算法的特性是,即使迭代尚未形成,也可以计算此残差范数。因此,形成迭代的昂贵操作可以推迟到残差范数被认为足够小的时候。
在此方案中,UPDATE 替换了以下计算
广义最小残差法旨在求解非对称线性系统(Saad 和 Schultz 1986)。GMRES 最流行的形式是基于改进的 Gram-Schmidt 正交化程序,并使用重启来控制存储需求。
如果不使用重启,GMRES(像任何正交化 Krylov 子空间方法一样)将在不超过 步内收敛(假设精确算术)。当然,当 很大时,这没有实际价值;此外,在没有重启的情况下,存储和计算需求是令人望而却步的。实际上,成功应用 GMRES() 的关键要素围绕何时重启的决定;也就是 的选择。不幸的是,存在一些例子,其中该方法停滞不前,并且收敛仅发生在第 步。对于此类系统,任何小于 的 选择都无法收敛。
Saad 和 Schultz (1986) 已经证明了几个有用的结果。特别是,他们表明,如果系数矩阵 是实数且接近正定,则可以选择 的“合理”值。下面讨论 选择的含义。
Saad 和 Schultz (1986) 提出了一种常见的 GMRES 实现,它依赖于使用改进的 Gram-Schmidt 正交化。Householder 变换虽然成本相对较高但很稳定,也被提出。Householder 方法导致与内积和向量更新相关的工作量增加三倍(不是与矩阵向量乘积);然而,收敛性可能会更好,特别是对于病态系统(Walker 1988)。从并行性的角度来看,Gram-Schmidt 正交化可能是首选,牺牲一些稳定性以获得更好的并行化特性(Demmel et al. 1993)。在这里,我们采用改进的 Gram-Schmidt 方法。
GMRES 的主要缺点是,每次迭代所需的工作量和存储量随着迭代次数线性增加。除非足够幸运地获得极快的收敛速度,否则成本将迅速变得令人望而却步。克服此限制的常用方法是重启迭代。在选定的迭代次数 后,累积的数据被清除,中间结果用作下一次 迭代的初始数据。重复此过程,直到实现收敛。困难在于为 选择合适的值。如果 太小,则 GMRES() 可能收敛缓慢,或者完全无法收敛。大于必要的 值会涉及过多的工作(并使用更多的存储空间)。不幸的是,没有明确的规则来指导 的选择;选择何时重启是一项经验问题。
有关向量和共享内存计算机的 GMRES 的讨论,请参阅 Dongarra et al. (1991)。有关更通用的架构,请参阅 Demmel et al. (1993)。