【高等数值分析】Krylov子空间方法

文章目录

    • 1. 预备理论
      • 1.1 Krylov 子空间
      • 1.2 最佳逼近
        • 1.2.1 方法一:最佳平方逼近
        • 1.2.2 方法二:假设 A A A 对称正定
        • 1.2.3 方法三:残差2范数
    • 2. 基底正交化
      • 2.1 Arnoldi 过程(CGS)
      • 2.2 改进 Arnoldi 过程(MGS)
      • 2.3 Lanczos过程
    • 3. 方程组求解
      • 3.1 全正交方法 (FOM)
      • 3.2 D-Lanczos方法
      • 3.3 广义极小残量法(GMRES)
      • 3.4 MINRES 方法

1. 预备理论

现在需要求解一个大规模稀疏方程组 A x = b Ax=b Ax=b,可以用迭代法比如 Jacobi 迭代法、Gauss-Seidel 迭代法等,不过这一节要讨论的是 Krylov 子空间方法,核心部分是 Arnoldi 迭代。

1.1 Krylov 子空间

定理(Cayley-Hamilton):设 A ∈ C n × n A\in{\mathbb C}^{n\times n} ACn×n,则 A A A 的特征多项式 χ ( z ) \chi(z) χ(z) A A A 的零化多项式,也即 χ ( A ) = 0 \chi(A)=0 χ(A)=0

假设特征多项式 χ ( z ) = z n + c n − 1 z n − 1 + ⋯ + c 1 z + c 0 = ( − 1 ) n det ⁡ ( A ) \chi(z)=z^n + c_{n-1}z^{n-1} + \cdots + c_1 z+ c_0=(-1)^n \operatorname{det}(A) χ(z)=zn+cn1zn1++c1z+c0=(1)ndet(A),那么根据 χ ( A ) = 0 \chi(A)=0 χ(A)=0 可以得到
A − 1 = − 1 c 0 A n − 1 − c n − 1 c 0 A n − 2 + ⋯ − c 1 c 0 I = q n − 1 ( A ) A^{-1} = -\frac{1}{c_0} A^{n-1} - \frac{c_{n-1}}{c_0} A^{n-2} + \cdots -\frac{c_1}{c_0} I = q_{n-1}(A) A1=c01An1c0cn1An2+c0c1I=qn1(A)
利用这个等式,在求解线性方程组的时候,给定任意初值 x 0 x_0 x0,都有 A x ∗ − A x 0 = b − A x 0 ≡ r 0 Ax^{\ast}-Ax_0=b-Ax_0 \equiv r_0 AxAx0=bAx0r0,于是 x ∗ = x 0 + q n − 1 ( A ) r 0 x^{\ast} = x_0 + q_{n-1}(A)r_0 x=x0+qn1(A)r0,因此理论上可以在空间
K = { r 0 , A r 0 , ⋯   , A m r 0 , ⋯   , A n − 1 r 0 } \mathcal{K}=\left\{\boldsymbol{r}_{0}, A \boldsymbol{r}_{0}, \cdots, A^{m} \boldsymbol{r}_{0}, \cdots, A^{n-1} \boldsymbol{r}_{0}\right\} K={r0,Ar0,,Amr0,,An1r0}
中找到方程组的准确解,但是科学与工程计算问题中 n n n 可以达到 1 0 6 10^6 106 量级,直接求解代价太高。因此希望在其一个低维子空间中搜索近似解。

定义 m m mKrylov 子空间
K m = span ⁡ ( r 0 , A r 0 , A 2 r 0 , ⋯   , A m − 1 r 0 ) \mathcal{K}_{m}=\operatorname{span}\left(\boldsymbol{r}_{0}, A \boldsymbol{r}_{0}, A^{2} \boldsymbol{r}_{0}, \cdots, A^{m-1} \boldsymbol{r}_{0}\right) Km=span(r0,Ar0,A2r0,,Am1r0)
方程组求解问题转化为
min ⁡ x ∈ x 0 + K m ∥ x ∗ − x ∥ . \min_{x\in x_0+{\mathcal K}_m} \Vert x^{\ast} - x\Vert. xx0+Kmminxx.

1.2 最佳逼近

