解非线性方程的迭代法
一、方程求根与二分法
1.引言
考虑单变量非线性方程
f
(
x
)
=
0
f(x)=0
f(x)=0的求根问题,其中
x
∈
R
,
f
(
x
)
∈
C
[
a
,
b
]
x\in R,f(x)\in C[a,b]
x∈R,f(x)∈C[a,b]
非线性方程分两类:
1.代数方程
a
0
x
n
+
a
1
x
n
−
1
+
.
.
.
+
a
n
−
1
x
+
a
n
=
0
a_0x^n+a_1x^{n-1}+...+a_{n-1}x+a_n=0
a0xn+a1xn−1+...+an−1x+an=0
其中
a
0
≠
0
,
a
i
∈
R
(
i
=
0
,
1
,
.
.
.
,
n
)
.
如
:
x
3
−
x
−
1
=
0
a_0\not= 0,a_i\in R(i=0,1,...,n).如:x^3-x-1=0
a0=0,ai∈R(i=0,1,...,n).如:x3−x−1=0
2.超越方程,如:
x
−
e
−
x
=
0
x-e^{-x}=0
x−e−x=0
如果
f
(
x
)
f(x)
f(x)可以分解为
f
(
x
)
=
(
x
−
x
∗
)
m
g
(
x
)
f(x)=(x-x^*)^mg(x)
f(x)=(x−x∗)mg(x),其中
0
<
∣
g
(
x
)
∣
<
∞
0<\lvert g(x) \rvert<\infty
0<∣g(x)∣<∞,
m
m
m为正整数,则称
x
∗
x^*
x∗为
f
(
x
)
f(x)
f(x)的
m
m
m重零点
此时
f
(
x
∗
)
=
f
′
(
x
∗
)
=
.
.
.
=
f
(
m
−
1
)
(
x
∗
)
=
0
,
f
(
m
)
(
x
∗
)
≠
0
f(x^*)=f^{'}(x^*)=...=f^{(m-1)}(x^*)=0,f^{(m)}(x^*)\not=0
f(x∗)=f′(x∗)=...=f(m−1)(x∗)=0,f(m)(x∗)=0
2.二分法
f
(
x
)
f(x)
f(x)在单调的情况下,在有根区间
[
a
,
b
]
[a,b]
[a,b]中
判断:
f
(
a
)
⋅
f
(
b
)
<
0
f(a)\cdot f(b)<0
f(a)⋅f(b)<0,取
x
0
=
(
a
+
b
)
/
2
x_0=(a+b)/2
x0=(a+b)/2假如
f
(
x
0
)
f(x_0)
f(x0)是
f
(
x
)
f(x)
f(x)的零点,那么输出
x
0
x_0
x0,停止,假若不然
若
f
(
a
)
⋅
f
(
x
0
)
<
0
f(a)\cdot f(x_0)<0
f(a)⋅f(x0)<0,则
a
1
=
a
,
b
1
=
x
0
,
x
1
=
(
a
1
+
b
1
)
/
2
a_1=a,b1=x_0,x_1=(a_1+b_1)/2
a1=a,b1=x0,x1=(a1+b1)/2
否则
f
(
b
)
⋅
f
(
x
0
)
<
0
f(b)\cdot f(x_0)<0
f(b)⋅f(x0)<0,
a
1
=
x
0
,
b
1
=
b
,
x
1
=
(
a
1
+
b
1
)
/
2
a_1=x_0,b_1=b,x_1=(a_1+b_1)/2
a1=x0,b1=b,x1=(a1+b1)/2
判断:…
…
特点:必然收敛, x k = ( a k + b k ) / 2 → x ∗ x_k=(a_k+b_k)/2\rightarrow x^* xk=(ak+bk)/2→x∗,速度慢
二、迭代法
1.不动点迭代
将非线性方程
f
(
x
)
=
0
f(x)=0
f(x)=0化为等式
x
=
φ
(
x
)
x=\varphi (x)
x=φ(x)
f
(
x
∗
)
=
0
⇔
x
∗
=
φ
(
x
∗
)
f(x^*)=0\Leftrightarrow x^*=\varphi (x^*)
f(x∗)=0⇔x∗=φ(x∗)
则称
x
∗
x^*
x∗为函数
φ
(
x
)
\varphi (x)
φ(x)的一个不动点
步骤:给定初始近似值
x
0
x_0
x0,可以得到
x
1
=
φ
(
x
0
)
x_1=\varphi (x_0)
x1=φ(x0)
如此反复,构造迭代公式
x
k
+
1
=
φ
(
x
k
)
,
k
=
0
,
1
,
2...
x_{k+1}=\varphi (x_k),k=0,1,2...
xk+1=φ(xk),k=0,1,2...称
φ
(
x
)
\varphi (x)
φ(x)为迭代函数
2.不动点的存在性和迭代法的收敛性
定理一
φ
(
x
)
∈
C
[
a
,
b
]
,
\varphi (x)\in C[a,b],
φ(x)∈C[a,b],并且
(1)
∀
x
∈
[
a
,
b
]
\forall x \in[a,b]
∀x∈[a,b],都有
φ
(
x
)
∈
[
a
,
b
]
\varphi (x) \in[a,b]
φ(x)∈[a,b]
(2)
∃
0
≤
L
≤
1
\exists 0 \leq L\leq 1
∃0≤L≤1,使得
∀
x
,
y
∈
[
a
,
b
]
\forall x ,y \in[a,b]
∀x,y∈[a,b],都有
∣
φ
(
x
)
−
φ
(
y
)
∣
≤
∣
x
−
y
∣
\lvert \varphi (x)-\varphi (y) \rvert \leq \lvert x-y \rvert
∣φ(x)−φ(y)∣≤∣x−y∣,那么
φ
(
x
)
\varphi (x)
φ(x)在
[
a
,
b
]
[a,b]
[a,b]上存在唯一的不动点
定理二
由迭代得到的迭代序列
{
x
k
}
\lbrace x_k\rbrace
{xk}
∣
x
k
+
1
−
x
k
∣
≤
L
∣
x
k
−
x
k
−
1
∣
\lvert x_{k+1}-x_k \rvert \leq L \lvert x_{k}-x_{k-1} \rvert
∣xk+1−xk∣≤L∣xk−xk−1∣
∣
x
k
−
x
∗
∣
≤
1
1
−
L
∣
x
k
+
1
−
x
k
∣
\lvert x_k-x^* \rvert \leq \frac{1}{1-L} \lvert x_{k+1}-x_k \rvert
∣xk−x∗∣≤1−L1∣xk+1−xk∣
误差估计:
∣
x
k
−
x
∗
∣
≤
L
k
1
−
L
∣
x
1
−
x
0
∣
\lvert x_k-x^* \rvert \leq \frac{L^k}{1-L} \lvert x_1-x_0 \rvert
∣xk−x∗∣≤1−LLk∣x1−x0∣
推论
若
φ
(
x
)
∈
C
1
[
a
,
b
]
,
\varphi (x)\in C^1[a,b],
φ(x)∈C1[a,b],并且
(1)
∀
x
∈
[
a
,
b
]
\forall x \in[a,b]
∀x∈[a,b],都有
φ
(
x
)
∈
[
a
,
b
]
\varphi (x) \in[a,b]
φ(x)∈[a,b]
(2)
∃
0
≤
L
≤
1
\exists 0 \leq L\leq 1
∃0≤L≤1,使得
∀
x
∈
[
a
,
b
]
\forall x \in[a,b]
∀x∈[a,b],都有
φ
′
(
x
)
≤
L
<
1
\varphi ^{'}(x) \leq L<1
φ′(x)≤L<1 ,那么
1)方程
f
(
x
)
=
0
f(x)=0
f(x)=0在
[
a
,
b
]
[a,b]
[a,b]上有唯一的根
x
∗
x^*
x∗
2)对于任意初值
x
0
∈
[
a
,
b
]
x_0 \in[a,b]
x0∈[a,b],迭代序列均收敛于
x
∗
x^*
x∗
3)满足以上误差估计
定理三
只在不动点
x
∗
x^*
x∗附近考察收敛性,称为局部收敛性。
设
x
∗
x^*
x∗为
φ
(
x
)
\varphi (x)
φ(x)的不动点,
φ
′
(
x
)
\varphi ^{'}(x)
φ′(x)在x的某个领域内连续,且
∣
φ
′
(
x
∗
)
∣
<
1
\lvert \varphi ^{'}(x^*) \rvert <1
∣φ′(x∗)∣<1 ,那么d迭代法局部收敛
定理四
设
x
k
+
1
=
φ
(
x
k
)
x_{k+1}=\varphi (x_k)
xk+1=φ(xk)收敛于
x
∗
x^*
x∗,设误差
e
k
=
x
k
−
x
∗
e_k=x_k-x^*
ek=xk−x∗,若
lim
k
→
∞
e
k
+
1
e
k
p
=
C
\lim_{k \to \infty}\frac{e_{k+1}}{e^p_k}=C
limk→∞ekpek+1=C,C是不等于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^*)=...=\varphi ^{(p-1)}(x^*)=0,\varphi ^{p}(x^*)\not=0
φ′(x∗)=φ′′(x∗)=...=φ(p−1)(x∗)=0,φp(x∗)=0,那么迭代过程在
x
∗
x^*
x∗附近是p阶收敛的(
φ
(
x
k
)
\varphi (x_k)
φ(xk)泰勒展开式可证)
三、迭代收敛的加速方法
1.埃特金加速收敛方法
已知
x
1
−
x
∗
=
φ
(
x
0
)
−
φ
(
x
∗
)
x_1-x^*=\varphi (x_0)-\varphi (x^*)
x1−x∗=φ(x0)−φ(x∗)
x
2
−
x
∗
=
φ
(
x
1
)
−
φ
(
x
∗
)
x_2-x^*=\varphi (x_1)-\varphi (x^*)
x2−x∗=φ(x1)−φ(x∗)
若
φ
′
(
x
)
\varphi^{'} (x)
φ′(x)变化不大,
φ
′
(
x
)
≈
L
\varphi^{'} (x)\approx L
φ′(x)≈L,则
x
1
−
x
∗
=
φ
(
x
0
)
−
φ
(
x
∗
)
≈
L
(
x
0
−
x
∗
)
x_1-x^*=\varphi (x_0)-\varphi (x^*)\approx L(x_0-x^*)
x1−x∗=φ(x0)−φ(x∗)≈L(x0−x∗) (1)
x
2
−
x
∗
=
φ
(
x
1
)
−
φ
(
x
∗
)
≈
L
(
x
1
−
x
∗
)
x_2-x^*=\varphi (x_1)-\varphi (x^*)\approx L(x_1-x^*)
x2−x∗=φ(x1)−φ(x∗)≈L(x1−x∗) (2)
由(1)(2)消去L得
x
1
−
x
∗
x
2
−
x
∗
≈
x
0
−
x
∗
x
1
−
x
∗
\frac{x_1-x^*}{x_2-x^*}\approx \frac{x_0-x^*}{x_1-x^*}
x2−x∗x1−x∗≈x1−x∗x0−x∗可得
x
∗
x^*
x∗的表达式
x
∗
≈
x
0
x
2
−
x
1
2
x
2
−
2
x
1
+
x
0
=
x
0
−
(
x
1
−
x
0
)
2
x
0
−
2
x
1
+
x
2
x^*\approx \frac{x_0x_2-x^2_1}{x_2-2x_1+x_0}=x_0- \frac{(x_{1}-x_{0})^2}{x_{0}-2x_{1}+x_{2}}
x∗≈x2−2x1+x0x0x2−x12=x0−x0−2x1+x2(x1−x0)2
转化为通式
x
ˉ
k
+
1
=
x
k
−
(
x
k
+
1
−
x
k
)
2
x
k
−
2
x
k
+
1
+
x
k
+
2
\bar{x}_{k+1}=x_k- \frac{(x_{k+1}-x_{k})^2}{x_{k}-2x_{k+1}+x_{k+2}}
xˉk+1=xk−xk−2xk+1+xk+2(xk+1−xk)2
2.斯特芬森迭代法
埃特金加速收敛方法是不管原序列
x
k
{x_k}
xk是怎样产生的,对
x
k
{x_k}
xk进行加速计算,得到
x
ˉ
k
{\bar{x}_k}
xˉk序列,斯特芬森迭代法将埃特金加速收敛方法和不动点迭代结合,得:
f
(
n
)
=
{
y
k
=
φ
(
x
k
)
,
z
k
=
φ
(
y
k
)
x
k
+
1
=
x
k
−
(
y
k
−
x
k
)
2
z
k
−
2
y
k
+
x
k
k
=
0
,
1
,
.
.
.
,
f(n) = \begin{cases} y_k=\varphi (x_k), z_k=\varphi (y_k)\\ x_{k+1}=x_k- \frac{(y_{k}-x_{k})^2}{z_{k}-2y_{k}+x_{k}}\\ \end{cases} k=0,1,...,
f(n)={yk=φ(xk),zk=φ(yk)xk+1=xk−zk−2yk+xk(yk−xk)2k=0,1,...,
将上式写为不动点迭代形式
x
k
+
1
=
φ
(
x
k
)
,
k
=
0
,
1
,
.
.
.
,
x_{k+1}=\varphi (x_k),k=0,1,...,
xk+1=φ(xk),k=0,1,...,
其中
ψ
(
x
)
=
x
−
(
φ
(
x
)
−
x
)
2
φ
(
φ
(
x
)
)
−
2
φ
(
x
)
+
x
\psi(x)=x- \frac{(\varphi (x)-x)^2}{\varphi(\varphi (x))-2\varphi (x)+x}
ψ(x)=x−φ(φ(x))−2φ(x)+x(φ(x)−x)2
定理五
若
x
∗
x^*
x∗为
ψ
(
x
)
\psi(x)
ψ(x)函数的不动点,则
x
∗
x^*
x∗为
φ
(
x
)
\varphi (x)
φ(x)函数的不动点;反之若
x
∗
x^*
x∗为
φ
(
x
)
\varphi (x)
φ(x)函数的不动点,设
φ
′
′
(
x
)
\varphi ^{''}(x)
φ′′(x)存在,且
φ
′
(
x
)
≠
1
\varphi ^{'}(x)\not=1
φ′(x)=1,则
x
∗
x^*
x∗为
ψ
(
x
)
\psi(x)
ψ(x)函数的不动点,且斯特芬森迭代法是二阶收敛的,粗略理解一下二阶收敛,这意味着每迭代一次,牛顿法结果的有效数字将增加一倍。
斯特芬森迭代法可以让不原本不收敛的迭代法可能收敛,例如
x
k
+
1
=
x
k
3
−
1
,
φ
(
x
)
=
x
3
−
1
x_{k+1}=x_k^{3}-1,\varphi (x)=x^3-1
xk+1=xk3−1,φ(x)=x3−1。
四、牛顿法
1.牛顿法及其收敛性
思想:将非线性方程
f
(
x
)
=
0
f(x)=0
f(x)=0逐步归结为某种线性方程来求解
设已知方程的近似根
x
k
x_k
xk(假定
f
′
(
x
)
≠
0
f^{'}(x)\not=0
f′(x)=0),将函数
f
(
x
)
f(x)
f(x)在点
x
k
x_k
xk展开,有
f
(
x
)
≈
f
(
x
k
)
+
f
′
(
x
k
)
(
x
−
x
k
)
f(x)\approx f(x_k)+f^{'}(x_k)(x-x_k)
f(x)≈f(xk)+f′(xk)(x−xk)
于是方程可以近似的表示为
f
(
x
k
)
+
f
′
(
x
k
)
(
x
−
x
k
)
=
0
f(x_k)+f^{'}(x_k)(x-x_k)=0
f(xk)+f′(xk)(x−xk)=0
方程变为了线性格式,将方程修改为迭代格式
x
k
+
1
=
x
k
−
f
(
x
k
)
f
′
(
x
k
)
,
k
=
0
,
1
,
2...
,
x_{k+1}=x_{k}- \frac{f(x_k)}{f^{'}(x_k)},k=0,1,2...,
xk+1=xk−f′(xk)f(xk),k=0,1,2...,
x
=
φ
(
x
)
x=\varphi (x)
x=φ(x)其中,
φ
(
x
)
=
x
−
f
(
x
k
)
f
′
(
x
k
)
\varphi (x)=x- \frac{f(x_k)}{f^{'}(x_k)}
φ(x)=x−f′(xk)f(xk)
假定
x
∗
是
f
(
x
)
x^*是f(x)
x∗是f(x)的一个单根,即
f
(
x
∗
)
=
0
f(x^*)=0
f(x∗)=0,
f
′
(
x
∗
)
≠
0
,
f
′
′
(
x
∗
)
≠
0
f^{'}(x^*)\not=0,f^{''}(x^*)\not=0
f′(x∗)=0,f′′(x∗)=0,
φ
′
(
x
∗
)
=
0
,
φ
′
′
(
x
∗
)
≠
0
\varphi ^{'}(x^*)=0,\varphi ^{''}(x^*)\not=0
φ′(x∗)=0,φ′′(x∗)=0,由定理四可得牛顿法在根邻近是平方收敛。