共轭梯度法的推导

来自testwiki
跳转到导航 跳转到搜索

数值线性代数中,共轭梯度法是一种求解对称正定线性方程组

𝑨𝒙=𝒃

迭代方法。共轭梯度法可以从不同的角度推导而得,包括作为求解最优化问题的共轭方向法的特例,以及作为求解特征值问题的Arnoldi/Lanczos迭代的变种。

本条目记述这些推导方法中的重要步骤。

从共轭方向法推导

Template:Expand-section 共轭梯度法可以看作是应用于二次函数最小化的共轭方向法的特例

f(𝒙)=𝒙T𝑨𝒙2𝒃T𝒙.

共轭方向法

在共轭方向上求最小化:

f(𝒙)=𝒙T𝑨𝒙2𝒃T𝒙.

从最初的猜测𝒙0开始,以及相应的残差 𝒓0=𝒃𝑨𝒙0, 并通过公式计算迭代和残差

αi=𝒑iT𝒓i𝒑iT𝑨𝒑i,𝒙i+1=𝒙i+αi𝒑i,𝒓i+1=𝒓iαi𝑨𝒑i

其中,𝒑0,𝒑1,𝒑2, 为一系列相互共轭的方向,例如:

𝒑iT𝑨𝒑j=0,对于任何ij

由于共轭方向法没有给出用于选择方向的公式,因此该方法具有误差 𝒑0,𝒑1,𝒑2,

而共轭方向法也有多种方法分支,包括共轭梯度法和高斯消元法

从Arnoldi/Lanczos迭代推导

共轭梯度法可以看作Arnoldi/Lanczos迭代应用于求解线性方程组时的一个变种。

一般Arnoldi方法

Arnoldi迭代从一个向量𝒓0开始,通过定义𝒗i=𝒘i/𝒘i2,其中

𝒘i={𝒓0if i=1,𝑨𝒗i1j=1i1(𝒗jT𝑨𝒗i1)𝒗jif i>1,

逐步建立Krylov子空间

𝒦(𝑨,𝒓0)={𝒓0,𝑨𝒓0,𝑨2𝒓0,}

的一组标准正交基{𝒗1,𝒗2,𝒗3,}

换言之,对于i>1𝒗i由将𝑨𝒗i1相对于{𝒗1,𝒗2,,𝒗i1}进行Gram-Schmidt正交化然后归一化得到。

写成矩阵形式,迭代过程可以表示为

𝑨𝑽i=𝑽i+1𝑯~i,

其中

𝑽i=[𝒗1𝒗2𝒗i],𝑯~i=[h11h12h13h1,ih21h22h23h2,ih32h33h3,ihi,i1hi,ihi+1,i]=[𝑯ihi+1,i𝒆iT],hji={𝒗jT𝑨𝒗iif ji,𝒘i+12if j=i+1,0if j>i+1.

当应用于求解线性方程组时,Arnoldi迭代对应于初始解𝒙0的残量𝒓0=𝒃𝑨𝒙0开始迭代,在每一步迭代之后计算𝒚i=𝑯i1(𝒓02𝒆1)和新的近似解𝒙i=𝒙0+𝑽i𝒚i.

直接Lanzcos方法

在余下的讨论中,我们假定𝑨是对称正定矩阵。由于𝑨的对称性, 上Hessenberg矩阵𝑯i=𝑽iT𝑨𝑽i变成对阵三对角矩阵。于是它可以被更明确地表示为

𝑯i=[a1b2b2a2b3bi1ai1bibiai].

这使得迭代中的𝒗i有一个简短的三项递推式。Arnoldi迭代从而简化为Lanczos迭代。

由于𝑨对称正定,𝑯i同样也对称正定。因此,𝑯i可以通过不选主元LU分解分解为

𝑯i=𝑳i𝑼i=[1c21ci11ci1][d1b2d2b3di1bidi],

其中cidi有简单的递推式:

ci=bi/di1,di={a1if i=1,aicibiif i>1.

改写𝒙i=𝒙0+𝑽i𝒚i

𝒙i=𝒙0+𝑽i𝑯i1(𝒓02𝒆1)=𝒙0+𝑽i𝑼i1𝑳i1(𝒓02𝒆1)=𝒙0+𝑷i𝒛i,

其中

𝑷i=𝑽i𝑼i1,𝒛i=𝑳i1(𝒓02𝒆1).

此时需要观察到

𝑷i=[𝑷i1𝒑i],𝒛i=[𝒛i1ζi].

实际上,𝒑iζi同样有简短的递推式:

𝒑i=1di(𝒗ibi𝒑i1),αi=ciζi1.

通过这个形式,我们得到𝒙i的一个简单的递推式:

𝒙i=𝒙0+𝑷i𝒛i=𝒙0+𝑷i1𝒛i1+ζi𝒑i=𝒙i1+ζi𝒑i.

以上的递推关系立即导出比共轭梯度法稍微更复杂的直接Lanczos方法。

从正交性和共轭性导出共轭梯度法

如果我们允许缩放𝒑i并通过常数因子补偿缩放的系数,我们可能可以得到以下形式的更简单的递推式:

𝒙i=𝒙i1+αi1𝒑i1,𝒓i=𝒓i1αi1𝑨𝒑i1,𝒑i=𝒓i+βi1𝒑i1.

作为简化的前提,我们现在推导𝒓i的正交性和𝒑i的共轭性,即对于ij,

𝒓iT𝒓j=0,𝒑iT𝑨𝒑j=0.

各个残量之间满足正交性的原因是𝒓i实际上可由𝒗i+1乘上一个系数而得。这是因为对于i=0𝒓0=𝒓02𝒗1,对于i>0

𝒓i=𝒃𝑨𝒙i=𝒃𝑨(𝒙0+𝑽i𝒚i)=𝒓0𝑨𝑽i𝒚i=𝒓0𝑽i+1𝑯~i𝒚i=𝒓0𝑽i𝑯i𝒚ihi+1,i(𝒆iT𝒚i)𝒗i+1=𝒓02𝒗1𝑽i(𝒓02𝒆1)hi+1,i(𝒆iT𝒚i)𝒗i+1=hi+1,i(𝒆iT𝒚i)𝒗i+1.

要得到𝒑i的共轭性,只需证明𝑷iT𝑨𝑷i是对角矩阵:

𝑷iT𝑨𝑷i=𝑼iT𝑽iT𝑨𝑽i𝑼i1=𝑼iT𝑯i𝑼i1=𝑼iT𝑳i𝑼i𝑼i1=𝑼iT𝑳i

是对称的下三角矩阵,因而必然是对角矩阵。

现在我们可以单纯由𝒓i的正交性和𝒑i的共轭性推导相对于缩放后的𝒑i的常数因子αiβi

由于𝒓i的正交性,必然有𝒓i+1T𝒓i=(𝒓iαi𝑨𝒑i)T𝒓i=0。于是

αi=𝒓iT𝒓i𝒓iT𝑨𝒑i=𝒓iT𝒓i(𝒑iβi1𝒑i1)T𝑨𝒑i=𝒓iT𝒓i𝒑iT𝑨𝒑i.

类似地,由于𝒑i的共轭性,必然有𝒑i+1T𝑨𝒑i=(𝒓i+1+βi𝒑i)T𝑨𝒑i=0。于是

βi=𝒓i+1T𝑨𝒑i𝒑iT𝑨𝒑i=𝒓i+1T(𝒓i𝒓i+1)αi𝒑iT𝑨𝒑i=𝒓i+1T𝒓i+1𝒓iT𝒓i.

推导至此完成。

参考文献

  1. Template:Cite journal
  2. Template:Cite book