现在的问题就是在何种范数意义下求解问题 min ⁡ x ∈ x 0 + K m ∥ x ∗ − x ∥ \min_{x\in x_0+{\mathcal K}_m} \Vert x^{\ast} - x\Vert minxx0+Kmxx。假设 K m {\mathcal K}_m Km 的一组基作为列向量构成矩阵 V m V_m Vm,最优解为 x m = x 0 + V m y ∗ ∈ x 0 + K m ,   y ∗ ∈ R m x_m = x_0 + V_m y^{\ast} \in x_0 + {\mathcal K}_m, ~ y^{\ast}\in{\mathbb R}^{m} xm=x0+Vmyx0+Km, yRm

1.2.1 方法一:最佳平方逼近

2 2 2 范数 min ⁡ x ∈ x 0 + K m ∥ x ∗ − x ∥ 2 \min_{x\in x_0+{\mathcal K}_m} \Vert x^{\ast} - x\Vert_2 minxx0+Kmxx2,那么根据最佳平方逼近条件(对 x x x求导,取零点),或者 Galerkin 正交条件,可以推出法方程
⟨ x ∗ − x m , y ⟩ = 0 ,   ∀ y ∈ K m    ⟺    V m T ( x ∗ − x m ) = 0 \begin{aligned} &\langle x^{\ast} - x_m, y \rangle = 0, ~ \forall y\in {\mathcal K}_m \\ \iff & V_m^{\rm T}(x^{\ast}-x_m) = 0 \end{aligned} xxm,y=0, yKmVmT(xxm)=0
但是这个方法不可行!因为要求 x m x_m xm 就需要知道 x ∗ x^{\ast} x

1.2.2 方法二:假设 A A A 对称正定

A A A 对称正定,那么可以改求解问题 min ⁡ x ∈ x 0 + K m ⟨ A ( x − x ∗ ) , x − x ∗ ⟩ \min_{x\in x_0+{\mathcal K}_m} \langle A(x-x^{\ast}), x-x^{\ast}\rangle minxx0+KmA(xx),xx,根据Galerkin 正交条件有法方程
⟨ A ( x ∗ − x m ) , y ⟩ = 0 ,   ∀ y ∈ K m    ⟺    r m = A ( x ∗ − x m ) ⊥ K m    ⟺    V m T ( r 0 − A x m ) = 0 \begin{aligned} &\langle A(x^{\ast} - x_m), y \rangle = 0, ~ \forall y\in {\mathcal K}_m \\ \iff & r_m = A(x^{\ast}-x_m) \perp {\mathcal K}_m \\ \iff & V_m^{\rm T}(r_0 - Ax_m) = 0 \end{aligned} A(xxm),y=0, yKmrm=A(xxm)KmVmT(r0Axm)=0
这个方法可行!后面需要做两件事情:1)求出一组基 V m V_m Vm;2)解法方程。

Note:这里为了得到法方程,需要假设 A A A 对称正定。但是在后面的 FOM 方法中,不论 A A A 是否正定,都基于 Galerkin 条件直接采用了这一法方程来求解线性方程组。至于这么做是否有理论支持我也不太清楚,就姑且相信它是合理的。

1.2.3 方法三:残差2范数

A A A 非奇异,不去求解 min ⁡ ∥ x ∗ − x ∥ \min \Vert x^{\ast} - x\Vert minxx,而是求解 min ⁡ x ∈ x 0 + K m ∥ A ( x ∗ − x ) ∥ 2 \min_{x\in x_0+{\mathcal K}_m} \Vert A(x^{\ast} - x)\Vert_2 minxx0+KmA(xx)2,那么再次根据 Galerkin 条件,可以导出法方程
⟨ A ( x ∗ − x m ) , A y ⟩ = 0 ,   ∀ y ∈ K m    ⟺    r m = A ( x ∗ − x m ) ⊥ A K m    ⟺    V m T A T ( r 0 − A x m ) = 0 \begin{aligned} &\langle A(x^{\ast} - x_m), Ay \rangle = 0, ~ \forall y\in {\mathcal K}_m \\ \iff & r_m = A(x^{\ast}-x_m) \perp A{\mathcal K}_m \\ \iff & V_m^{\rm T}A^{\rm T}(r_0 - Ax_m) = 0 \end{aligned} A(xxm),Ay=0, yKmrm=A(xxm)AKmVmTAT(r0Axm)=0
这个方法也是可行的。

不论如何,上面几种方法最后都归结为两个问题:

  1. 获得 K m {\mathcal K}_m Km 的基底 V m V_m Vm:Gram-Schmidt 正交化方法;
  2. 求解法方程,并且计算残差:低维线性方程组求解。

