文章目录
非线性方程求根
主要讨论单变量非线性方程:
f
(
x
)
=
0
(
2.1
)
f(x)=0\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (2.1)
f(x)=0 (2.1)的求根问题,
x
∈
R
,
f
(
x
)
∈
C
[
a
,
b
]
x\in R\ \ ,\ \ f(x)\in C[a,b]
x∈R , f(x)∈C[a,b].
(1)“根在哪里”,即确定根所在的区间,进行根的隔离。
(2)“根的求法”,通过数值方法,近似求解,并保证精度要求。
若 f ( x ) ∈ C [ a , b ] f(x)\in C[a,b] f(x)∈C[a,b] 且 f ( a ) f ( b ) < 0 f(a)f(b)<0 f(a)f(b)<0 ,根据闭区间上连续函数性质可知 f ( x ) = 0 f(x)=0 f(x)=0 在 ( a , b ) (a,b) (a,b) 内至少有一个实根,称 [ a , b ] [a,b] [a,b] 为方程(2.1)的有根区间。
二分法
若 f ( x ) ∈ C [ a , b ] f(x)\in C[a,b] f(x)∈C[a,b] 且 f ( a ) f ( b ) < 0 f(a)f(b)<0 f(a)f(b)<0 ,根据连续函数性质可知 f ( x ) = 0 f(x)=0 f(x)=0 在 ( a , b ) (a,b) (a,b) 内至少有一个实根 x ∗ x^* x∗ 。
考察有根区间
[
a
,
b
]
[a,b]
[a,b] ,取中点
x
0
=
a
+
b
2
x_0=\frac{a+b}{2}
x0=2a+b 将区间分为两半。若
f
(
x
0
)
=
0
f(x_0)=0
f(x0)=0 ,则
x
0
x_0
x0 为
f
(
x
)
=
0
f(x)=0
f(x)=0 的实根
x
∗
x^*
x∗ 。若
f
(
x
0
)
≠
0
f(x_0)\neq0
f(x0)=0 ,检查
f
(
x
0
)
f(x_0)
f(x0) 与
f
(
a
)
f(a)
f(a) 是否同号,即不等式:
f
(
a
)
f
(
x
0
)
<
0
f(a)f(x_0)<0
f(a)f(x0)<0是否成立。如果成立,说明所求的根
x
∗
x^*
x∗ 在
x
0
x_0
x0 的左侧,这时令
a
1
=
a
,
b
1
=
x
0
a_1=a,b_1=x_0
a1=a,b1=x0 ;否则
x
∗
x^*
x∗ 必在
x
0
x_0
x0 右侧,这时令
a
1
=
x
0
,
b
1
=
b
a_1=x_0,b_1=b
a1=x0,b1=b ,两种情况都能得到一个新的有根区间
[
a
1
,
b
1
]
[a_1,b_1]
[a1,b1] ,其长度仅为
[
a
,
b
]
[a,b]
[a,b] 的一半。
对缩小了的有根区间
[
a
1
,
b
1
]
[a_1,b_1]
[a1,b1] 用中点
x
1
=
a
1
+
b
1
2
x_1=\frac{a_1+b_1}{2}
x1=2a1+b1再分成两半,然后判断
x
1
x_1
x1 是不是根,并用
f
(
a
)
f
(
x
1
)
<
0
f(a)f(x_1)<0
f(a)f(x1)<0是否成立来判断所求的根
x
∗
x^*
x∗ 在
x
1
x_1
x1 的哪一侧,从而又确定一个新的有根区间
[
a
2
,
b
2
]
[a_2,b_2]
[a2,b2] ,其长度是
[
a
1
,
b
1
]
[a_1,b_1]
[a1,b1] 的一半。
如此反复二分下去,可以得出一系列有根区间:
[
a
,
b
]
⊃
[
a
1
,
b
1
]
⊃
[
a
2
,
b
2
]
⊃
⋯
⊃
[
a
k
,
b
k
]
⊃
⋯
[a,b]\supset[a_1,b_1]\supset[a_2,b_2]\supset\cdots\supset[a_k,b_k]\supset\cdots
[a,b]⊃[a1,b1]⊃[a2,b2]⊃⋯⊃[ak,bk]⊃⋯其中区间每个区间都是前一个区间的一半,从而
[
a
k
,
b
k
]
[a_k,b_k]
[ak,bk] 的长度为
b
k
−
a
k
=
b
−
a
2
k
b_k-a_k=\frac{b-a}{2^k}
bk−ak=2kb−a当
k
→
∞
k\rightarrow\infty
k→∞ 时,此区间长度趋于零,如果二分过程无限地继续下去,这些区间最终必收缩于一点
x
∗
x^*
x∗,为所求的根。
每次二分后,取有根区间 [ a n , b n ] [a_n,b_n] [an,bn] 的中点 x n = a n + b n 2 x_n=\frac{a_n+b_n}{2} xn=2an+bn 作为根的近似值,可以得到一个近似根的序列: x 0 , x 1 , x 2 , ⋯ x_0,x_1,x_2,\cdots x0,x1,x2,⋯ ,该序列必以根 x ∗ x^* x∗ 为极限。
给定一个预定的精度
ε
\varepsilon
ε ,由
x
∗
∈
[
a
n
,
b
n
]
x^*\in [a_n,b_n]
x∗∈[an,bn] ,可得
∣
x
∗
−
x
n
∣
≤
1
2
(
b
n
−
a
n
)
=
1
2
n
+
1
(
b
−
a
)
|x^*-x_n|\leq\frac{1}{2}(b_n-a_n)=\frac{1}{2^{n+1}}(b-a)
∣x∗−xn∣≤21(bn−an)=2n+11(b−a)只要
n
n
n 充分大,使得
1
2
n
+
1
(
b
−
a
)
<
ε
,
即
n
>
[
ln
b
−
a
ε
/
ln
2
]
\frac{1}{2^{n+1}}(b-a)<\varepsilon\ \ \ \ , \ \ 即\ n>[\ln\frac{b-a}{\varepsilon}/\ln2]
2n+11(b−a)<ε , 即 n>[lnεb−a/ln2]就有
∣
x
∗
−
x
n
∣
<
ε
|x^*-x_n|<\varepsilon
∣x∗−xn∣<ε
x
n
x_n
xn 就是一个满足精度要求的近似根。
注:在实际计算中,若 ∣ f ( x n ) ∣ |f(x_n)| ∣f(xn)∣ 很小: ∣ f ( x n ) ∣ < δ |f(x_n)|<\delta ∣f(xn)∣<δ( δ \delta δ 为给定的误差限),则 x n x_n xn 就可作为近似根。
二分法的优点是算法简单,且总是收敛的,缺点是事先要确定有根区间,且收敛较慢,且不能用于求复根或偶数重根,一般不单独将其用于求根,只用其求根的一个较好的近似值。
迭代法
不动点迭代法(简单迭代法)
将方程
f
(
x
)
=
0
f(x)=0
f(x)=0 转化为:
x
=
g
(
x
)
x=g(x)
x=g(x)若
x
∗
x^*
x∗ 满足
f
(
x
∗
)
=
0
f(x^*)=0
f(x∗)=0,则
x
∗
=
g
(
x
∗
)
x^*=g(x^*)
x∗=g(x∗) ,称
x
∗
x^*
x∗ 为函数
g
(
x
)
g(x)
g(x) 的一个不动点。
选择初始近似值 x 0 x_0 x0,代入得: x 1 = g ( x 0 ) x_1=g(x_0) x1=g(x0)。
反复迭代: x k + 1 = g ( x k ) x_{k+1}=g(x_k) xk+1=g(xk), k = 0 , 1 , 2 , ⋯ k=0,1,2,\cdots k=0,1,2,⋯,称 g ( x ) g(x) g(x) 为迭代函数,可得一个迭代序列{ x k x_k xk }。
若对于 x 0 ∈ [ a , b ] x_0\in[a,b] x0∈[a,b],该迭代序列有极限: lim k → ∞ x k = x ∗ \lim_{k\rightarrow\infty}x_k=x^* limk→∞xk=x∗,则称迭代法收敛,且 x ∗ = g ( x ∗ ) x^*=g(x^*) x∗=g(x∗) 为 g ( x ) g(x) g(x) 的不动点。若迭代序列发散,则称迭代法发散。
不动点迭代法的基本思想:将隐式方程 f ( x ) = 0 f(x)=0 f(x)=0 化为显式的计算公式 x = g ( x ) x=g(x) x=g(x) ,然后通过迭代,求方程近似根。
迭代法几何意义: 方程 x = g ( x ) x=g(x) x=g(x) 的求根问题在 x y xy xy 平面上就是要确定曲线 x = g ( x ) x=g(x) x=g(x) 与直线 y = x y=x y=x 的交点 P ∗ P^* P∗。
迭代法收敛的充分条件
压缩映照: 在区间[a,b]上定义的函数
g
(
x
)
g(x)
g(x),若存在常数
L
,
0
≤
L
≤
1
L,0\leq L\leq 1
L,0≤L≤1,使得
∀
x
,
y
∈
[
a
,
b
]
\forall x,y\in[a,b]
∀x,y∈[a,b],都有:
∣
g
(
x
)
−
g
(
y
)
∣
≤
L
∣
x
−
y
∣
|g(x)-g(y)|\leq L|x-y|
∣g(x)−g(y)∣≤L∣x−y∣则称映照
g
(
x
)
g(x)
g(x) 在区间
[
a
,
b
]
[a,b]
[a,b] 上是压缩的。
不动点的存在唯一性及误差分析
定理1: 设 g ( x ) ∈ C [ a , b ] g(x)\in C[a,b] g(x)∈C[a,b] 满足以下两个条件:(1)任意 x ∈ [ a , b ] x\in [a,b] x∈[a,b],有 g ( x ) ∈ [ a , b ] g(x)\in[a,b] g(x)∈[a,b];(2)存在常数 L , 0 ≤ L ≤ 1 L,0\leq L\leq 1 L,0≤L≤1,使对任意 x , y ∈ [ a , b ] x,y\in[a,b] x,y∈[a,b],有
∣ g ( x ) − g ( y ) ∣ ≤ L ∣ x − y ∣ |g(x)-g(y)|\leq L|x-y| ∣g(x)−g(y)∣≤L∣x−y∣则:(1) x = g ( x ) x=g(x) x=g(x) 在 [ a , b ] [a,b] [a,b] 上存在唯一实根 x ∗ x^* x∗;(2)对任意初值 x 0 ∈ [ a , b ] x_0\in[a,b] x0∈[a,b],由 x k + 1 = g ( x k ) x_{k+1}=g(x_k) xk+1=g(xk) 得到的迭代序列 { x k {x_k} xk}收敛到 x = g ( x ) x=g(x) x=g(x) 在 [ a , b ] [a,b] [a,b] 的唯一实根 x ∗ x^* x∗,并有误差估计:
∣ x ∗ − x k ∣ ≤ 1 1 − L ∣ x k + 1 − x k ∣ ∣ x ∗ − x k ∣ ≤ L k 1 − L ∣ x 1 − x 0 ∣ |x^*-x_k|\leq \frac{1}{1-L}|x_{k+1}-x_k|\\|x^*-x_k|\leq\frac{L^k}{1-L}|x_1-x_0| ∣x∗−xk∣≤1−L1∣xk+1−xk∣∣x∗−xk∣≤1−LLk∣x1−x0∣
证明如下:
先证不动点存在性。
定 义 函 数 : φ ( x ) = g ( x ) − x 显 然 φ ( x ) ∈ C [ a , b ] 。 因 为 a ≤ g ( x ) ≤ b , 有 φ ( a ) = g ( a ) − a ≥ 0 , φ ( b ) = g ( b ) − b ≤ 0 由 连 续 函 数 性 质 可 知 存 在 x ∗ ∈ ( a , b ) , 使 得 φ ( x ∗ ) = 0 , 即 g ( x ∗ ) = x ∗ , 为 不 动 点 定义函数:\varphi(x)=g(x)-x\\显然\varphi(x)\in C[a,b]。因为a\leq g(x)\leq b,有\\\varphi(a)=g(a)-a\geq0,\varphi(b)=g(b)-b\leq0\\由连续函数性质可知存在\ x^*\in(a,b),使得 \ \varphi(x^*)=0,即\ g(x^*)=x^*,为不动点 定义函数:φ(x)=g(x)−x显然φ(x)∈C[a,b]。因为a≤g(x)≤b,有φ(a)=g(a)−a≥0,φ(b)=g(b)−b≤0由连续函数性质可知存在 x∗∈(a,b),使得 φ(x∗)=0,即 g(x∗)=x∗,为不动点
再证唯一性。
设 x 1 ∗ 及 x 2 ∗ ∈ [ a , b ] 是 g ( x ) 的 两 个 不 同 的 不 动 点 , 则 ∣ x 1 ∗ − x 2 ∗ ∣ = ∣ g ( x 1 ∗ ) − g ( x 2 ∗ ) ∣ ≤ L ∣ x 1 ∗ − x 2 ∗ ∣ < ∣ x 1 ∗ − x 2 ∗ ∣ , 矛 盾 设\ x_1^*\ 及\ x_2^*\in[a,b]是\ g(x)\ 的两个不同的不动点,则\\|x_1^*-x_2^*|=|g(x_1^*)-g(x_2^*)|\leq L|x_1^*-x_2^*|<|x_1^*-x_2^*|,矛盾 设 x1∗ 及 x2∗∈[a,b]是 g(x) 的两个不同的不动点,则∣x1∗−x2∗∣=∣g(x1∗)−g(x2∗)∣≤L∣x1∗−x2∗∣<∣x1∗−x2∗∣,矛盾
误差估计:
∣ x k − x ∗ ∣ = ∣ g ( x k − 1 ) − g ( x ∗ ) ∣ ≤ L ∣ x k − 1 − x ∗ ∣ ≤ ⋯ ≤ L k ∣ x 0 − x ∗ ∣ ∣ x k + 1 − x k ∣ = ∣ g ( x k ) − g ( x k − 1 ) ∣ ≤ L ∣ x k − x k − 1 ∣ ≤ L k ∣ x 1 − x 0 ∣ 于 是 , 对 任 意 正 整 数 p , 有 ∣ x k + p − x k ∣ ≤ ∣ x k + p − x k + p − 1 ∣ + ∣ x k + p − 1 − x k + p − 2 ∣ + ⋯ + ∣ x k + 1 − x k ∣ ≤ ( L k + p − 1 + L k + p − 2 + ⋯ + L k ) ∣ x 1 − x 0 ∣ 令 p → ∞ , 注 意 到 lim p → ∞ x k + p = x ∗ , 可 得 ∣ x ∗ − x k ∣ ≤ L k 1 − L ∣ x 1 − x 0 ∣ ∣ x k + 1 − x k ∣ = ∣ ( x ∗ − x k ) − ( x ∗ − x k + 1 ) ∣ ≥ ∣ x ∗ − x k ∣ − ∣ x ∗ − x k + 1 ∣ ≥ ∣ x ∗ − x k ∣ − L ∣ x ∗ − x k ∣ = ( 1 − L ) ∣ x ∗ − x k ∣ ∣ x ∗ − x k ∣ ≤ 1 1 − L ∣ x k + 1 − x k ∣ |x_k-x^*|=|g(x_{k-1})-g(x^*)|\leq L|x_{k-1}-x^*|\leq \cdots\leq L^k|x_0-x^*|\\|x_{k+1}-x_k|=|g(x_k)-g(x_{k-1})|\leq L|x_k-x_{k-1}|\leq L^k|x_1-x_0|\\于是,对任意正整数\ p,有\\|x_{k+p}-x_k|\leq |x_{k+p}-x_{k+p-1}|+|x_{k+p-1}-x_{k+p-2}|+\cdots+|x_{k+1}-x_k|\leq(L^{k+p-1}+L^{k+p-2}+\cdots +L^k)|x_1-x_0|\\令\ p\rightarrow\infty,注意到\ \lim_{p\rightarrow\infty}x_{k+p}=x^*,可得\\|x^*-x_k|\leq \frac{L^k}{1-L}|x_1-x_0|\\|x_{k+1}-x_k|=|(x^*-x_k)-(x^*-x_{k+1})|\geq|x^*-x_k|-|x^*-x_{k+1}|\geq|x^*-x_k|-L|x^*-x_k|=(1-L)|x^*-x_k|\\|x^*-x_k|\leq\frac{1}{1-L}|x_{k+1}-x_k| ∣xk−x∗∣=∣g(xk−1)−g(x∗)∣≤L∣xk−1−x∗∣≤⋯≤Lk∣x0−x∗∣∣xk+1−xk∣=∣g(xk)−g(xk−1)∣≤L∣xk−xk−1∣≤Lk∣x1−x0∣于是,对任意正整数 p,有∣xk+p−xk∣≤∣xk+p−xk+p−1∣+∣xk+p−1−xk+p−2∣+⋯+∣xk+1−xk∣≤(Lk+p−1+Lk+p−2+⋯+Lk)∣x1−x0∣令 p→∞,注意到 p→∞limxk+p=x∗,可得∣x∗−xk∣≤1−LLk∣x1−x0∣∣xk+1−xk∣=∣(x∗−xk)−(x∗−xk+1)∣≥∣x∗−xk∣−∣x∗−xk+1∣≥∣x∗−xk∣−L∣x∗−xk∣=(1−L)∣x∗−xk∣∣x∗−xk∣≤1−L1∣xk+1−xk∣
实际迭代计算过程中,有时 L L L 难以估计,所以,只要相邻两次计算结果的偏差 ∣ x k + 1 − x k ∣ |x_{k+1}-x_k| ∣xk+1−xk∣ 足够小,即可保证近似值 x k x_k xk 具有足够精度。
由Lagrange中值定理可知,如果 g ( x ) ∈ C 1 [ a , b ] g(x)\in C^1[a,b] g(x)∈C1[a,b],且对任意 x ∈ [ a , b ] x\in[a,b] x∈[a,b],有 ∣ g ′ ( x ) ∣ ≤ L ≤ 1 |g'(x)|\leq L\leq 1 ∣g′(x)∣≤L≤1,则对 ∀ x , y ∈ [ a , b ] \forall x,y\in[a,b] ∀x,y∈[a,b],有
∣ g ( x ) − g ( y ) ∣ = ∣ g ′ ( ξ ) ( x − y ) ∣ ≤ L ∣ x − y ∣ , ξ ∈ ( a , b ) |g(x)-g(y)|=|g'(\xi)(x-y)|\leq L|x-y|,\xi\in(a,b) ∣g(x)−g(y)∣=∣g′(ξ)(x−y)∣≤L∣x−y∣,ξ∈(a,b)表明上述定理的条件(2)可用 g ′ ( x ) g'(x) g′(x) 的性质代替。
注: 一般情况下, L L L 越小,收敛速度越快。
局部收敛性: g ( x ) g(x) g(x) 有不动点 x ∗ x^* x∗,如果存在 x ∗ x^* x∗ 的某一邻域 S = { x ∣ ∣ x − x ∗ ∣ ≤ δ } S=\{x||x-x^*|\leq\delta\} S={x∣∣x−x∗∣≤δ},对任意 x 0 ∈ S x_0\in S x0∈S,迭代产生的序列 { x k } ∈ S \{x_k\}\in S {xk}∈S,且收敛到 x ∗ x^* x∗,则称迭代法局部收敛。
定理2:设 x ∗ x^* x∗ 为 g ( x ) g(x) g(x) 的不动点, g ′ ( x ) g'(x) g′(x) 在 x ∗ x^* x∗ 的某个邻域连续,且 ∣ g ′ ( x ) ∣ < 1 |g'(x)|<1 ∣g′(x)∣<1,则迭代法局部收敛。
证明:由连续函数性质,存在
L
L
L 和
x
∗
x^*
x∗ 的某个邻域
S
=
{
x
∣
∣
x
−
x
∗
∣
≤
δ
}
=
[
x
∗
−
δ
,
x
∗
+
δ
]
S=\{x||x-x^*|\leq\delta\}=[x^*-\delta,x^*+\delta]
S={x∣∣x−x∗∣≤δ}=[x∗−δ,x∗+δ],对任意
x
∈
S
x\in S
x∈S,成立:
∣
g
′
(
x
)
∣
≤
L
<
1
|g'(x)|\leq L<1
∣g′(x)∣≤L<1又:
∣
g
(
x
)
−
x
∗
∣
=
∣
g
(
x
)
−
g
(
x
∗
)
∣
≤
L
∣
x
−
x
∗
∣
≤
∣
x
−
x
∗
∣
|g(x)-x^*|=|g(x)-g(x^*)|\leq L|x-x^*|\leq|x-x^*|
∣g(x)−x∗∣=∣g(x)−g(x∗)∣≤L∣x−x∗∣≤∣x−x∗∣ 可知,对任意
x
∈
S
x\in S
x∈S,总有
g
(
x
)
∈
S
g(x)\in S
g(x)∈S。由定理1知,对任意
x
0
∈
S
x_0\in S
x0∈S,迭代序列
{
x
k
}
∈
S
\{x_k\}\in S
{xk}∈S,且收敛到
x
∗
x^*
x∗。
牛顿迭代法与弦割法
牛顿迭代公式及其几何意义
牛顿法实质上是一种线性化方法。对于单根和重根,收敛速度不同。
设 f ( x ) f(x) f(x) 可以表示成 f ( x ) = ( x − x ∗ ) m q ( x ) f(x)=(x-x^*)^mq(x) f(x)=(x−x∗)mq(x),且 q ( x ∗ ) ≠ 0 q(x^*)\neq0 q(x∗)=0,则称 x ∗ x^* x∗ 为方程 f ( x ) = 0 f(x)=0 f(x)=0 的m重根,当m=1时,称 x ∗ x^* x∗ 为方程 f ( x ) = 0 f(x)=0 f(x)=0 的单根。
设
f
(
x
)
∈
C
m
[
a
,
b
]
f(x)\in C^m[a,b]
f(x)∈Cm[a,b],则
f
(
x
)
f(x)
f(x) 在内的点
x
∗
x^*
x∗ 具有m重根的充要条件是:
f
(
x
∗
)
=
f
′
(
x
∗
)
=
⋯
=
f
(
m
−
1
)
(
x
∗
)
=
0
,
f
(
m
)
(
x
∗
)
≠
0
f(x^*)=f'(x^*)=\cdots=f^{(m-1)}(x^*)=0,\ \ \ f^{(m)}(x^*)\neq0
f(x∗)=f′(x∗)=⋯=f(m−1)(x∗)=0, f(m)(x∗)=0
单根情形
设 f ( x ) ∈ C 1 ( x ∗ − δ , x ∗ + δ ) f(x)\in C^{1}(x^*-\delta,x^*+\delta) f(x)∈C1(x∗−δ,x∗+δ), f ′ ( x ∗ ) ≠ 0 f'(x^*)\neq0 f′(x∗)=0,即 x ∗ x^* x∗ 为方程 f ( x ) = 0 f(x)=0 f(x)=0 的单根。
设已知方程
f
(
x
)
=
0
f(x)=0
f(x)=0 有近似根
x
k
x_k
xk(
f
′
(
x
k
)
≠
0
f'(x_k)\neq0
f′(xk)=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
)
=
0
f(x)=0
f(x)=0 可以近似表示为:
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+1}
xk+1,则
x
k
+
1
x_{k+1}
xk+1 的计算公式为:
x
k
+
1
=
x
k
−
f
(
x
k
)
f
′
(
x
k
)
,
k
=
0
,
1
,
⋯
x_{k+1}=x_k-\frac{f(x_k)}{f'(x_k)},\ \ \ \ k=0,1,\cdots
xk+1=xk−f′(xk)f(xk), k=0,1,⋯
牛顿迭代法收敛的充分条件
定理3:设 f ( x ) f(x) f(x) 在其零点 x ∗ x^* x∗ 的某邻域 S = { x ∣ ∣ x − x ∗ ∣ ≤ δ } S=\{x||x-x^*|\leq\delta\} S={x∣∣x−x∗∣≤δ} 内有二阶连续导数,且 f ′ ( x ∗ ) ≠ 0 f'(x^*)\neq0 f′(x∗)=0 (即 x ∗ x^* x∗ 为单根),则牛顿迭代法在 x ∗ x^* x∗ 附近具有局部收敛性。
证明:牛顿迭代法的迭代函数为:
g
(
x
)
=
x
−
f
(
x
)
f
′
(
x
)
g
′
(
x
)
=
1
−
[
f
′
(
x
)
]
2
−
f
(
x
)
f
′
′
(
x
)
[
f
′
(
x
)
]
2
=
f
(
x
)
f
′
′
(
x
)
[
f
′
(
x
)
]
2
g(x)=x-\frac{f(x)}{f'(x)}\\g'(x)=1-\frac{[f'(x)]^2-f(x)f''(x)}{[f'(x)]^2}=\frac{f(x)f''(x)}{[f'(x)]^2}
g(x)=x−f′(x)f(x)g′(x)=1−[f′(x)]2[f′(x)]2−f(x)f′′(x)=[f′(x)]2f(x)f′′(x)
假定
x
∗
x^*
x∗ 是
f
(
x
)
f(x)
f(x) 的一个单根,即
f
(
x
∗
)
=
0
f(x^*)=0
f(x∗)=0,
f
′
(
x
∗
)
≠
0
f'(x^*)\neq0
f′(x∗)=0,则由上式知
g
′
(
x
)
=
0
g'(x)=0
g′(x)=0,于是由定理2得,牛顿迭代法在
x
∗
x^*
x∗ 附近具有局部收敛性。
定理4:对方程 f ( x ) = 0 f(x)=0 f(x)=0,若存在区间 [ a , b ] [a,b] [a,b],使
(1) f ′ ′ ( x ) f''(x) f′′(x) 在 [ a , b ] [a,b] [a,b] 上连续;
(2) f ( a ) f ( b ) < 0 f(a)f(b)<0 f(a)f(b)<0;
(3)对任意 x ∈ [ a , b ] x\in[a,b] x∈[a,b],都有 f ′ ( x ) ≠ 0 f'(x)\neq0 f′(x)=0;
(4) f ′ ′ ( x ) f''(x) f′′(x) 在 [ a , b ] [a,b] [a,b] 上保号。
则当初值 x 0 ∈ [ a , b ] x_0\in[a,b] x0∈[a,b] 且 f ( x 0 ) f ′ ′ ( x 0 ) > 0 f(x_0)f''(x_0)>0 f(x0)f′′(x0)>0 时,牛顿迭代法产生的迭代序列 { x k } \{x_k\} {xk} 收敛于方程 f ( x ) = 0 f(x)=0 f(x)=0 在 [ a , b ] [a,b] [a,b] 上的唯一实根 x ∗ x^* x∗。
牛顿迭代法的计算步骤:
(1)选定初始近似值 x 0 x_0 x0,计算 f 0 = f ( x 0 ) , f 0 ′ = f ′ ( x 0 ) f_0=f(x_0),f'_0=f'(x_0) f0=f(x0),f0′=f′(x0)
(2)迭代。按公式: x 1 = x 0 − f 0 / f 0 ′ x_1=x_0-{f_0}/{f'_0} x1=x0−f0/f0′ 迭代一次,得新的近似值 x 1 x_1 x1,计算 f 1 = f ( x 1 ) , f 1 ′ = f ′ ( x 1 ) f_1=f(x_1),f'_1=f'(x_1) f1=f(x1),f1′=f′(x1)。
(3)控制。如果
x
1
x_1
x1 满足
∣
δ
∣
<
ζ
1
|\delta|<\zeta_1
∣δ∣<ζ1 或
∣
f
1
∣
<
ζ
2
|f_1|<\zeta_2
∣f1∣<ζ2,则终止迭代,以
x
1
x_1
x1 作为所求的根;否则转(4)。此处
ζ
1
,
ζ
2
\zeta_1,\zeta_2
ζ1,ζ2 是允许误差,而
δ
=
{
∣
x
1
−
x
0
∣
,
当
∣
x
1
∣
<
C
时
∣
x
1
−
x
0
∣
∣
x
1
∣
,
当
∣
x
1
∣
≥
C
时
\delta=\begin{cases} |x_1-x_0|,\quad 当|x_1|< C时\\\frac{|x_1-x_0|}{|x_1|}, \quad 当|x_1|\geq C时 \end{cases}
δ={∣x1−x0∣,当∣x1∣<C时∣x1∣∣x1−x0∣,当∣x1∣≥C时其中
C
C
C 是取绝对误差或相对误差的控制常数,一般可取
C
=
1
C=1
C=1。
(4)修正。如果迭代次数达到预先指定的次数 N N N,或者 f ′ = 0 f'=0 f′=0,则方法失败;否则以 ( x 1 , f 1 , f 1 ′ ) (x_1,f_1,f'_1) (x1,f1,f1′) 代替 ( x 0 , f 0 , f 0 ′ ) (x_0,f_0,f'_0) (x0,f0,f0′) 转(2)继续迭代。
牛顿法的优点是收敛快,缺点一是每步迭代计算量大,缺点二是初始近似值 x 0 x_0 x0 只在根 x ∗ x^* x∗附近才能保证收敛。为克服这两个缺点,通常可用下述方法:
(1)简化牛顿法,也称平行弦法,其迭代公式为:
x
k
+
1
=
x
k
−
C
f
(
x
k
)
,
C
≠
0
,
k
=
0
,
1
,
⋯
x_{k+1}=x_k-Cf(x_k),\ \ \ C\neq0,\ \ \ k=0,1,\cdots
xk+1=xk−Cf(xk), C=0, k=0,1,⋯迭代函数为:
g
(
x
)
=
x
−
C
f
(
x
)
g(x)=x-Cf(x)
g(x)=x−Cf(x)若
∣
g
′
(
x
)
∣
=
∣
1
−
C
f
′
(
x
)
∣
<
1
|g'(x)|=|1-Cf'(x)|<1
∣g′(x)∣=∣1−Cf′(x)∣<1,即取
0
<
C
f
′
(
x
)
<
2
0<Cf'(x)<2
0<Cf′(x)<2,在根
x
∗
x^*
x∗ 附近成立,则迭代法局部收敛。若取
C
=
1
f
′
(
x
0
)
C=\frac{1}{f'(x_0)}
C=f′(x0)1,则称为简化牛顿法,其几何意义是用平行弦与
x
x
x 轴交点作为
x
∗
x^*
x∗ 的近似。
(2)牛顿下山法。 为了防止迭代发散,对迭代过程附加一项要求,即具有单调性:
∣
f
(
x
k
+
1
)
∣
<
∣
f
(
x
k
)
∣
|f(x_{k+1})|<|f(x_k)|
∣f(xk+1)∣<∣f(xk)∣ 。将牛顿法的计算结果:
x
ˉ
k
+
1
=
x
k
−
f
(
x
k
)
f
′
(
x
k
)
\bar{x}_{k+1}=x_k-\frac{f(x_k)}{f'(x_k)}
xˉk+1=xk−f′(xk)f(xk)与前一步的近似值
x
k
x_k
xk 适当加权平均作为新的改进值:
x
k
+
1
=
λ
x
ˉ
k
+
1
+
(
1
−
λ
)
x
k
=
x
k
−
λ
f
(
x
k
)
f
′
(
x
k
)
x_{k+1}=\lambda\bar x_{k+1}+(1-\lambda)x_k=x_k-\lambda \frac{f(x_k)}{f'(x_k)}
xk+1=λxˉk+1+(1−λ)xk=xk−λf′(xk)f(xk)选择下山因子
λ
\lambda
λ 时从
λ
=
1
\lambda=1
λ=1 开始,逐次将
λ
\lambda
λ 减半进行试算,直到能使下降条件满足为止,即满足单调下降性:
∣
f
(
x
k
+
1
)
∣
<
∣
f
(
x
k
)
∣
|f(x_{k+1})|<|f(x_k)|
∣f(xk+1)∣<∣f(xk)∣ 。
弦割法(割线法)
设
x
k
,
x
k
−
1
x_k,x_{k-1}
xk,xk−1 是
f
(
x
)
=
0
f(x)=0
f(x)=0 的近似根,利用
f
(
x
k
)
,
f
(
x
k
−
1
)
f(x_k),f(x_{k-1})
f(xk),f(xk−1) 构造一次插值多项式
p
1
(
x
)
p_1(x)
p1(x),并用
p
1
(
x
)
p_1(x)
p1(x) 的根作为
f
(
x
)
=
0
f(x)=0
f(x)=0 的新的近似根
x
k
+
1
x_{k+1}
xk+1。由
p
1
(
x
)
=
f
(
x
k
)
+
f
(
x
k
)
−
f
(
x
k
−
1
)
x
k
−
x
k
−
1
(
x
−
x
k
)
p_1(x)=f(x_k)+\frac{f(x_k)-f(x_{k-1})}{x_k-x_{k-1}}(x-x_k)
p1(x)=f(xk)+xk−xk−1f(xk)−f(xk−1)(x−xk)相当于在
f
(
x
)
f(x)
f(x) 曲线上取两点
(
x
k
,
f
(
x
k
)
)
,
(
x
k
−
1
,
f
(
x
k
−
1
)
)
(x_k,f(x_k)),(x_{k-1},f(x_{k-1}))
(xk,f(xk)),(xk−1,f(xk−1)) ,过这两点作割线。令
p
1
(
x
k
+
1
)
=
0
p_1(x_{k+1})=0
p1(xk+1)=0,得
x
k
+
1
=
x
k
−
f
(
x
k
)
f
(
x
k
)
−
f
(
x
k
−
1
)
(
x
k
−
x
k
−
1
)
,
k
=
1
,
2
,
⋯
x_{k+1}=x_k-\frac{f(x_k)}{f(x_k)-f(x_{k-1})}(x_k-x_{k-1}),\ \ \ \ k=1,2,\cdots
xk+1=xk−f(xk)−f(xk−1)f(xk)(xk−xk−1), k=1,2,⋯弦割法:牛顿法
x
k
+
1
=
x
k
−
f
(
x
k
)
f
′
(
x
k
)
x_{k+1}=x_k-\frac{f(x_k)}{f'(x_k)}
xk+1=xk−f′(xk)f(xk) 中的导数
f
′
(
x
k
)
f'(x_k)
f′(xk) 用差商
f
(
x
k
)
−
f
(
x
k
−
1
)
x
k
−
x
k
−
1
\frac{f(x_k)-f(x_{k-1})}{x_k-x_{k-1}}
xk−xk−1f(xk)−f(xk−1) 取代的结果。
x k + 1 x_{k+1} xk+1 实际上是两点 ( x k , f ( x k ) ) , ( x k − 1 , f ( x k − 1 ) ) (x_k,f(x_k)),(x_{k-1},f(x_{k-1})) (xk,f(xk)),(xk−1,f(xk−1)) 的割线与 x x x 轴交点的横坐标。
弦割法避免了求导数,但收敛速度不如牛顿法。
非线性方程组牛顿迭代法求根
考虑方程组 { f 1 ( x 1 , ⋯ , x n ) = 0 ⋯ ⋯ ⋯ f n ( x 1 , ⋯ , x n ) = 0 \begin{cases}f_1(x_1,\cdots,x_n)=0\\\cdots\cdots\cdots\\f_n(x_1,\cdots,x_n)=0 \end{cases} ⎩⎪⎨⎪⎧f1(x1,⋯,xn)=0⋯⋯⋯fn(x1,⋯,xn)=0
其中
f
1
,
f
2
,
⋯
,
f
n
f_1,f_2,\cdots,f_n
f1,f2,⋯,fn 均为
(
x
1
,
⋯
,
x
n
)
(x_1,\cdots,x_n)
(x1,⋯,xn) 的多元函数。用向量记号记
X
=
(
x
1
,
⋯
,
x
n
)
T
∈
R
n
,
F
=
(
f
1
,
⋯
,
f
n
)
T
X=(x_1,\cdots,x_n)^T\in R^n,F=(f_1,\cdots,f_n)^T
X=(x1,⋯,xn)T∈Rn,F=(f1,⋯,fn)T,可以写成
F
(
X
)
=
0
F(X)=0
F(X)=0若已给出方程的一个近似根
X
(
k
)
=
(
x
1
k
,
⋯
,
x
n
(
k
)
)
X^{(k)}=(x_1^{k},\cdots,x_n^{(k)})
X(k)=(x1k,⋯,xn(k)),将函数
F
(
X
)
F(X)
F(X) 的分量
f
i
(
x
)
(
i
=
1
,
⋯
,
n
)
f_i(x)(i=1,\cdots,n)
fi(x)(i=1,⋯,n) 在
X
(
k
)
X^{(k)}
X(k) 用多元函数泰勒展开并取线性部分,可表示为
F
(
X
)
≈
F
(
X
(
k
)
)
+
F
′
(
X
(
k
)
)
(
X
−
X
(
k
)
)
令
右
式
等
于
0
:
F
′
(
X
(
k
)
)
(
X
−
X
(
k
)
)
=
−
F
(
X
(
k
)
)
F(X)\approx F(X^{(k)})+F'(X^{(k)})(X-X^{(k)})\\令右式等于0:F'(X^{(k)})(X-X^{(k)})=-F(X^{(k)})
F(X)≈F(X(k))+F′(X(k))(X−X(k))令右式等于0:F′(X(k))(X−X(k))=−F(X(k))其中
F
′
(
X
)
F'(X)
F′(X) 是
f
1
,
f
2
,
⋯
,
f
n
f_1,f_2,\cdots,f_n
f1,f2,⋯,fn 的
n
∗
n
n*n
n∗n 阶雅可比(Jacobi)矩阵:
F
′
(
X
)
=
∂
(
f
1
,
f
2
,
⋯
,
f
n
)
∂
(
x
1
,
x
2
,
⋯
,
x
n
)
=
[
∂
f
1
∂
x
1
∂
f
1
∂
x
2
⋯
∂
f
1
∂
x
n
∂
f
2
∂
x
1
∂
f
2
∂
x
2
⋯
∂
f
2
∂
x
n
⋮
⋮
⋮
∂
f
n
∂
x
1
∂
f
n
∂
x
2
⋯
∂
f
n
∂
x
n
]
F'(X)=\frac{\partial(f_1,f_2,\cdots,f_n)}{\partial(x_1,x_2,\cdots,x_n)}=\left[\begin{matrix}\frac{\partial f_1}{\partial x_1} & \frac{\partial f_1}{\partial x_2} & \cdots&\frac{\partial f_1}{\partial x_n}\\\frac{\partial f_2}{\partial x_1} & \frac{\partial f_2}{\partial x_2} &\cdots&\frac{\partial f_2}{\partial x_n} \\\vdots&\vdots&&\vdots\\\frac{\partial f_n}{\partial x_1} & \frac{\partial f_n}{\partial x_2} &\cdots&\frac{\partial f_n}{\partial x_n}\end{matrix}\right]
F′(X)=∂(x1,x2,⋯,xn)∂(f1,f2,⋯,fn)=⎣⎢⎢⎢⎢⎡∂x1∂f1∂x1∂f2⋮∂x1∂fn∂x2∂f1∂x2∂f2⋮∂x2∂fn⋯⋯⋯∂xn∂f1∂xn∂f2⋮∂xn∂fn⎦⎥⎥⎥⎥⎤求解方程组,并记为
X
(
k
+
1
)
X^{(k+1)}
X(k+1),得
X
(
k
+
1
)
=
X
(
k
)
−
F
′
(
X
(
k
)
)
−
1
F
(
X
(
k
)
)
,
k
=
0
,
1
,
⋯
X^{(k+1)}=X^{(k)}-F'(X^{(k)})^{-1}F(X^{(k)}),\ \ k=0,1,\cdots
X(k+1)=X(k)−F′(X(k))−1F(X(k)), k=0,1,⋯
定理5:设 F ( X ) F(X) F(X) 的定义域 D ⊂ R n D\subset R^n D⊂Rn, X ∗ ∈ D X^*\in D X∗∈D 满足 F ( X ∗ ) = 0 F(X^*)=0 F(X∗)=0,在 X ∗ X^* X∗ 的开邻域 S 0 ⊂ D S_0\subset D S0⊂D 上 F ′ ( X ) F'(X) F′(X) 存在且连续, F ′ ( X ) F'(X) F′(X) 非奇异,则牛顿法生成的序列{ X ( k ) X^{(k)} X(k)}在闭域 S ⊂ S 0 S\subset S_0 S⊂S0 上超线性收敛于 X ∗ X^* X∗。若还存在常数 L > 0 L>0 L>0,使 ∣ ∣ F ′ ( X ) − F ′ ( X ∗ ) ∣ ∣ ≤ L ∗ ∣ ∣ X − X ∗ ∣ ∣ , ∀ X ∈ S ||F'(X)-F'(X^*)||\leq L*||X-X^*||,\forall X\in S ∣∣F′(X)−F′(X∗)∣∣≤L∗∣∣X−X∗∣∣,∀X∈S,则{ X ( k ) X^{(k)} X(k)} 至少平方收敛。
迭代法的收敛阶和加速收敛方式
定义:设迭代法 x k + 1 = g ( x k ) x_{k+1}=g(x_k) xk+1=g(xk) 收敛于方程 x = g ( x ) x=g(x) x=g(x) 的根 x ∗ x^* x∗,若存在常数 p ( p ≥ 1 ) p(p\geq1) p(p≥1) 和 c ( c > 0 ) c(c>0) c(c>0),使得
lim k → ∞ ∣ x ∗ − x k + 1 ∣ ∣ x ∗ − x k ∣ p = c \lim_{k\rightarrow\infty}\frac{|x^*-x_{k+1}|}{|x^*-x_k|^p}=c k→∞lim∣x∗−xk∣p∣x∗−xk+1∣=c
则称该迭代过程是 p p p 阶收敛的。特别的, p = 1 ( 0 < c < 1 ) p=1(0<c<1) p=1(0<c<1) 时称线性收敛, p > 1 p>1 p>1 时称超线性收敛, p = 2 p=2 p=2 时称平方收敛。
迭代法的收敛速度依赖于迭代函数 g ( x ) g(x) g(x) 的选取。 收敛阶越高,收敛速度就越快。
定理6:设 x ∗ x^* x∗ 是方程 x = g ( x ) x=g(x) x=g(x) 的根, g ( x ) , g ′ ( x ) , ⋯ , g ( p ) ( x ) g(x),g'(x),\cdots,g^{(p)}(x) g(x),g′(x),⋯,g(p)(x) 在 x ∗ x^* x∗ 的邻近连续,且 g ′ ( x ∗ ) = g ′ ′ ( x ∗ ) = ⋯ = g ( p − 1 ) ( x ∗ ) = 0 , g ( p ) ( x ∗ ) ≠ 0 g'(x^*)=g''(x^*)=\cdots=g^{(p-1)}(x^*)=0,g^{(p)}(x^*)\neq0 g′(x∗)=g′′(x∗)=⋯=g(p−1)(x∗)=0,g(p)(x∗)=0,则迭代法 x k + 1 = g ( x k ) x_{k+1}=g(x_k) xk+1=g(xk) 在 x ∗ x^* x∗ 邻近是 p p p 阶收敛的。
特别的,当 0 < ∣ g ′ ( x ∗ ) ∣ < 1 0<|g'(x^*)|<1 0<∣g′(x∗)∣<1 时,迭代法是线性收敛的;当 g ′ ( x ∗ ) = 0 , g ′ ′ ( x ∗ ) ≠ 0 g'(x^*)=0,g''(x^*)\neq0 g′(x∗)=0,g′′(x∗)=0,迭代法是线性收敛的。
证明:由 g ′ ( x ∗ ) = 0 g'(x^*)=0 g′(x∗)=0,可知迭代法 x k + 1 = g ( x k ) x_{k+1}=g(x_k) xk+1=g(xk) 具有局部收敛性。
将 g ( x k ) g(x_k) g(xk) 在根 x ∗ x^* x∗ 处泰勒展开,有
g ( x k ) = g ( x ∗ ) + g ( p ) ( ξ ) p ! ( x k − x ∗ ) p , ξ 在 x k 、 x ∗ 之 间 g(x_k)=g(x^*)+\frac{g^{(p)}(\xi)}{p!}(x_k-x^*)^p,\ \ \xi在x_k、x^*之间 g(xk)=g(x∗)+p!g(p)(ξ)(xk−x∗)p, ξ在xk、x∗之间注意到 g ( x k ) = x k + 1 , g ( x ∗ ) = x ∗ g(x_k)=x_{k+1},g(x^*)=x^* g(xk)=xk+1,g(x∗)=x∗,由上式得
x k + 1 − x ∗ = g ( p ) ( ξ ) p ! ( x k − x ∗ ) p → g ( p ) ( x ∗ ) p ! ( x k − x ∗ ) p ( k → ∞ ) x_{k+1}-x^*=\frac{g^{(p)}(\xi)}{p!}(x_k-x^*)^p\rightarrow\frac{g^{(p)}(x^*)}{p!}(x_k-x^*)^p\ \ \ \ \ \ \ (k\rightarrow\infty) xk+1−x∗=p!g(p)(ξ)(xk−x∗)p→p!g(p)(x∗)(xk−x∗)p (k→∞) 即迭代过程 x k + 1 = g ( x k ) x_{k+1}=g(x_k) xk+1=g(xk) 在 x ∗ x^* x∗ 邻近是 p p p 阶收敛的。
分析简单迭代法与牛顿迭代法的收敛速度:
简单迭代法:由
x
∗
−
x
k
+
1
=
g
(
x
∗
)
−
g
(
x
k
)
=
g
′
(
ζ
k
)
(
x
∗
−
x
k
)
x^*-x_{k+1}=g(x^*)-g(x_k)=g'(\zeta_k)(x^*-x_k)
x∗−xk+1=g(x∗)−g(xk)=g′(ζk)(x∗−xk),得
lim
k
→
∞
∣
x
∗
−
x
k
+
1
∣
∣
x
∗
−
x
k
∣
=
lim
k
→
∞
∣
g
′
(
ζ
k
)
∣
=
∣
g
′
(
x
∗
)
∣
\lim_{k\rightarrow\infty}\frac{|x^*-x_{k+1}|}{|x^*-x_k|}=\lim_{k\rightarrow\infty}|g'(\zeta_k)|=|g'(x^*)|
k→∞lim∣x∗−xk∣∣x∗−xk+1∣=k→∞lim∣g′(ζk)∣=∣g′(x∗)∣所以当
0
<
∣
g
′
(
x
)
∣
<
1
0<|g'(x)|<1
0<∣g′(x)∣<1 时,简单迭代法线性收敛。
牛顿迭代法:(1)单根情形: 由
g
(
x
)
=
x
−
f
(
x
)
f
′
(
x
)
g(x)=x-\frac{f(x)}{f'(x)}
g(x)=x−f′(x)f(x),知
g
′
(
x
)
=
1
−
[
f
′
(
x
)
]
2
−
f
(
x
)
f
′
′
(
x
)
[
f
′
(
x
)
]
2
=
f
(
x
)
f
′
′
(
x
)
[
f
′
(
x
)
]
2
g'(x)=1-\frac{[f'(x)]^2-f(x)f''(x)}{[f'(x)]^2}=\frac{f(x)f''(x)}{[f'(x)]^2}
g′(x)=1−[f′(x)]2[f′(x)]2−f(x)f′′(x)=[f′(x)]2f(x)f′′(x)
x
∗
x^*
x∗ 是
f
(
x
)
f(x)
f(x) 的一个单根,即
f
(
x
∗
)
=
0
,
f
′
(
x
∗
)
≠
0
f(x^*)=0,f'(x^*)\neq0
f(x∗)=0,f′(x∗)=0,则由上式知
g
′
(
x
∗
)
=
0
,
g
′
′
(
x
∗
)
=
f
′
′
(
x
∗
)
f
′
(
x
∗
)
g'(x^*)=0,g''(x^*)=\frac{f''(x^*)}{f'(x^*)}
g′(x∗)=0,g′′(x∗)=f′(x∗)f′′(x∗)表明牛顿迭代法在零点
x
∗
x^*
x∗ 的邻近是平方收敛的。
lim
k
→
∞
x
k
+
1
−
x
∗
(
x
k
−
x
∗
)
2
=
g
′
′
(
x
∗
)
2
=
f
′
′
(
x
∗
)
2
f
′
(
x
∗
)
\lim_{k\rightarrow\infty}\frac{x_{k+1}-x^*}{(x_k-x^*)^2}=\frac{g''(x^*)}{2}=\frac{f''(x^*)}{2f'(x^*)}
k→∞lim(xk−x∗)2xk+1−x∗=2g′′(x∗)=2f′(x∗)f′′(x∗)(2)重根形式: 设
f
(
x
)
=
(
x
−
x
∗
)
m
q
(
x
)
f(x)=(x-x^*)^mq(x)
f(x)=(x−x∗)mq(x),整数
m
≥
2
,
q
(
x
∗
)
≠
0
m\geq2,q(x^*)\neq0
m≥2,q(x∗)=0,则
x
∗
x^*
x∗ 为方程
f
(
x
)
=
0
f(x)=0
f(x)=0 的m重根
g
(
x
)
=
x
−
f
(
x
)
f
′
(
x
)
g
′
(
x
∗
)
=
f
(
x
)
f
′
′
(
x
)
[
f
′
(
x
)
]
2
∣
x
=
x
∗
=
m
(
m
−
1
)
(
x
−
x
∗
)
2
m
−
2
q
(
x
)
+
2
m
(
x
−
x
∗
)
2
m
−
1
q
′
(
x
)
q
(
x
)
+
(
x
−
x
∗
)
2
m
q
(
x
)
q
′
′
(
x
)
m
2
(
x
−
x
∗
)
2
m
−
2
q
(
x
)
2
+
(
x
−
x
∗
)
2
m
q
′
(
x
)
2
+
2
m
(
x
−
x
∗
)
2
m
−
1
q
(
x
)
q
′
(
x
)
∣
x
=
x
∗
=
m
(
m
−
1
)
q
(
x
)
+
2
m
(
x
−
x
∗
)
q
′
(
x
)
q
(
x
)
+
(
x
−
x
∗
)
2
q
(
x
)
q
′
′
(
x
)
m
2
q
(
x
)
2
+
(
x
−
x
∗
)
2
q
′
(
x
)
2
+
2
m
(
x
−
x
∗
)
q
(
x
)
q
′
(
x
)
∣
x
=
x
∗
=
1
−
1
m
≠
0
,
∣
g
′
(
x
∗
)
∣
<
1
g(x)=x-\frac{f(x)}{f'(x)}\\g'(x^*)=\frac{f(x)f''(x)}{[f'(x)]^2}|_{x=x^*}=\frac{m(m-1)(x-x^*)^{2m-2}q(x)+2m(x-x^*)^{2m-1}q'(x)q(x)+(x-x^*)^{2m}q(x)q''(x)}{m^2(x-x^*)^{2m-2}q(x)^2+(x-x^*)^{2m}q'(x)^2+2m(x-x^*)^{2m-1}q(x)q'(x)}|_{x=x^*}\\=\frac{m(m-1)q(x)+2m(x-x^*)q'(x)q(x)+(x-x^*)^2q(x)q''(x)}{m^2q(x)^2+(x-x^*)^2q'(x)^2+2m(x-x^*)q(x)q'(x)}|_{x=x^*}=1-\frac{1}{m}\neq0\ \ ,\ \ |g'(x^*)|<1
g(x)=x−f′(x)f(x)g′(x∗)=[f′(x)]2f(x)f′′(x)∣x=x∗=m2(x−x∗)2m−2q(x)2+(x−x∗)2mq′(x)2+2m(x−x∗)2m−1q(x)q′(x)m(m−1)(x−x∗)2m−2q(x)+2m(x−x∗)2m−1q′(x)q(x)+(x−x∗)2mq(x)q′′(x)∣x=x∗=m2q(x)2+(x−x∗)2q′(x)2+2m(x−x∗)q(x)q′(x)m(m−1)q(x)+2m(x−x∗)q′(x)q(x)+(x−x∗)2q(x)q′′(x)∣x=x∗=1−m1=0 , ∣g′(x∗)∣<1所以当
x
∗
x^*
x∗ 为
f
(
x
)
=
0
f(x)=0
f(x)=0 的
m
(
m
≥
2
)
m(m\geq2)
m(m≥2) 重零点,
f
(
x
)
f(x)
f(x) 在其零点
x
∗
x^*
x∗ 的某邻域内有二阶连续导数,则牛顿法局部线性收敛,为使其仍然二次收敛,需对其修正。
若已知重根数 m m m:取 g ( x ) = x − m f ( x ) f ′ ( x ) g(x)=x-m\frac{f(x)}{f'(x)} g(x)=x−mf′(x)f(x),可得:
g ′ ( x ∗ ) = 1 − m ∗ [ f ′ ( x ) ] 2 − f ( x ) f ′ ′ ( x ) [ f ′ ( x ) ] 2 = 1 − m + m ∗ f ( x ) f ′ ′ ( x ) [ f ′ ( x ) ] 2 = 1 − m + m ∗ ( 1 − 1 m ) = 0 g'(x^*)=1-m*\frac{[f'(x)]^2-f(x)f''(x)}{[f'(x)]^2}=1-m+m*\frac{f(x)f''(x)}{[f'(x)]^2}=1-m+m*(1-\frac{1}{m})=0 g′(x∗)=1−m∗[f′(x)]2[f′(x)]2−f(x)f′′(x)=1−m+m∗[f′(x)]2f(x)f′′(x)=1−m+m∗(1−m1)=0则迭代法:
x k + 1 = x k − m f ( x k ) f ′ ( x k ) , k = 0 , 1 , ⋯ x_{k+1}=x_k-\frac{mf(x_k)}{f'(x_k)}\ \ ,\ \ k=0,1,\cdots xk+1=xk−f′(xk)mf(xk) , k=0,1,⋯是局部二次收敛的。若重根数 m m m 未知: 令 F ( x ) = f ( x ) f ′ ( x ) F(x)=\frac{f(x)}{f'(x)} F(x)=f′(x)f(x),若 x ∗ x^* x∗ 是 f ( x ) = 0 f(x)=0 f(x)=0 的 m m m 重根,则
F ( x ) = ( x − x ∗ ) m q ( x ) m ( x − x ∗ ) m − 1 q ( x ) + ( x − x ∗ ) m q ′ ( x ) = ( x − x ∗ ) q ( x ) m q ( x ) + ( x − x ∗ ) q ′ ( x ) F(x)=\frac{(x-x^*)^mq(x)}{m(x-x^*)^{m-1}q(x)+(x-x^*)^mq'(x)}=\frac{(x-x^*)q(x)}{mq(x)+(x-x^*)q'(x)} F(x)=m(x−x∗)m−1q(x)+(x−x∗)mq′(x)(x−x∗)mq(x)=mq(x)+(x−x∗)q′(x)(x−x∗)q(x)得到 x ∗ x^* x∗ 是 F ( x ) = 0 F(x)=0 F(x)=0 的单根,用牛顿法,其迭代函数为:
g ( x ) = x − F ( x ) F ′ ( x ) = x − f ( x ) f ′ ( x ) [ f ′ ( x ) ] 2 − f ( x ) f ′ ′ ( x ) [ f ′ ( x ) ] 2 = x − f ( x ) f ′ ( x ) [ f ′ ( x ) ] 2 − f ( x ) f ′ ′ ( x ) g(x)=x-\frac{F(x)}{F'(x)}=x-\frac{\frac{f(x)}{f'(x)}}{\frac{[f'(x)]^2-f(x)f''(x)}{[f'(x)]^2}}=x-\frac{f(x)f'(x)}{[f'(x)]^2-f(x)f''(x)} g(x)=x−F′(x)F(x)=x−[f′(x)]2[f′(x)]2−f(x)f′′(x)f′(x)f(x)=x−[f′(x)]2−f(x)f′′(x)f(x)f′(x)从而可构造迭代法
x k + 1 = x k − f ( x ) f ′ ( x ) [ f ′ ( x ) ] 2 − f ( x ) f ′ ′ ( x ) , k = 0 , 1 , ⋯ x_{k+1}=x_k-\frac{f(x)f'(x)}{[f'(x)]^2-f(x)f''(x)}\ \ ,\ \ k=0,1,\cdots xk+1=xk−[f′(x)]2−f(x)f′′(x)f(x)f′(x) , k=0,1,⋯是二阶收敛的。
迭代加速方法
1、艾特肯(Aitken)加速方法:对于收敛于
x
∗
x^*
x∗ 的不动点迭代法
x
k
+
1
=
g
(
x
k
)
x_{k+1}=g(x_k)
xk+1=g(xk),设
x
k
x_k
xk 是根
x
∗
x^*
x∗ 的某个近似值,用迭代公式校正一次得:
x
k
+
1
=
g
(
x
k
)
x_{k+1}=g(x_k)
xk+1=g(xk)由微分中值定理得
x
k
+
1
−
x
∗
=
g
(
x
k
)
−
g
(
x
∗
)
=
g
′
(
ζ
)
(
x
k
−
x
∗
)
,
ζ
介
于
x
k
、
x
∗
之
间
x_{k+1}-x^*=g(x_k)-g(x^*)=g'(\zeta)(x_k-x^*)\ \ ,\ \ \zeta介于x_k、x^*之间
xk+1−x∗=g(xk)−g(x∗)=g′(ζ)(xk−x∗) , ζ介于xk、x∗之间假定
g
′
(
x
)
g'(x)
g′(x) 改变不大,近似去某个近似值
L
L
L,则有
x
k
+
1
−
x
∗
≈
L
(
x
k
−
x
∗
)
(1)
x_{k+1}-x^*\approx L(x_k-x^*)\tag{1}
xk+1−x∗≈L(xk−x∗)(1)再进行一次校正,得
x
k
+
2
=
g
(
x
k
+
1
)
x
k
+
2
−
x
∗
≈
L
(
x
k
+
1
−
x
∗
)
x_{k+2}=g(x_{k+1})\\x_{k+2}-x^*\approx L(x_{k+1}-x^*)
xk+2=g(xk+1)xk+2−x∗≈L(xk+1−x∗)与(1)式联立消去未知的
L
L
L ,有
x
∗
−
x
k
+
1
x
∗
−
x
k
=
x
∗
−
x
k
+
2
x
∗
−
x
k
+
1
x
∗
≈
x
k
x
k
+
2
−
x
k
+
1
2
x
k
+
2
−
2
x
k
+
1
+
x
k
=
x
k
−
(
x
k
+
1
−
x
k
)
2
x
k
+
2
−
2
x
k
+
1
+
x
k
\frac{x^*-x_{k+1}}{x^*-x_k}=\frac{x^*-x_{k+2}}{x^*-x_{k+1}}\\x^*\approx\frac{x_kx_{k+2}-x_{k+1}^2}{x_{k+2}-2x_{k+1}+x_k}=x_k-\frac{(x_{k+1}-x_k)^2}{x_{k+2}-2x_{k+1}+x_k}
x∗−xkx∗−xk+1=x∗−xk+1x∗−xk+2x∗≈xk+2−2xk+1+xkxkxk+2−xk+12=xk−xk+2−2xk+1+xk(xk+1−xk)2可用上式右端作为
x
∗
x^*
x∗ 的新近似:
x
~
k
=
x
k
−
(
x
k
+
1
−
x
k
)
2
x
k
+
2
−
2
x
k
+
1
+
x
k
\tilde{x}_k=x_k-\frac{(x_{k+1}-x_k)^2}{x_{k+2}-2x_{k+1}+x_k}
x~k=xk−xk+2−2xk+1+xk(xk+1−xk)2。这被称为艾特肯(Aitken)加速方法。
2、斯蒂芬森(Steffensen)方法:也称为艾特肯算法,把艾特肯加速技巧与不动点迭代结合,可得: { y k = g ( x k ) z k = g ( y k ) x k + 1 = x k − ( y k − x k ) 2 z k − 2 y k + x k ( k = 0 , 1 , 2 , ⋯ ) \begin{cases}y_k=g(x_k)\\z_k=g(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) ⎩⎪⎨⎪⎧yk=g(xk)zk=g(yk)xk+1=xk−zk−2yk+xk(yk−xk)2 (k=0,1,2,⋯)
也可将其写成另一种不动点迭代:
x
k
+
1
=
g
(
x
k
)
(
k
=
0
,
1
,
2
,
⋯
)
其
中
g
(
x
)
=
x
−
(
g
(
x
)
−
x
)
2
g
(
g
(
x
)
)
−
2
g
(
x
)
+
x
x_{k+1}=g(x_k)\ \ \ (k=0,1,2,\cdots)\\其中\ \ \ g(x)=x-\frac{(g(x)-x)^2}{g(g(x))-2g(x)+x}
xk+1=g(xk) (k=0,1,2,⋯)其中 g(x)=x−g(g(x))−2g(x)+x(g(x)−x)2