迭代过程的收敛速度,是指迭代误差的下降速度。迭代法的收敛速度一般用收敛阶来描述。
定义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 p≥1,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 limk→∞ekpek+1=C
成立(其中 e k = ∣ x k − x ∗ ∣ e_k=|x_k-x^*| ek=∣xk−x∗∣),则称该迭代法时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+1−x∗=φ(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+1−x∗=φ(xk)−φ(x∗)=φ′(ξ)(xk−x∗)
ξ \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+1−x∗,ek=xk−x∗,所以当 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∗)=⋯=φ(p−1)(x∗)=0,φ(p)(x∗)=0,则迭代过程 x k + 1 = φ ( x k ) x_{k+1}=\varphi(x_k) xk+1=φ(xk)是p阶收敛的。
在用迭代法求解方程的根时,可以先判断迭代函数的收敛速度,然后再具体计算。
一个收敛的迭代过程,只要迭代次数足够多,就可以使计算结果达到任意指定的精度。但是,如果收敛过程过于缓慢、计算工作量过大,则在实际计算过程往往要考虑加速收敛过程的问题。
设 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) x∗−x^k+1=φ(x∗)−φ(xk)=φ′(ξ)(x∗−xk)
其中, ξ \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) x∗−x^k+1≈q(x∗−xk)
从而
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 x∗≈1−q1x^k+1−1−qqxk
故
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+(x∗−x^k+1)=1−q1x^k+1−1−qqxk(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+1−qq(x^k+1−xk),其中 ∣ q ∣ < 1 |q|<1 ∣q∣<1。
在公式(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),x∗−x^k+1=q(x∗−xk)
故将迭代值 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),x∗−xk+1=q(x∗−x^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})} x∗−xk+1x∗−x^k+1=(x∗−x^k+1)(x∗−xk)
解得
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} x∗≈xk+1−x^k+1−2x^k+1+xk(xk+1−x^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+1−x^k+1−2x^k+1+xk(xk+1−x^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)(x1−x1(1))
解出 x 1 x_1 x1,即得Aitken加速公式。