2. 基底正交化

获得正交基底的方法主要有 Arnoldi 过程(CGS)、改进 Arnoldi 过程(MGS)、以及 Lanczos 过程。名字起的很 fancy,别被吓到,其实他们都只是 Gram-Schmidt 正交化方法。

2.1 Arnoldi 过程(CGS)

迭代过程可以归结为
v 1 = r 0 / ∥ r 0 ∥ w j = A v j − ⟨ A v j , v 1 ⟩ v 1 − ⟨ A v j , v 2 ⟩ v 2 − ⋯ − ⟨ A v j , v j ⟩ v j v j + 1 = w j ∥ w j ∥ 2 , j = 1 , 2 , ⋯ h i , j = ⟨ A v j , v i ⟩ \begin{aligned} \boldsymbol{v}_{1} &= \boldsymbol{r}_{0} / \Vert \boldsymbol{r}_{0} \Vert \\ \boldsymbol{w}_{j} &=A \boldsymbol{v}_{j}-\langle A \boldsymbol{v}_{j}, \boldsymbol{v}_{1}\rangle \boldsymbol{v}_{1}-\langle A \boldsymbol{v}_{j}, \boldsymbol{v}_{2}\rangle \boldsymbol{v}_{2}-\cdots-\langle A \boldsymbol{v}_{j}, \boldsymbol{v}_{j}\rangle \boldsymbol{v}_{j} \\ \boldsymbol{v}_{j+1} &=\frac{\boldsymbol{w}_{j}}{\left\|\boldsymbol{w}_{j}\right\|_{2}}, j=1,2, \cdots \\ h_{i,j} &= \langle A \boldsymbol{v}_{j}, \boldsymbol{v}_{i}\rangle \end{aligned} v1wjvj+1hi,j=r0/r0=AvjAvj,v1v1Avj,v2v2Avj,vjvj=wj2wj,j=1,2,=Avj,vi
得到的 { v 1 , v 2 , . . . , v m , . . . , v n } \{ v_1, v_2, ..., v_m,..., v_n \} {v1,v2,...,vm,...,vn} 是单位正交基。由 h i , j h_{i,j} hi,j 作为元素构成矩阵 H m ∈ R m × m H_m \in {\mathbb R}^{m\times m} HmRm×m,可以验证 H m H_m Hm 为 Hessenberg 阵,并且 h i + 1 , i = ∥ w i ∥ 2 h_{i+1,i}=\Vert \boldsymbol{w}_{i} \Vert_2 hi+1,i=wi2。在 H m H_m Hm 的基础上可以定义 H ˉ m ∈ R ( m + 1 ) × m \bar{H}_m \in {\mathbb R}^{(m+1)\times m} HˉmR(m+1)×m,也就是在最后一行下面再加一行 [ 0 , . . . , 0 , h m + 1 , m ] [0,...,0,h_{m+1,m}] [0,...,0,hm+1,m]

可以验证他们满足如下等式,这三个式子在后面会频繁用到,极其重要!
A V m = V m H m + w m e m T = V m + 1 H ˉ m V m T A V m = H m \begin{aligned} AV_m &= V_m H_m + \boldsymbol{w}_{m} \boldsymbol{e}_{m}^{\rm T} \\ &= V_{m+1} \bar{H}_m \\ V_m^{\rm T} A V_m &= H_m \end{aligned} AVmVmTAVm=VmHm+wmemT=Vm+1Hˉm=Hm
【高等数值分析】Krylov子空间方法_第1张图片

2.2 改进 Arnoldi 过程(MGS)

前面的 Arnoldi 过程在计算 w j \boldsymbol{w}_{j} wj 的时候,相当于把 A v j A \boldsymbol{v}_{j} Avj 分别计算了 j j j 次投影,每次都是向一个一维的子空间 span ⁡ { v i } \operatorname{span}\{ \boldsymbol{v}_{i} \} span{vi} 投影,可能会有计算不稳定的问题。对其进行改进的方法如下,交换顺序之后,每次都是向一个 n − 1 n-1 n1 维子空间投影。

【高等数值分析】Krylov子空间方法_第2张图片

2.3 Lanczos过程

