广义最小残量方法

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迭代方法被用来求解这个向量。

Generalized minimal residual method: In mathematics, the generalized minimal residual method (GMRES) is an iterative method for the numerical solution of a nonsymmetric system of linear equations. The method approximates the solution by the vector in a Krylov subspace with minimal residual. The Arnoldi iteration is used to find this vector.