6.4_加速方法

6.4 加速方法

当迭代解 x(0),x(1),x(2),,x(k)x^{(0)}, x^{(1)}, x^{(2)}, \ldots, x^{(k)} 已经计算出来后,我们可以对其进行组合,得到一个新的近似解,这样就可以对原方法进行加速。

6.4.1 外推技术

设原迭代格式为

x(k+1)=Gx(k)+g.(6.23)x ^ {(k + 1)} = G x ^ {(k)} + g. \tag {6.23}

x(k)x^{(k)}x(k+1)x^{(k + 1)} 加权组合后可得新的近似解

x(k+1)=(1ω)x(k)+ω(Gx(k)+g),(6.24)x ^ {(k + 1)} = (1 - \omega) x ^ {(k)} + \omega \left(G x ^ {(k)} + g\right), \tag {6.24}

其中 ω\omega 是参数. 这种加速方法就称为外推方法

如果原迭代格式是 Gauss-Seidel 迭代, 虽然 SOR 与外推方法 (6.17) 都是通过加权进行加速,但格式是不一样的: 前者是在单个分量计算出来后就进行加权, 而后者则是当所有分量都计算出来后才加权.

为了使得迭代格式(6.17)尽可能快地收敛, 需要选择 ω\omega 使得其迭代矩阵 Gω(1ω)I+ωGG_{\omega} \triangleq (1 - \omega)I + \omega G 的谱半径尽可能地小. 假设 GG 的特征值都是实数, 且最大特征值和最小特征值分别为 λ1\lambda_1λn\lambda_n . 于是

ρ(Gω)=maxλσ(G)(1ω)+ωλ=max{1ω+ωλ1,1ω+ωλn}.\rho (G _ {\omega}) = \max _ {\lambda \in \sigma (G)} | (1 - \omega) + \omega \lambda | = \max \{| 1 - \omega + \omega \lambda_ {1} |, | 1 - \omega + \omega \lambda_ {n} | \}.

定理6.28 设 GG 的特征值都是实数, 其最大和最小特征值分别为 λ1\lambda_{1}λn\lambda_{n} , 且 1[λn,λ1]1 \notin [\lambda_{n}, \lambda_{1}] , 则

ω=argminωρ(Gω)=22(λ1+λn),\omega_ {*} = \arg \min _ {\omega} \rho (G _ {\omega}) = \frac {2}{2 - (\lambda_ {1} + \lambda_ {n})},

此时

ρ(Gω)=1ωd,\rho \left(G _ {\omega_ {*}}\right) = 1 - | \omega_ {*} | d,

其中 dd 是1到 [λn,λ1][\lambda_n,\lambda_1] 的距离,即当 λnλ1<1\lambda_{n}\leq \lambda_{1} < 1 时, d=1λ1d = 1 - \lambda_1 ,当 λ1λn>1\lambda_{1}\geq \lambda_{n} > 1 时, d=λn1d = \lambda_{n} - 1

(板书)

证明. 易知 1ω+ωλ1=1ω+ωλn|1 - \omega + \omega \lambda_1| = |1 - \omega + \omega \lambda_n| 当且仅当 λ1=λn\lambda_1 = \lambda_nω=0\omega = 0ω=ω=22(λ1+λn)\omega = \omega_* = \frac{2}{2 - (\lambda_1 + \lambda_n)} .

λ1=λn\lambda_1 = \lambda_n ,则当 ω=11λ1=ω\omega = \frac{1}{1 - \lambda_1} = \omega_*ρ(Gω)\rho(G_{\omega_*}) 达到最小值0.

下面假定 λ1λn\lambda_1 \neq \lambda_n . 先考虑 λ1<1\lambda_1 < 1 的情形. 此时有

