一般迭代法(二)| 迭代法的收敛速度(收敛阶)+收敛过程的加速(Aitken加速法)

1. 迭代法的收敛速度

迭代过程的收敛速度,是指迭代误差的下降速度。迭代法的收敛速度一般用收敛阶来描述。

定义2:对于收敛的迭代法 x k + 1 = φ ( x k ) , ( k = 1 , 2 , ⋯   ) x_{k+1}=\varphi(x_k),(k=1,2,\cdots) xk+1=φ(xk),(k=1,2,),如果存在常数 p ≥ 1 , c > 0 p\geq 1,c>0 p1,c>0,使得
l i m k → ∞ e k + 1 e k p = C lim_{k\to\infty}\frac{e_{k+1}}{e^p_k}=C limkekpek+1=C
成立(其中 e k = ∣ x k − x ∗ ∣ e_k=|x_k-x^*| ek=xkx),则称该迭代法时p阶(次)收敛的。特别地,当 p = 1 p=1 p=1时称为线性收敛, p = 2 p=2 p=2时称为平方收敛。

例2:讨论一般迭代法 x k + 1 = φ ( x k ) , ( k = 1 , 2 , ⋯   ) x_{k+1}=\varphi(x_k),(k=1,2,\cdots) xk+1=φ(xk),(k=1,2,)的收敛速度。

:令 x ∗ = φ ( x ∗ ) x^*=\varphi(x^*) x=φ(x),所以 x k + 1 − x ∗ = φ ( x k ) − φ ( x ∗ ) x_{k+1}-x^*=\varphi(x_k)-\varphi(x^*) xk+1x=φ(xk)φ(x)。根据中值定理,有
x k + 1 − x ∗ = φ ( x k ) − φ ( x ∗ ) = φ ′ ( ξ ) ( x k − x ∗ ) x_{k+1}-x^*=\varphi(x_k)-\varphi(x^*)=\varphi'(\xi)(x_k-x^*) xk+1x=φ(xk)φ(x)=φ(ξ)(xkx)
ξ \xi ξ x k x_k xk x ∗ x^* x之间的某一点。

因为 e k + 1 = x x + 1 − x ∗ , e k = x k − x ∗ e_{k+1}=x_{x+1}-x^*,e_k=x_k-x^* ek+1=xx+1x,ek=xkx,所以当 x k x_k xk在根 x ∗ x^* x附近时,有 e k + 1 = φ ′ ( x ∗ ) e k e_{k+1}=\varphi'(x^*)e_k ek+1=φ(x)ek

可见,当 φ ( x ∗ ) ≠ 0 \varphi(x^*)\neq 0 φ(x)=0时,一般迭代法 x k + 1 = φ ( x k ) , ( k = 1 , 2 , ⋯   ) x_{k+1}=\varphi(x_k),(k=1,2,\cdots) xk+1=φ(xk),(k=1,2,),具有线性收敛性。

定理3:对于迭代过程 x k + 1 = φ ( x k ) x_{k+1}=\varphi(x_k) xk+1=φ(xk),如果迭代函数 φ ( x ) \varphi(x) φ(x)在所求根 x ∗ x^* x的邻近有连续二阶导数,且 ∣ φ ′ ( x ∗ ) < 1 ∣ |\varphi'(x^*)<1| φ(x)<1,则有:

(1)当 φ ′ ( x ∗ ) ≠ 0 \varphi'(x^*)\neq 0 φ(x)=0时,迭代过程为线性收敛;

(2)当 φ ′ ( x ∗ ) = 0 \varphi'(x^*)=0 φ(x)=0,而 φ ′ ′ ( x ∗ ) ≠ 0 \varphi''(x^*)\neq 0 φ(x)=0时,迭代过程为平方收敛。