是 Arnoldi 过程的特殊情况,当 A = A T A=A^{\rm T} A=AT,那么 H m H_m Hm 为三对角矩阵,那么 w j \boldsymbol{w}_{j} wj 的计算简化为
w j = A v j − ⟨ A v j , v j − 1 ⟩ v j − 1 − ⟨ A v j , v j ⟩ v j \boldsymbol{w}_{j} = A \boldsymbol{v}_{j}-\langle A \boldsymbol{v}_{j}, \boldsymbol{v}_{j-1}\rangle \boldsymbol{v}_{j-1}-\langle A \boldsymbol{v}_{j}, \boldsymbol{v}_{j}\rangle \boldsymbol{v}_{j} wj=AvjAvj,vj1vj1Avj,vjvj

3. 方程组求解

针对上面几种不同的迭代过程,可以有不同的求解方法。

3.1 全正交方法 (FOM)

FOM (Full orthogonalization method) 根据 Galerkin 条件, r m ⊥ K m r_m\perp {\mathcal K}_m rmKm,根据法方程 V m T ( r 0 − A V m y ) = 0 V_m^{\rm T}(r_0 - AV_my)=0 VmT(r0AVmy)=0,因此有
r m ⊥ K m    ⟺    V m T ( r 0 − A V m y ) = 0 ⟹ H m y = ∥ r 0 ∥ e 1 \begin{aligned} & r_m\perp {\mathcal K}_m \iff V_m^{\rm T}(r_0 - AV_my)=0 \Longrightarrow H_m y = \Vert r_0\Vert \boldsymbol{e}_1 \end{aligned} rmKmVmT(r0AVmy)=0Hmy=r0e1
伪代码为

【高等数值分析】Krylov子空间方法_第3张图片

根据 x m = x 0 + V m y x_m = x_0 + V_m y xm=x0+Vmy,残差有 r m = r 0 − A V m y = r 0 − ( V m H m + w m e m T ) y = − w m e m T y r_m = r_0-AV_my=r_0-(V_m H_m + \boldsymbol{w}_{m} \boldsymbol{e}_{m}^{\rm T})y = -\boldsymbol{w}_{m} \boldsymbol{e}_{m}^{\rm T} y rm=r0AVmy=r0(VmHm+wmemT)y=wmemTy

3.2 D-Lanczos方法

A A A 对称,那么 H m H_m Hm 为三对角阵,特别地记为 T m T_m Tm
T m = ( α 1 β 2 β 2 α 2 β 3 ⋱ ⋱ ⋱ β m − 1 α m − 1 β m β m α m ) ∈ R m × m T_{m}=\left(\begin{array}{ccccc} \alpha_{1} & \beta_{2} & & & \\ \beta_{2} & \alpha_{2} & \beta_{3} & & \\ & \ddots & \ddots & \ddots & \\ & & \beta_{m-1} & \alpha_{m-1} & \beta_{m} \\ & & & \beta_{m} & \alpha_{m} \end{array}\right) \in \mathbb{R}^{m \times m} Tm=α1β2β2α2β3βm1αm1βmβmαmRm×m
T m T_m Tm 的 LU 分解为
T m = L m U m = ( 1 λ 2 1 ⋱ ⋱ λ m − 1 1 λ m 1 ) ( η 1 ω 2 η 2 ω 3 ⋱ ⋱ η m − 1 ω m η m ) T_{m}=L_{m} U_{m}=\left(\begin{array}{ccccc} 1 & & & & \\ \lambda_{2} & 1 & & & \\ & \ddots & \ddots & & \\ & & \lambda_{m-1} & 1 & \\ & & & \lambda_{m} & 1 \end{array}\right)\left(\begin{array}{ccccc} \eta_{1} & \omega_{2} & & & \\ & \eta_{2} & \omega_{3} & & \\ & & \ddots & \ddots & \\ & & & \eta_{m-1} & \omega_{m} \\ & & & & \eta_{m} \end{array}\right) Tm=LmUm=1λ21λm11λm1η1ω2η2ω3ηm1ωmηm
其中 ω m = β m \omega_{m}=\beta_{m} ωm=βm, λ m = β m η m − 1 \quad \lambda_{m}=\frac{\beta_{m}}{\eta_{m-1}} λm=ηm1βm, η m = α m − λ m ω m \quad \eta_{m}=\alpha_{m}-\lambda_{m} \omega_{m} ηm=αmλmωm。那么根据下面这一性质,Lanczos过程可以迭代进行
L m = ( L m − 1 0 l m − 1 T 1 ) , U m = ( U m − 1 y m − 1 0 T η m ) L m − 1 = ( L m − 1 − 1 0 − l m − 1 T L m − 1 − 1 1 ) , U m − 1 = ( U m − 1 − 1 − 1 η m U m − 1 − 1 y m − 1 0 T 1 / η m ) \begin{aligned} L_{m}=\left(\begin{array}{c|c} L_{m-1} & \mathbf{0} \\ \hline \boldsymbol{l}_{m-1}^{T} & 1 \end{array}\right), \quad &U_{m}=\left(\begin{array}{c|c} U_{m-1} & \boldsymbol{y}_{m-1} \\ \hline \mathbf{0}^{T} & \eta_{m} \end{array}\right) \\ L_{m}^{-1} = \left(\begin{array}{c|c} L_{m-1}^{-1} & \mathbf{0} \\ \hline -\boldsymbol{l}_{m-1}^{T}L_{m-1}^{-1} & 1 \end{array}\right), \quad & U_{m}^{-1}=\left(\begin{array}{c|c} U_{m-1}^{-1} & -\frac{1}{\eta_m} U_{m-1}^{-1} \boldsymbol{y}_{m-1} \\ \hline \mathbf{0}^{T} & 1/\eta_{m} \end{array}\right) \end{aligned} Lm=(Lm1lm1T01),Lm1=(Lm11lm1TLm1101),Um=(Um10Tym1ηm)Um1=(Um110Tηm1Um11ym11/ηm)
根据这个方法,还可以到处CG(共轭梯度)法的形式。

