非线性方程的数值方法

迭代法

张瑞
中国科学技术大学数学科学学院

迭代格式

迭代法

定义 1.
设有方程$f(x)=0$的等价形式

\[x=\phi(x) \]

由根附近的某初值$x_0$开始,作序列

\[x_{n+1}=\phi(x_n), n=0,1,2,\cdots \]

$\phi(x)$连续,且

\[\lim_{n\to\infty}x_n=\alpha \]

则有$\alpha=\phi(\alpha)$,即$\alpha$是方程的根。这种求根方法称为迭代方法

例 1. $x=10^x-2$

. 方法1: 作格式

\[x_{n+1}=10^{x_n}-2 \]

$x_0=1$,有

\[x_1=8, x_2=10^8-2 \]

序列无限增大,不收敛。这时,称迭代不收敛

方法2:作格式

\[x_{n+1}=\lg(x_n+2) \]

取初值$x_0=1$,有

\[\begin{aligned} x_1=0.4771, x_2=0.3939, x_3=0.3791, x_4=0.3764, \\ x_5=0.3759, x_6=0.3758, x_7=0.3758, \cdots \end{aligned} \]

序列收敛。可以得到根的近似值为$0.3758$

收敛定理

定理 1.
函数$\phi(x)$$[a,b]$上连续,$(a,b)$内可导,且满足

  1. $x\in[a,b]$时,$\phi(x)\in[a,b]$
  2. $x\in(a,b)$时,$|\phi'(x)|\leq L<1$$L$为常数。

则有

  1. $[a,b]$上,方程$x=\phi(x)$有且仅有一根,记为$\alpha$
  2. $\forall x_0\in[a,b]$,由迭代格式
    \[x_{n+1}=\phi(x_n), n=0,1,2,\cdots \]
    产生的序列$\{x_n\}$收敛到$\alpha$
  3. 有误差估计
    \[|\alpha-x_n|\leq\frac{L^n}{1-m}|x_1-x_0| \]

证明. (1) 令$F(x)=x-\phi(x)$,则有

\[F(a)=a-\phi(a)<0, F(b)=b-\phi(b)>0 \]

由连续函数的介值性,存在至少一个$\xi\in[a,b]$满足

\[F(\xi)=0 \]

即,$\phi(\xi)=\xi$

唯一性: 若有$\alpha,\beta$都满足$\phi(x)=x$,则有