一般迭代法的收敛速度还可以是p阶收敛的。设 φ ( x ) \varphi(x) φ(x) x = φ ( x ) x=\varphi(x) x=φ(x)的根 x ∗ x^* x附近有连续的p阶导数,且 φ ′ ( x ∗ ) = φ ′ ′ ( x ∗ ) = ⋯ = φ ( p − 1 ) ( x ∗ ) = 0 , φ ( p ) ( x ∗ ) ≠ 0 \varphi'(x^*)=\varphi''(x^*)=\cdots=\varphi^{(p-1)}(x^*)=0,\varphi^{(p)}(x^*)\neq 0 φ(x)=φ(x)==φ(p1)(x)=0,φ(p)(x)=0,则迭代过程 x k + 1 = φ ( x k ) x_{k+1}=\varphi(x_k) xk+1=φ(xk)是p阶收敛的。

在用迭代法求解方程的根时,可以先判断迭代函数的收敛速度,然后再具体计算。

2. 收敛过程的加速

一个收敛的迭代过程,只要迭代次数足够多,就可以使计算结果达到任意指定的精度。但是,如果收敛过程过于缓慢、计算工作量过大,则在实际计算过程往往要考虑加速收敛过程的问题。

  1. 迭代公式的改进

x ^ k + 1 \hat x_{k+1} x^k+1表示由 x k x_k xk经过一次迭代后所得到的结果 x ^ k + 1 = φ ( x k ) \hat x_{k+1}=\varphi(x_k) x^k+1=φ(xk),有微分中值定理,有
x ∗ − x ^ k + 1 = φ ( x ∗ ) − φ ( x k ) = φ ′ ( ξ ) ( x ∗ − x k ) x^*-\hat x_{k+1}=\varphi(x^*)-\varphi(x_k)=\varphi'(\xi)(x^*-x_k) xx^k+1=φ(x)φ(xk)=φ(ξ)(xxk)
其中, ξ \xi ξ x k x_k xk x ∗ x^* x之间的某一点。假设 ξ ′ ( x ) \xi'(x) ξ(x)在求根范围内变化不大,可以近似地看成某个定值q,根据迭代法的收敛条件,有 ∣ q ∣ < 1 |q|<1 q<1。于是有:
x ∗ − x ^ k + 1 ≈ q ( x ∗ − x k ) x^*-\hat x_{k+1}\approx q(x^*-x_k) xx^k+1q(xxk)
从而
x ∗ ≈ 1 1 − q x ^ k + 1 − q 1 − q x k x^*\approx \frac{1}{1-q}\hat x_{k+1}-\frac{q}{1-q}x_k x1q1x^k+11qqxk

x k + 1 = x ^ k + 1 + ( x ∗ − x ^ k + 1 ) = 1 1 − q x ^ k + 1 − q 1 − q x k (3) x_{k+1}=\hat x_{k+1}+(x^*-\hat x_{k+1})=\frac{1}{1-q}\hat x_{k+1}-\frac{q}{1-q}x_k \tag{3} xk+1=x^k+1+(xx^k+1)=1q1x^k+11qqxk(3)
x k + 1 x_{k+1} xk+1 x ^ k + 1 \hat x_{k+1} x^k+1更接近根 x ∗ x^* x。因此,迭代收敛的过程得到了加速。

构造一般迭代法加速公式的具体方法如下:

(1) x ^ k + 1 = φ ( x k ) \hat x_{k+1}=\varphi(x_k) x^k+1=φ(xk)

(2) x k + 1 = x ^ k + 1 + q 1 − q ( x ^ k + 1 − x k ) x_{k+1}=\hat x_{k+1}+\frac{q}{1-q}(\hat x_{k+1}-x_k) xk+1=x^k+1+1qq(x^k+1xk),其中 ∣ q ∣ < 1 |q|<1 q<1

  1. Aitken(埃特金)加速法

