Solutions of Equations in One Variable
本章致力于求解
其中 x 是一元标量。
The Bisection Method
二分法(Bisection Method)要求 f∈C[a,b],且 f(a) 与 f(b) 异号。根据连续函数的介值定理,f 在 [a,b] 上至少有一个根。
其思想非常简单,不断考虑区间中点 pn,等于 0 则找到根,不等于 0 则用来替换与之同号的区间端点,从而不断缩小区间。数学归纳可以证明,迭代序列 {pn} 和收敛到的零点 p 满足
∣pn−p∣⩽2nb−a,n⩾1
分析其优缺点:
- pros
- cons:
- 收敛较慢
- 一个好的中间近似解可能被无意丢弃
- 无法找到重根、复根
Fixed-Point Iteration
使用不动点迭代,首先将原方程求根问题进行转换
f(x)=0⟺g(x):=f(x)+x=x
于是将求根问题转换为求不动点问题。当然,定义 g(x) 为 x−f(x) 或者 x+3f(x) 等等都是可以的。
Fixed Point
给定函数 g,当 p 满足
则称 p 为 g 的不动点 (Fixed Point) 。
不动点迭代法即选定一个初始值 p0,随后使用 pn=g(pn−1) 进行迭代。如果数列 {pn} 收敛到 p,而且 g 连续,那么就有
p=n→∞limpn=n→∞limg(pn−1)=g(n→∞limpn−1)=g(p)
因此问题的关键成为如何保证 {pn} 收敛。这里有一个定理:
Fixed-Point Theorem
如果 g∈C[a,b] 满足
- g([a,b])∈[a,b]
- ∀x∈(a,b), ∃g′(x), and ∃k∈(0,1) s.t. ∣g′(x)∣⩽k
那么 ∀p0∈[a,b],数列 {pn} 收敛到 [a,b] 上唯一的不动点 p。
Proof
预设不动点 p 的存在唯一性。由于 g([a,b])∈[a,b],所以从 p0∈[a,b] 出发,迭代得到 pn=g(pn−1) 都落在 [a,b] 之中。随后,根据 Lagrange 中值定理有
∣pn−p∣=∣g(pn−1)−g(p)∣=∣g′(ξ)∣∣pn−1−p∣⩽k∣pn−1−p∣
所以 ∣pn−p∣⩽k∣pn−1−p∣⩽k2∣pn−2−p∣⩽⋯⩽kn∣p0−p∣。由于 k∈(0,1),所以 n→∞limkn=0,于是 n→∞lim∣pn−p∣=0,即得 n→∞limpn=p。
注意这里预设了 [a,b] 上 g 有唯一的不动点 p,这是因为定理条件已经满足了不动点存在唯一性的充分条件,在这里给出其相关定理:
Existence and Uniqueness of Fixed Point
- (存在性)如果 g∈C[a,b],且 g([a,b])⊆[a,b],那么 g 在 [a,b] 上有至少一个不动点
- (唯一性)在以上的基础上,∀x∈(a,b), ∃g′(x), and ∃k∈(0,1) s.t. ∣g′(x)∣⩽k,那么 g 在 [a,b] 有且只有一个不动点
Proof
-
- 如果 g(a)=a 或者 g(b)=b,那么 a 或者 b 就是不动点
- 如果 g(a)=a 且 g(b)=b,那么必有 g(a)>a 和 g(b)<b。考虑 h(x)=g(x)−x,由连续函数的介值定理,∃c∈(a,b) 使得 h(c)=g(c)−c=0。
-
设 g 在 [a,b] 上有两个不动点 p1 和 p2,那么 g(p1)=p1 和 g(p2)=p2,于是
∣p1−p2∣=∣g(p1)−g(p2)∣=∣g′(ξ)∣⋅∣p1−p2∣⩽k∣p1−p2∣
其中第二个等号使用了 Lagrange 中值定理,有 ξ∈(p1,p2)⊂[a,b]。由于 k∈(0,1),所以 ∣p1−p2∣=0,即得 p1=p2。
在不动点定理的假设下,可以得到用 pn 近似 p 的误差估计:
Error Estimate for Fixed-Point Iteration
用 pn 近似 p 的绝对误差满足
∣pn−p∣⩽1−kkn∣p1−p0∣
以及
∣pn−p∣⩽knmax{p0−a,b−p0}
Newton's Method
又称 Newton-Raphson Method,实质是二阶泰勒展开舍去二阶及以上高阶项。
0=f(p)=f(p0)+f′(p0)(p−p0)+2f′′(ξ)(p−p0)2≈f(p0)+f′(p0)(p−p0)
由此有
p≈p0−f′(p0)f(p0)
将这样计算的 p 记为 p1,然后根据此式子迭代。由此发现,Newton's Method 也是泛函迭代 pn=g(pn−1) 的一种,其迭代函数为
g(x)=x−f′(x)f(x)
原始的 Newton's Method 有如下注意点:
- 有某个 n 使得 f′(pn−1)=0,此时迭代无法继续
- 在 p 附近 f′ 有界且远离 0,那么 Newton's Method 效率较高
- 收敛性受初始值选择影响比较大,这在后面的分析中可以看出
Convergence
Convergence of Newton's Method
设 f∈C2[a,b],根 p 满足 f(p)=0 且 f′(p)=0(单根),则 ∃δ>0 使得 p0∈(p−δ,p+δ) 时,Newton's Method 产生的序列 {pn} 收敛到 p。
Proof
根据泛函迭代格式,Newton's Method 有
g(x)=x−f′(x)f(x)
希望应用不动点定理,所以要验证满足其条件。
- g 良定义:f∈C2[a,b],所以 f′∈C[a,b],根据极限的保号性,f′(p)=0 保证了存在 δ0>0 使得在 [p−δ0,p+δ0] 中都有 f′(x)=0,所以在 [p−δ0,p+δ0] 上 g 是良定义的
- g∈C1[p−δ0,p+δ0]:g′(x)=[f′(x)]2f(x)f′′(x),结合 f∈C2[a,b] 可得
包含了 g∈C[p−δ0,p+δ0] 和 x∈[p−δ0,p+δ0], ∃g′(x) 两层条件
- ∃k∈(0,1), ∀x∈(a,b) there is ∣g′(x)∣⩽k:可知 g′(p)=0,由于 g∈C1[p−δ0,p+δ0],所以 ∃δ>0 使得在 [p−δ,p+δ] 上都有 ∣g′(x)∣⩽k,其中可以任取 k∈(0,1)
- g([p−δ,p+δ])⊆[p−δ,p+δ]:∀x∈[p−δ,p+δ]
∣g(x)−p∣=∣g(x)−g(p)∣=∣g′(ξ)∣∣x−p∣⩽k∣x−p∣⩽kδ<δ
综上,应用不动点定理则得证。
Improvement
优化牛顿法(用于 Lab2):用 μ(x)=f′(x)f(x) 替换原来的 f(x),即公式变成
pn=pn−1−μ′(x)μ(x)=pn−1−[f′(pn−1)]2−f(pn−1)f′′(pn−1)f(pn−1)f′(pn−1)
优化牛顿法相比牛顿法
- pros: 计算重根速度更快(二阶收敛)
- cons:
- 需要额外计算二阶导
- 分母 (denominator) 的两项可能相近导致舍入误差大
分子 (numerator)
割线法 (Secant Method):使用割线斜率替代严格的导数,避免较难的导数计算,但是收敛速度比 Newton's Method 慢
具体而言,迭代公式为
pn=pn−1−f(pn−1)−f(pn−2)f(pn−1)(pn−1−pn−2)
实际执行中,可以描述为前两个点的直线和 x 轴的交点作为新的点。这是因为前两个点决定的直线为
y=f(pn−1)+pn−1−pn−2f(pn−1)−f(pn−2)(x−pn−1)
令 y=0,求解的 x 刚好就是迭代公式中的 pn。
试位法 (The Method of False Position):书上还介绍了这种方法,但不是通常推荐的方法。它的思想是像二分一样,保证这次迭代点和上次迭代点中间有根,因此多了符号检查的步骤,计算量通常比割线法更大。
Error Analysis for Iterative Methods
Rate of Convergence
考虑收敛到 p 的数列 {pn},如果存在常数 α>0,λ>0 使得
n→∞lim∣pn−p∣α∣pn+1−p∣=λ
那么称 {pn} 以 α 阶收敛到 p (converge to p of order α),且 λ 称为渐进误差常数 (asymptotic error constant)。
特别地,
- α=1,则称 {pn} 线性收敛到 p (linearly convergent)
- α=2,则称 {pn} 二次收敛到 p (quadratically convergent)
Calculation of Order of Convergence
设 p 为 g(x) 的不动点,若
- 存在常数 α⩾2 使得 g∈Cα[p−δ,p+δ]
- g′(p)=g′′(p)=⋯=g(α−1)(p)=0
- g(α)(p)=0
那么不动点迭代生成的 {pn} 以 α 阶收敛到 p。
Proof
pn+1=g(pn)=g(p)+g′(p)(pn−p)+2!g′′(p)(pn−p)2+⋯+α!g(α)(ξn)(pn−p)α=p+α!g(α)(ξn)(pn−p)αn→∞p+λ(pn−p)α
其中 λ=α!g(α)(p) 是渐进误差常数,这是因为不动点定理保证了收敛,而 ξn 取于 p 和 pn 之间,所以 ξn→p。
通过这个定理,可以导出书上的两个定理
- g′(p)=0,则线性收敛
- g′(p)=0,则二次收敛(因此牛顿法对于单根二次收敛)
Zero of Multiplicity m
对于 f(x) 的 m 重零点 (zero of multiplicity m) p (m⩾2),x=p 时有
f(x)=(x−p)mq(x)
其中 x→plimf(p)=0。对于 Newton's Method,二次收敛降为线性收敛,因为
g′(x)g′(p)=1−[mq(x)+(x−p)q′(x)(x−p)q(x)]′=1−[mq(x)+(x−p)q′(x)]2mq2(x)+(x−p)2[q′(x)]2−(x−p)2q(x)q′′(x)=1−m1=0
仍希望二次收敛,则应用上一节提到的优化牛顿法,使用 g(x)=f′(x)f(x) 替换 f(x),这样 f 的重根 (simple root) 就成为了 μ 的单根。
Accelerating Convergence
Aitken's Δ2 Method
Aitken's Δ2 Method 是一种加速收敛的方法,其思想是用前两个点连线与 y=x 的交点替代第三个点。迭代的前两个点坐标为
(p0,g(p0))=(p0,p1),(p1,g(p1))=(p1,p2)
这样就能得到两点连线方程
y=g(p0)+p1−p0g(p1)−g(p0)(x−p0)=p1+p1−p0p2−p1(x−p0)
令 y=x=p^,解得
p^=p0−p2−2p1+p0(p1−p0)2
Aitken's Δ2 Method 定义数列
p^n=pn−pn+2−2pn+1+pn(pn+1−pn)2
并认为 {p^n} 比 {pn} 更快收敛到 p。
Forward Difference
对数列 {pn} 定义前向差分 (forward difference) Δpn:
Δpn=pn+1−pn
其高次幂可以递归定义为
Δkpn=Δ(Δk−1pn),k⩾2
有了前向差分记号,就可以把 Aitken's Δ2 Method 的公式写成
p^n=pn−Δ2pn(Δpn)2
根据以下定理可以定量证明 Aitken's Δ2 Method 的加速效果:
Acceleration of Aitken's Δ2 Method
设 {pn} 线性收敛到 p,并满足
n→∞limpn−ppn+1−p<1
则有
n→∞limpn−pp^n−p=0
Steffensen's Method
与直接应用 Aitken's Δ2 Method 于不动点迭代不同,Steffensen's Method 是将 Aitken's Δ2 Method 修正原始不动点迭代。通过这种修正,可以将线性收敛的不动点迭代加速为二次收敛。
简单地说,就是
p1p2pp0←g(p0)←g(p1)←p0−p2−2p1+p0(p1−p0)2←p
持续以上的循环。
Acceleration of Steffensen's Method
设 p 为 g(x) 的不动点,满足 g′(p)=1。若存在 δ>0 使得 g∈C3[p−δ,p+δ],则 Steffensen's Method 对 ∀p0∈[p−δ,p+δ] 二次收敛到 p。