maxλnλλ1(1ω)+ωλ={1ω+λnω,ω0;1ω+λ1ω,0<ωω;(1ω+λnω),ω>ω.\max _ {\lambda_ {n} \leq \lambda \leq \lambda_ {1}} | (1 - \omega) + \omega \lambda | = \left\{ \begin{array}{l l} 1 - \omega + \lambda_ {n} \omega , & \omega \leq 0; \\ 1 - \omega + \lambda_ {1} \omega , & 0 < \omega \leq \omega_ {*}; \\ - (1 - \omega + \lambda_ {n} \omega), & \omega > \omega_ {*}. \end{array} \right.

通过函数图像可知, 当 ω=ω\omega = \omega_{*} 时取最小值. 此时

ρ(Gω)=1(1λ1)ω=12(1λ1)2(λ1+λn)=λ1λn2(λ1+λn).\rho \left(G _ {\omega_ {*}}\right) = 1 - \left(1 - \lambda_ {1}\right) \omega_ {*} = 1 - \frac {2 \left(1 - \lambda_ {1}\right)}{2 - \left(\lambda_ {1} + \lambda_ {n}\right)} = \frac {\lambda_ {1} - \lambda_ {n}}{2 - \left(\lambda_ {1} + \lambda_ {n}\right)}.

对于 λn>1\lambda_{n} > 1 的情形,可以进行类似的讨论

由定理6.28可知, ρ(Gω)=1ωd,\rho(G_{\omega_*)} = 1 - |\omega_*|d, 且当 ω1\omega_* \neq 1 时,外推送代(6.17)比原迭代法收敛要更快一些.

最优参数依赖于原迭代矩阵 GG 的特征值, 因此实用性不强. 在实际应用时可以估计特征值所在的区间 [α,β][\alpha, \beta] , 然后用 α,β\alpha, \beta 来代替 λn\lambda_{n}λ1\lambda_{1} .

JOR方法

对Jacobi迭代进行外推加速, 则可得JOR(Jacobi over-relaxation)方法:

x(k+1)=(1ω)x(k)+ω(D1(L+U)x(k)+D1b)=x(k)+ωD1(bAx(k)),k=0,1,2,.\begin{array}{l} x ^ {(k + 1)} = (1 - \omega) x ^ {(k)} + \omega (D ^ {- 1} (L + U) x ^ {(k)} + D ^ {- 1} b) \\ = x ^ {(k)} + \omega D ^ {- 1} (b - A x ^ {(k)}), \quad k = 0, 1, 2, \dots . \\ \end{array}

定理6.29 设 AA 对称正定. 若

0<ω<2ρ(D1A),0 < \omega < \frac {2}{\rho (D ^ {- 1} A)},

则JOR方法收敛

6.4.2 Chebyshev多项式加速

本节对外推技巧进行推广.

假定通过迭代格式 (6.16) 已经计算出 x(0),x(1),,x(k)x^{(0)}, x^{(1)}, \ldots, x^{(k)} , 下面考虑如何将这些近似解进行组合, 以便得到更精确的近似解.

εk=x(k)x\varepsilon_{k} = x^{(k)} - x_{*} 为第 kk 步迭代解的误差, 则有

εk=Gεk1=G2εk2==Gkε0.\varepsilon_ {k} = G \varepsilon_ {k - 1} = G ^ {2} \varepsilon_ {k - 2} = \dots = G ^ {k} \varepsilon_ {0}.

x~(k)\tilde{x}^{(k)}x(0),x(1),,x(k)x^{(0)}, x^{(1)}, \ldots, x^{(k)} 的一个线性组合,即

x~(k)=α0x(0)+α1x(1)++αkx(k),(6.25)\tilde {x} ^ {(k)} = \alpha_ {0} x ^ {(0)} + \alpha_ {1} x ^ {(1)} + \dots + \alpha_ {k} x ^ {(k)}, \tag {6.25}

其中 αi\alpha_{i} 为待定系数,且满足 i=0kαi=1.\sum_{i = 0}^{k}\alpha_{i} = 1. 于是

x~(k)x=α0ε0+α1Gε0++αkGkε0pk(G)ε0,(6.26)\tilde {x} ^ {(k)} - x _ {*} = \alpha_ {0} \varepsilon_ {0} + \alpha_ {1} G \varepsilon_ {0} + \dots + \alpha_ {k} G ^ {k} \varepsilon_ {0} \triangleq p _ {k} (G) \varepsilon_ {0}, \tag {6.26}

其中 pk(t)=i=0kαitip_k(t) = \sum_{i=0}^k \alpha_i t^ikk 次多项式, 且满足 pk(1)=1p_k(1) = 1 .

我们希望通过适当选取参数 αi\alpha_{i} , 使得 x~(k)x\tilde{x}^{(k)} - x_{*} 尽可能地小, 即使得 x~(k)\tilde{x}^{(k)} 收敛到 xx_{*} 速度远远快于 x(k)x^{(k)} 收敛到 xx_{*} 速度. 这种加速方法就称为多项式加速或半迭代法 (semi-iterative method).

例6.4 设 pn(t)p_n(t)GG 的特征多项式, 令 p~n(t)pn(t)/pn(1)\tilde{p}_n(t) \triangleq p_n(t) / p_n(1) , 则 p~n(1)=1\tilde{p}_n(1) = 1p~n(G)=0\tilde{p}_n(G) = 0 , 所以选取 αi\alpha_ip~n\tilde{p}_n 的系数, 则 x~(n)x=0\tilde{x}^{(n)} - x_* = 0 . 但这种选取方法不实用, 原因是:

(1) p~n(t)\tilde{p}_n(t) 的系数并不知道;

(2) 我们通常希望收敛所需的迭代步数 n\ll n .

下面讨论参数 αi\alpha_{i} 的较实用的选取方法.由(6.19)可知

x~(k)x2=pk(G)ε02pk(G)2ε02.\| \tilde {x} ^ {(k)} - x _ {*} \| _ {2} = \| p _ {k} (G) \varepsilon_ {0} \| _ {2} \leq \| p _ {k} (G) \| _ {2} \cdot \| \varepsilon_ {0} \| _ {2}.

因此我们需要求解下面的极小化问题

minpPk,p(1)=1p(G)2,(6.27)\min _ {p \in \mathbb {P} _ {k}, p (1) = 1} \| p (G) \| _ {2}, \tag {6.27}

其中 Pk\mathbb{P}_k 表示所有次数不超过 kk 的多项式组成的集合. 一般来说, 这个问题是非常困难的. 但在一些特殊情况下, 我们可以给出其 (近似) 最优解.

假设迭代矩阵 GG 是对称矩阵,即 GG 存在特征值分解

G=QΛQT,G = Q \Lambda Q ^ {\mathsf {T}},

其中 Λ\Lambda 是对角矩阵, 且对角线元素都是实的, QQ 是正交矩阵. 于是有

minpPk,p(1)=1p(G)2=minpPk,p(1)=1p(Λ)2=minpPk,p(1)=1max1in{p(λi)}minpPk,p(1)=1maxλ[λn,λ1]{p(λ)},(6.28)\begin{array}{l} \min _ {p \in \mathbb {P} _ {k}, p (1) = 1} \| p (G) \| _ {2} = \min _ {p \in \mathbb {P} _ {k}, p (1) = 1} \| p (\Lambda) \| _ {2} \\ = \min _ {p \in \mathbb {P} _ {k}, p (1) = 1} \max _ {1 \leq i \leq n} \left\{\left| p \left(\lambda_ {i}\right) \right| \right\} \\ \leq \min _ {p \in \mathbb {P} _ {k}, p (1) = 1} \max _ {\lambda \in [ \lambda_ {n}, \lambda_ {1} ]} \left\{\left| p (\lambda) \right| \right\}, \tag {6.28} \\ \end{array}

其中 λ1,λn\lambda_1, \lambda_n 分别表示 GG 的最大和最小特征值. 这是带归一化条件的多项式最佳一致逼近问题 (与零的偏差最小). 该问题的解与著名的 Chebyshev 多项式有关.

由于所有算子范数 pk(G)\| p_k(G)\| 的下确界是 ρ(pk(G))\rho (p_k(G)) ,因此,一种较实用的选取方法是使得 pk(G)p_k(G) 的谱半径尽可能地小.

Chebyshev多项式

Chebyshev多项式是一类很重要的正交多项式, 在函数逼近, 函数插值, 数值积分等方面都有着重要的应用.

Chebyshev多项式 Tk(t)T_{k}(t) 可以通过下面的递归方式来定义:

T0(t)=1,T1(t)=t,T _ {0} (t) = 1, \quad T _ {1} (t) = t,
Tk(t)=2tTk1(t)Tk2(t),k=2,3,,(6.29)T _ {k} (t) = 2 t T _ {k - 1} (t) - T _ {k - 2} (t), k = 2, 3, \dots , \tag {6.29}

也可以直接由下面的式子定义

Tk(t)={cos(karccost),t1cosh(karccosht),t>1,T _ {k} (t) = \left\{ \begin{array}{l l} \cos (k \operatorname {a r c c o s} t), & | t | \leq 1 \\ \cosh (k \operatorname {a r c c o s h} t), & | t | > 1 \end{array} \right.,

其中 cosh\cosh 为双曲余弦, 即 cosh(t)=et+et2\cosh(t) = \frac{e^t + e^{-t}}{2} .

引理6.30 Chebyshev多项式具有下面的性质:

(1) Tk(1)=1T_{k}(1) = 1

(2) Tk(t)T_{k}(t) 的首项系数为 2k12^{k - 1} ;
(3) Tk(t)=(1)kTk(t)T_{k}(-t) = (-1)^{k}T_{k}(t) , 即 T2k(t)T_{2k}(t) 只含偶次项, T2k+1(t)T_{2k+1}(t) 只含奇次项;
(4) 当 t1|t| \leq 1Tk(t)1|T_{k}(t)| \leq 1 ; 当 t>1|t| > 1Tk(t)>1|T_{k}(t)| > 1 ;
(5) Tk(t)=0T_{k}(t) = 0 的解为 ti=cos(2i1)π2k,i=1,,k;t_i = \cos \frac{(2i - 1)\pi}{2k}, i = 1, \ldots, k;
(6) Tk(t)T_{k}(t)n1n - 1 个极值点: ti=coskπn,i=1,2,,k1t_{i} = \cos \frac{k\pi}{n}, i = 1,2,\ldots,k - 1 ;

下面的结论表明, 在所有首项系数为 1 的 kk 次多项式中, pk(t)=12k1Tk(t)p_k(t) = \frac{1}{2^{k-1}} T_k(t)[1,1][-1,1] 上与零的偏差是最小的 (在无穷范数意义下).

定理6.31 设 pk(t)=12k1Tk(t)p_k(t) = \frac{1}{2^{k-1}} T_k(t) , 则

max1t1pk(t)max1t1p(t),p(t)P~k,\max _ {- 1 \leq t \leq 1} | p _ {k} (t) | \leq \max _ {- 1 \leq t \leq 1} | p (t) |, \quad \forall p (t) \in \tilde {\mathbb {P}} _ {k},

其中 P~k\tilde{\mathbb{P}}_k 表示所有首项系数为1的 kk 次多项式组成的集合,即

pk(t)=minp(t)Pkp(t).\| p _ {k} (t) \| _ {\infty} = \min _ {p (t) \in \mathbb {P} _ {k}} \| p (t) \| _ {\infty}.

这里的范数 \| \cdot \|_{\infty}C[1,1]C[-1,1] 上的无穷范数,即 f=maxx[1,1]f(x)\| f\|_{\infty} = \max_{x\in [-1,1]}|f(x)|f(x)C[1,1]f(x)\in C[-1,1]

该性质可用于计算首项系数非零的 nn 次多项式在 [1,1][-1,1] 上的 n1n - 1 次最佳一致逼近多项式. 利用这个性质, 我们可以采用 Chebyshev 多项式的零点作为节点进行多项式插值, 以使得插值的总体误差达到最小化.

Chebyshev 另一个重要性质是下面的最小最大性质.

定理6.32 设 ηR\eta \in \mathbb{R} 满足 η>1|\eta| > 1 ,则下面的最小最大问题

的唯一解为

minp(t)Pk,p(η)=1max1t1p(t)\min_{p(t)\in \mathbb{P}_{k},p(\eta) = 1}\max_{-1\leq t\leq 1}|p(t)|
T~k(t)Tk(t)Tk(η).\tilde {T} _ {k} (t) \triangleq \frac {T _ {k} (t)}{T _ {k} (\eta)}.

通过简单的仿射变换, 该定理的结论可以推广到一般区间.

定理6.33 设 α,β,ηR\alpha, \beta, \eta \in \mathbb{R} 满足 α<β\alpha < \betaη[α,β]|\eta| \notin [\alpha, \beta] . 则下面的最小最大问题

minp(t)Pk,p(η)=1maxαxβp(t)\min_{p(t)\in \mathbb{P}_{k},p(\eta) = 1}\max_{\alpha \leq x\leq \beta}|p(t)|

的唯一解为

T^k(t)Tk(2t(β+α)βα)Tk(2η(β+α)βα),\hat {T} _ {k} (t) \triangleq \frac {T _ {k} \left(\frac {2 t - (\beta + \alpha)}{\beta - \alpha}\right)}{T _ {k} \left(\frac {2 \eta - (\beta + \alpha)}{\beta - \alpha}\right)},

其中 Pk\mathbb{P}_k 表示所有次数不超过 kk 的实系数多项式组成的集合.

Chebyshev加速方法

考虑迭代格式(6.16),我们假定:

(1) 迭代矩阵 GG 的特征值都是实数;
(2) 迭代矩阵谱半径 ρ=ρ(G)<1\rho = \rho (G) < 1 , 故 λ(G)[ρ,ρ](1,1)\lambda (G)\in [-\rho ,\rho ]\subset (-1,1) .

于是最小最大问题(6.21)就转化为

minpPk,p(1)=1maxλ[ρ,ρ]{p(λ)}.\min _ {p \in \mathbb {P} _ {k}, p (1) = 1} \max _ {\lambda \in [ - \rho , \rho ]} \left\{\left| p (\lambda) \right| \right\}.

由于 1[ρ,ρ]1 \neq [-\rho, \rho] , 根据定理 6.33, 上述问题的解为

pk(t)=Tk(t/ρ)Tk(1/ρ).p _ {k} (t) = \frac {T _ {k} (t / \rho)}{T _ {k} (1 / \rho)}.

下面考虑 x~(k)\tilde{x}^{(k)} 的计算. 我们无需先计算出 x(0),x(1),,x(k)x^{(0)}, x^{(1)}, \ldots, x^{(k)} , 然后再通过线性组合 (6.18) 来计算 x~(k)\tilde{x}^{(k)} . 事实上, 我们可以通过 Chebyshev 多项式的三项递推公式 (6.22), 由 x~(k1)\tilde{x}^{(k-1)}x~(k2)\tilde{x}^{(k-2)} 直接计算出 x~(k)\tilde{x}^{(k)} . 这样做的另一个好处是无需存储所有的 x~(i)\tilde{x}^{(i)} . 下面给出具体的推导公式.

μk=1Tk(1/ρ)\mu_{k} = \frac{1}{T_{k}(1 / \rho)}Tk(1/ρ)=1μk.T_{k}(1 / \rho) = \frac{1}{\mu_{k}}. 由三项递推公式(6.22)可得

1μk=2ρ1μk11μk2.\frac {1}{\mu_ {k}} = \frac {2}{\rho} \cdot \frac {1}{\mu_ {k - 1}} - \frac {1}{\mu_ {k - 2}}.

所以

x~(k)x=pk(G)ε0=μkTk(G/ρ)ε0=μk[2GρTk1(G/ρ)Tk2(G/ρ)]ε0=μk[2Gρ1μk1pk1(G)ε01μk2pk2(G)ε0]=μk[2Gρ1μk1(x~(k1)x)1μk2(x~(k2)x)].\begin{array}{l} \tilde {x} ^ {(k)} - x _ {*} = p _ {k} (G) \varepsilon_ {0} = \mu_ {k} T _ {k} (G / \rho) \varepsilon_ {0} \\ = \mu_ {k} \left[ \frac {2 G}{\rho} \cdot T _ {k - 1} (G / \rho) - T _ {k - 2} (G / \rho) \right] \varepsilon_ {0} \\ = \mu_ {k} \left[ \frac {2 G}{\rho} \cdot \frac {1}{\mu_ {k - 1}} p _ {k - 1} (G) \varepsilon_ {0} - \frac {1}{\mu_ {k - 2}} p _ {k - 2} (G) \varepsilon_ {0} \right] \\ = \mu_ {k} \left[ \frac {2 G}{\rho} \cdot \frac {1}{\mu_ {k - 1}} (\tilde {x} ^ {(k - 1)} - x _ {*}) - \frac {1}{\mu_ {k - 2}} (\tilde {x} ^ {(k - 2)} - x _ {*}) \right]. \\ \end{array}

整理后可得

x~(k)=2μkμk1Gρx~(k1)μkμk2x~(k2)+dk,\tilde {x} ^ {(k)} = \frac {2 \mu_ {k}}{\mu_ {k - 1}} \cdot \frac {G}{\rho} \tilde {x} ^ {(k - 1)} - \frac {\mu_ {k}}{\mu_ {k - 2}} \tilde {x} ^ {(k - 2)} + d _ {k},

其中

dk=x2μkμk1Gρx+μkμk2x=x2μkμk1xgρ+μkμk2x=μk(1μk2ρμk1+1μk2)x+2μkgμk1ρ=2μkgμk1ρ.\begin{array}{l} d _ {k} = x _ {*} - \frac {2 \mu_ {k}}{\mu_ {k - 1}} \cdot \frac {G}{\rho} x _ {*} + \frac {\mu_ {k}}{\mu_ {k - 2}} x _ {*} \\ = x ^ {*} - \frac {2 \mu_ {k}}{\mu_ {k - 1}} \cdot \frac {x _ {*} - g}{\rho} + \frac {\mu_ {k}}{\mu_ {k - 2}} x _ {*} \\ = \mu_ {k} \left(\frac {1}{\mu_ {k}} - \frac {2}{\rho \mu_ {k - 1}} + \frac {1}{\mu_ {k - 2}}\right) x _ {*} + \frac {2 \mu_ {k} g}{\mu_ {k - 1} \rho} = \frac {2 \mu_ {k} g}{\mu_ {k - 1} \rho}. \\ \end{array}

由此, 我们可以得到迭代格式 (6.16) 的 Chebyshev 加速方法

算法6.9.Chebyshev加速方法

1: Set μ0=1\mu_0 = 1 , μ1=ρ=ρ(G)\mu_1 = \rho = \rho(G) , x~(0)=x(0)\tilde{x}^{(0)} = x^{(0)} , k=1k = 1
2: compute x~(1)=Gx(0)+g\tilde{x}^{(1)} = Gx^{(0)} + g

3: while not converge do
4: k=k+1k = k + 1

5: μk=(2ρ1μk11μk2)1\mu_{k} = \left(\frac{2}{\rho}\cdot \frac{1}{\mu_{k - 1}} -\frac{1}{\mu_{k - 2}}\right)^{-1}

6: x~(k)=2μkμk1Gρx~(k1)μkμk2x~(k2)+2μkμk1ρg\tilde{x}^{(k)} = \frac{2\mu_k}{\mu_{k - 1}}\cdot \frac{G}{\rho}\tilde{x}^{(k - 1)} - \frac{\mu_k}{\mu_{k - 2}}\tilde{x}^{(k - 2)} + \frac{2\mu_k}{\mu_{k - 1}\rho}\cdot g
7: end while

该方法的每步迭代中只有一次矩阵向量乘积, 故方法每个迭代步的整体运算量与原迭代格式的每个迭代步的运算量基本相当.
λ(G)[α,β]\lambda (G)\in [\alpha ,\beta ] ,且 1<αβ<1,-1 < \alpha \leq \beta < 1, 则我们也可以构造出相应的Chebyshev加速方法