广义最小残量方法

title: GMRES方法.
content: 需要求解的线性方程组记为 假设矩阵"A"是"m"formula_2"m"阶的可逆的。进一步,假设"b"是标准化的,即||"b"|| = 1 (在这篇文章中,||·||是Euclidean范数)。  这个问题的"n"阶Krylov子空间是 GMRES通过使得残量"Ax" − "b"最小的向量"x" ∈ "K"来逼近"Ax" = "b"的精确解。  但是,向量"b", "Ab",..., "A""b"几乎是线性相关的。因此,用Arnoldi迭代方法求得的这组"K"的标准正交基 来取代上面的那组基。所以,向量"x" ∈ "K"写成"x" = "Q""y",其中"y" ∈ R且"Q"是由"q",..., "q"组成的"m"formula_2"n"矩阵。  Arnoldi过程也产生一个 ("n"+1)formula_2"n"阶上Hessenberg矩阵formula_7满足 因为formula_9是正交的,我们有 其中 是R的标准基的第一个向量,并且 其中formula_13是初始向量(通常是零向量)。因此,求使得残量 的范数最小的formula_15。这是一个"n"阶线性最小二乘问题。  这就是GMRES方法。在迭代的每一步中: 在每一步迭代中,必须计算一次矩阵向量积"Aq"。对于一般的"m"阶稠密矩阵,这要计算复杂度大约2"m"次浮点运算。但是对于稀疏矩阵,这个计算复杂度能减少到O("m")。进一步,关于矩阵向量积,在"n"次迭代中能进行O("n" "m")次浮点运算。
title: 收敛性.
content: 第"n"次迭代获得在Krylov子空间"K"下的最小残量。因为每个子空间包含于下一个子空间中,所以残量单调递减。在第"m"次迭代后,其中"m"是矩阵"A"的阶数,Krylov空间"K"是完整的R。因此,GMRES方法达到精确解。然而,问题在于:在极少的几次迭代后(相对于"m"),向量"x"几乎已经是精确解的一个很好的逼近。  但是,在一般情况下这是不会发生的。事实上,Greenbaum,Pták和Strakoš的理论说明了对于每一个单调减少的序列"a",..., "a", "a" = 0,能够找到一个矩阵"A"对于所有"n"满足||"r"|| = "a",其中"r"是上面所定义的残量。特别的,有可能找到一个矩阵,使得前"m" − 1次迭代的残量一直保持为常数,而只在最后一次迭代时达到零。  在实验中,GMRES方法经常表现得很好。在特殊的情况下这能够被证明。如果"A"是正定的,则 其中formula_19和formula_20分别为矩阵formula_21的最小和最大特征值。  如果"A"是对称的并且是正定的,则 其中formula_23记为"A"在Euclidean范数下的条件数。  一般情况下,其中"A"是非正定的,则 其中"P"记为次数不超过"n"且"p"(0) = 1的多项式的集合,"V"是"A"的谱分解中的矩阵,而σ("A")是"A"的谱。粗略的说,当"A"的特征值聚集在远离原点的区域且"A"离正规不太远时,收敛速度较快。  所有的不等式只界定残量,而不是实际误差(精确解和当前迭代"x"之间的距离)。
title: GMRES方法的拓展.
content: 同其他迭代方法一样,为了加快收敛,GMRES经常结合预处理方法。  迭代的开销以O("n")增长,其中"n"是迭代次数。然而有时候,GMRES方法在"k"次迭代后重新开始,即"x"又变回初始值。这样的方法叫做GMRES("k")。
title: 与其他解法的比较.
content: 对于对称矩阵,Arnoldi迭代方法变成Lanczos迭代方法。对应的Krylov子空间方法叫做Paige和Saunders的最小残量方法(MinRes)。不像非对称的情况,MinRes方法由三项循环关系(three-term recurrence relation)给出,并且同GMRES一样,使残量的范数最小。而对于一般矩阵,Krylov子空间方法不能由短的循环关系(short recurrence relation)给出。  另一类方法由非对称Lanczos迭代方法给出,特别的是BiCG方法。这个利用了three-term recurrence relation,但他们没有达到最小的残量,因此对于这些方法残量不会单调递减。收敛性是不能保证的。  第三类方法由CGS和BiCGSTAB给出。这些也由three-term recurrence relation给出(因此,非最优)。而且可能过早的终止迭代了而没有达到收敛的目的。这些方法的想法是合适的选择迭代序列所产生的多项式。  对于所有矩阵,这三类方法都不是最好的;总有例使得一类方法好于另一类。因而,各种解法应该进行实际的试验,来决定对于给定的问题哪一种是最优的。
title: 求解最小二乘问题.
content: GMRES方法的其中一部分是求解向量formula_25使得 最小。这个可以通过计算QR分解来实现:找到一个("n"+1)formula_2("n"+1)阶正交矩阵Ω和一个("n"+1)formula_2"n"上三角矩阵formula_29满足 三角矩阵的行数比列数多1,所以它的最后一行由零组成。因此,它能被分解为 其中formula_32是一个"n"formula_2"n"阶三角(方)矩阵。  QR分解能够简单的进行下去(update),从一步迭代到下一步迭代。因为每次的Hessenberg矩阵只在一行零元素和一列元素上有所不同: 其中"h" = ("h",... "h")。这意味着,Hessenberg矩阵左乘上Ω的扩大矩阵(通过并上零元素和单位元素),所得到的是类似于三角矩阵的矩阵: 这个矩阵可以三角化,如果σ为零。为了修正这个矩阵,需要进行Givens旋转 其中 通过这个Givens旋转,我们构造 事实上, 是一个三角矩阵。  给出了QR分解,最小值问题就容易解决了。注意到 记formula_41为 其中"g" ∈ R<sup>"n"</sub>和γ ∈ R,则 使得这个表达式最小的向量"y"为 再一次,向量formula_45能够简单的进行下去(update)。  import numpy as np
title: Example code.
title: Regular GMRES (python3).
content: class GMRES_API:  def main():  if __name__ == '__main__':

Summary: 在数学上,广义最小残量方法(一般简称GMRES)是一个求解线性方程组 数值解的迭代方法。这个方法利用在Krylov子空间中有着最小残量的向量来逼近解。Arnoldi迭代方法被用来求解这个向量。

GMRES-Verfahren: Das GMRES-Verfahren (für Generalized minimal residual method) ist ein iteratives numerisches Verfahren zur Lösung großer, dünnbesetzter linearer Gleichungssysteme. Das Verfahren ist aus der Klasse der Krylow-Unterraum-Verfahren und insbesondere auch für nicht-symmetrische Matrizen geeignet. In exakter Arithmetik, also wenn ohne Rundungsfehler gerechnet wird, liefert das Verfahren nach endlich vielen Schritten die exakte Lösung. Interessanter ist es jedoch als näherungsweises Verfahren, da es mit einer geeigneten Vorkonditionierung auch Gleichungssysteme mit Millionen Unbekannten in wenigen Iterationen mit befriedigender Genauigkeit lösen kann. Damit stellt es eine Art Black Box-Löser für dünnbesetzte lineare Gleichungssysteme dar. Es wurde 1986 von Yousef Saad und Martin H. Schultz entwickelt.