在公式(3)中确定q时,需要计算迭代函数的导数 φ ′ ( x ) \varphi'(x) φ(x)。这在实际计算中是不太方便的,因此可以作进一步改进。由于在上面已有:
x ^ k + 1 = φ ( x k ) , x ∗ − x ^ k + 1 = q ( x ∗ − x k ) \hat x_{k+1}=\varphi(x_k),\quad x^*-\hat x_{k+1}=q(x^*-x_k) x^k+1=φ(xk),xx^k+1=q(xxk)
故将迭代值 x ^ k + 1 \hat x_{k+1} x^k+1再进行一次迭代计算,得:
x ‾ k + 1 = φ ( x ^ k + 1 ) , x ∗ − x ‾ k + 1 = q ( x ∗ − x ^ k + 1 ) \overline x_{k+1}=\varphi(\hat x_{k+1}),\quad x^*- \overline x_{k+1}=q(x^*-\hat x_{k+1}) xk+1=φ(x^k+1),xxk+1=q(xx^k+1)
所以
x ∗ − x ^ k + 1 x ∗ − x ‾ k + 1 = ( x ∗ − x k ) ( x ∗ − x ^ k + 1 ) \frac{x^*-\hat x_{k+1}}{x^*-\overline x_{k+1}}=\frac{(x^*-x_k)}{(x^*-\hat x_{k+1})} xxk+1xx^k+1=(xx^k+1)(xxk)
解得
x ∗ ≈ x ‾ k + 1 − ( x ‾ k + 1 − x ^ k + 1 ) 2 x ^ k + 1 − 2 x ^ k + 1 + x k x^*\approx \overline x_{k+1}-\frac{(\overline x_{k+1}-\hat x_{k+1})^2}{\hat x_{k+1}-2\hat x_{k+1}+x_k} xxk+1x^k+12x^k+1+xk(xk+1x^k+1)2
于是,就有如下迭代公式:
( 1 ) x ^ k + 1 = φ ( x k ) ( 2 ) x ‾ k + 1 = φ ( x ^ k + 1 ) ( 3 ) x k + 1 = x ‾ k + 1 − ( x ‾ k + 1 − x ^ k + 1 ) 2 x ^ k + 1 − 2 x ^ k + 1 + x k (1)\hat x_{k+1}=\varphi(x_k) \quad(2)\overline x_{k+1}=\varphi(\hat x_{k+1}) \quad (3)x_{k+1}=\overline x_{k+1}-\frac{(\overline x_{k+1}-\hat x_{k+1})^2}{\hat x_{k+1}-2\hat x_{k+1}+x_k} (1)x^k+1=φ(xk)(2)xk+1=φ(x^k+1)(3)xk+1=xk+1x^k+12x^k+1+xk(xk+1x^k+1)2
Aitken加速法的几何解释如下图所示。假设 x 0 x_0 x0为方程 x = g ( x ) x=g(x) x=g(x)的一个近似根,由 x 1 ( 1 ) = g ( x 0 ) x_1^{(1)}=g(x_0) x1(1)=g(x0) x 1 ( 2 ) = g ( x 1 ( 1 ) ) x_1^{(2)}=g(x_1^{(1)}) x1(2)=g(x1(1)),在曲线上 y = g ( x ) y=g(x) y=g(x)上可以定出两点 p 0 ( x 0 , x 1 ( 1 ) ) p_0(x_0,x_1^{(1)}) p0(x0,x1(1)) p 1 ( x 1 ( 1 ) , x 1 ( 2 ) ) p_1(x_1^{(1)},x_1^{(2)}) p1(x1(1),x1(2)),作弦线 p 0 p 1 ‾ \overline{p_0p_1} p0p1与直线 y = x y=x y=x交于p。则p点坐标 x 1 x_1 x1满足:
x 1 = x 1 ( 1 ) + x 1 ( 2 ) − x 1 ( 1 ) x 1 ( 1 ) − x 0 ( x 1 − x 1 ( 1 ) ) x_1=x_1^{(1)}+\frac{x_1^{(2)}-x_1^{(1)}}{x_1^{(1)}-x_0}(x_1-x_1^{(1)}) x1=x1(1)+x1(1)x0x1(2)x1(1)(x1x1(1))
解出 x 1 x_1 x1,即得Aitken加速公式。

一般迭代法(二)| 迭代法的收敛速度(收敛阶)+收敛过程的加速(Aitken加速法)_第1张图片

你可能感兴趣的:(数值计算)