\[\alpha-\beta=\phi(\alpha)-\phi(\beta)=\phi'(\xi)(\alpha-\beta) \]

所以

\[|\alpha-\beta|=|\phi'(\xi)||\alpha-\beta|\leq L |\alpha-\beta| \]

$L<1$,则有

\[|\alpha-\beta|=0 \]

即,$\alpha=\beta$

(2) 设$\alpha=\phi(\alpha)$,则

\[x_{n+1}-\alpha=\phi(x_n)-\phi(\alpha)=\phi'(\xi)(x_n-\alpha) \]

所以

\[|x_{n+1}-\alpha|=|\phi'(\xi)(x_n-\alpha)|\leq L|x_n-\alpha| \]

这样,

\[\begin{aligned} |x_{n+1}-\alpha|&\leq L|x_n-\alpha|\leq L^2|x_{n-1}-\alpha| \\ &\leq L^3|x_{n-2}-\alpha|\leq ... \\ &\leq L^{n+1}|x_0-\alpha| \end{aligned} \]

$0<L<1$,数列$x_n$收敛到$\alpha$

(3) 由

\[x_{n+1}-x_n=\phi(x_n)-\phi(x_{n-1})=\phi'(\xi)(x_n-x_{n-1}) \]

可得

\[|x_{n+1}-x_n|=|\phi'(\xi)(x_n-x_{n-1})|\leq L |x_n-x_{n-1}| \]

这样,有

\[\begin{aligned} |x_{n+1}-x_n|&\leq L |x_n-x_{n-1}|\leq L^2 |x_{n-1}-x_{n-2}| \\ &\leq L^3 |x_{n-2}-x_{n-3}|\leq\cdots \\ &\leq L^{n} |x_{1}-x_{0}| \end{aligned} \]

对任意自然数$p$,有

\[\begin{aligned} |x_{n+p}-x_n|\leq&|x_{n+p}-x_{n+p-1}|+|x_{n+p-1}-x_{n+p-2}|\\ &+\cdots+|x_{n+1}-x_n| \\ \leq &(L^{n+p-1}+L^{n+p-2}+\cdots L^n)|x_1-x_0| \\ =&\frac{L^n-L^{n+p}}{1-L}|x_1-x_0| \\ \leq&\frac{L^n}{1-L}|x_1-x_0| \end{aligned} \]

$p\to\infty$,则有

\[|\alpha-x_n|\leq\frac{L^n}{1-L}|x_1-x_0| \]

定义 2.
迭代序列$\{x_n\}$收敛到$\alpha$,且$e_k=\alpha-x_k\neq 0$,若存在常数$r\geq 1$和常数$c>0$,使得

\[\lim_{k\to\infty}\frac{|e_{k+1}|}{|e_k|^r}=c \]

成立,则称迭代格式是r阶收敛的

$r=1$时,称格式是线性收敛的。$r>1$时,称为超线性收敛$r=2$时,称为平方收敛

定理 2.
$\alpha$满足$\alpha=\phi(\alpha)$,整数$n>1$$\phi(x)$$\alpha$附近具有$n$阶连续导数,且

\[\phi^{(k)}(\alpha)=0, k=1,2,\cdots,n-1; \phi^{(n)}(\alpha)\neq 0 \]

则迭代格式

\[x_{k+1}=\phi(x_k), k=0,1,2,\cdots \]

$n$阶收敛的,且有

\[\lim_{k\to\infty}\frac{|e_{k+1}|}{|e_k|^n}=\frac{|\phi^{(n)}(\alpha)|}{n!} \]

证明. 由Taylor公式

\[\begin{aligned} \phi(x_k)=&\phi(\alpha)+\phi'(\alpha)(x_k-\alpha)+\cdots\\ &+\frac{\phi^{(n-1)}(\alpha)}{(n-1)!}(x_k-\alpha)^{n-1} +\frac{\phi^{(n)}(\xi)}{n!}(x_k-\alpha)^{n} \\ =&\phi(\alpha)+\frac{\phi^{(n)}(\xi)}{n!}(x_k-\alpha)^{n} \end{aligned} \]

则有

\[|e_{k+1}|=|\phi(x_k)-\phi(\alpha)|=\frac{|\phi^{(n)}(\xi)|}{n!}|e_k|^n \]

例 2. 为求方程$x^3+2x-5-0$$[1,2]$内的根,产生如下的迭代格式

\[x_{k+1}=\sqrt[3]{5-2x_k} \]

给出该格式的收敛性和收敛阶。

. 由题知,

\[\phi(x)=\sqrt[3]{5-2x} \]

在区间$[1,2]$内,有

\[|\phi'(x)|=|\frac13\frac{-2}{(5-2x)^{\frac23}}|\leq\frac23<1 \]

所以,迭代格式是收敛的。

在根$\alpha$处,有

\[\phi'(\alpha)=-\frac{2}{3(5-2x)^{\frac23}}=\frac{-2}{3\alpha^2}\neq 0 \]

格式是线性收敛的。

Steffensen加速收敛

若格式是线性收敛的,即有

\[\lim_{k\to\infty}\frac{x_{k+1}-\alpha}{x_k-\alpha}=c \]

则,当$k$充分大时,有

\[x_{k+1}-\alpha\approx c(x_k-\alpha), x_{k+2}-\alpha \approx c(x_{k+1}-\alpha) \]

则有

\[\frac{x_{k+2}-\alpha}{x_{k+1}-\alpha}\approx\frac{x_{k+1}-\alpha}{x_k-\alpha} \]

这样,可以得到

\[\alpha\approx x_k-\frac{(x_{k+1}-x_k)^2}{x_{k+2}-2x_{k+1}+x_k} \]

得到的表达式作为$\alpha$近似值,会比$x_{k+1}$, $x_{k+2}$更好。

设计格式为

\[\begin{cases} y_k=\phi(x_k), z_k=\phi(y_k) \\ x_{k+1}=x_k-\frac{(y_k-x_k)^2}{z_k-2y_k+x_k} \end{cases} , k=0,1,2,\cdots \]

称为史蒂芬森加速迭代法(Steffensen)。

定理 3.
$\alpha=\phi(\alpha)$$\phi(x)$在包含$\alpha$的某个开区间内具有连续的二阶导数, 并且$\phi'(\alpha)\neq 1$,则如上的迭代格式至少二阶收敛。

例 3. 将Steffensen加速应用到解$x=10^x-2$方程的两种格式中。

  1. $x_{n+1}=10^{x_n}-2$
  2. $x_{n+1}=\lg(x_n+2)$

.

用Steffensen加速  x= log_{10}(x+2)
0 0.5
1 0.375935526659935
2 0.37581208772453945
3 0.3758120875934263
4 0.3758120875934263
迭代收敛
不收敛格式的Steffen加速  x=10^x-2 
0 0.5
1 0.459030642738056
2 0.4177856359561663
3 0.3878203271079459
4 0.3768844259181736
5 0.37582092149660973
6 0.37581208819484646
7 0.3758120875934263
8 0.37581208759342627
迭代收敛

目录

本节读完

例 4.

4.