3.3 广义极小残量法(GMRES)

Generalized minimal residual method (GMRES) 实际上就是最小化参量的二范数,即 min ⁡ ∥ r m ∥ 2 = min ⁡ x ∈ x 0 + K m ∥ A ( x ∗ − x ) ∥ 2 \min \Vert r_m \Vert_2 = \min_{x\in x_0+{\mathcal K}_m} \Vert A(x^{\ast} - x)\Vert_2 minrm2=minxx0+KmA(xx)2,根据 Galerkin 条件,应有 r m ⊥ A K m    ⟺    V m T A T A V m y = V m T A T r 0 ,   y ∈ R m r_m\perp A{\mathcal K}_m \iff V_m^{\rm T}A^{\rm T}AV_my = V_m^{\rm T}A^{\rm T}r_0, ~ y\in{\mathbb R}^m rmAKmVmTATAVmy=VmTATr0, yRm

另个一思路是 min ⁡ ∥ r 0 − A V m y ∥ = min ⁡ ∥ V m + 1 ( ∥ r 0 ∥ e 1 − H ˉ m y ) ∥ = min ⁡ ∥ ∥ r 0 ∥ e 1 − H ˉ m y ∥ \min\Vert r_0-AV_my\Vert = \min \Vert V_{m+1} (\Vert r_0\Vert e_1 - \bar{H}_my)\Vert = \min \Vert \Vert r_0\Vert e_1 - \bar{H}_my\Vert minr0AVmy=minVm+1(r0e1Hˉmy)=minr0e1Hˉmy,最小二乘解 H ˉ m T ( H ˉ m y − ∥ r 0 ∥ e 1 ) = 0 \bar{H}_m^{\rm T}(\bar{H}_my - \Vert r_0\Vert e_1)=0 HˉmT(Hˉmyr0e1)=0

3.4 MINRES 方法

是 GMRES 的特殊情况,当 A = A T A=A^{\rm T} A=AT 的时候, H m H_m Hm 为三对角阵 T m T_m Tm min ⁡ ∥ r m ∥ 2 = min ⁡ ∥ ∥ r 0 ∥ e 1 − T m y ∥ \min \Vert r_m\Vert_2 = \min \Vert \Vert r_0\Vert e_1 - T_m y \Vert minrm2=minr0e1Tmy

最后给我的博客打个广告,欢迎光临
https://glooow1024.github.io/
https://glooow.gitee.io/

前面的一些博客链接如下
泛函分析专栏
高等数值分析专栏
【高等数值分析】多项式插值
【高等数值分析】函数逼近
【高等数值分析】数值积分和数值微分
【高等数值分析】常微分方程数值解
【高等数值分析】Krylov子空间方法

你可能感兴趣的:(高等数值分析,线性代数,矩阵,线性方程组)