求解非线性方程时,即使已经知道实根存在,也往往无法用有限个初等运算写出它。本篇讨论两条基本思路:二分法不断缩小包含根的区间,不动点迭代则反复应用一个映射,使近似值逐步靠近所求的根。
上一篇区分了误差、残差和问题的条件性。本篇进一步说明:哪些条件能保证迭代收敛,如何在不知道真根的情况下估计误差,以及计算应在什么时候停止。
本文主要研究实标量方程 f(x)=0。用 α 表示所考察的真根,xn 表示第 n 个迭代值,en=xn−α 表示有符号误差。理论结论默认在精确算术下成立;浮点实现中的限制会另行说明。
1. 根的存在、唯一性与隔离
1.1 根与重数
定义(根)
若 f 在 α 处有定义且 f(α)=0,则称 α 为方程 f(x)=0 的根,也称为 f 的零点。
若在 α 的某个邻域内有
f(x)=(x−α)mg(x),g 连续,g(α)=0,
其中 m 为正整数,则称 α 为 m 重根;m=1 时称为单根。
在这一条件下,奇数重根两侧的函数值在充分小的邻域内异号,偶数重根两侧则同号。对一般连续函数,不一定能赋予零点这样的有限重数。
1.2 介值定理提供存在性
定理(异号区间内的根)
设 f∈C[a,b],a<b。若
f(a)f(b)<0,
则至少存在一个 α∈(a,b),使 f(α)=0。若端点函数值为零,则端点本身已经是根,应优先处理。
连续性不可省略:f(x)=1/x 在 −1 与 1 处的值异号,但它在零点处没有定义,在整个区间内也没有根。
异号条件是这一存在性判据的充分条件,并非根存在的必要条件。例如 f(x)=x2 在 [−1,1] 内有根,但两端同号。
1.3 唯一性与根的隔离
若 f 在 [a,b] 上严格单调,则该区间内至多有一个根。将严格单调性与端点异号结合,可得到根的存在唯一性。
一个常用的充分条件是:f 在闭区间上连续、内部可微,且在内部始终有 f′(x)>0,或始终有 f′(x)<0。
寻找只含一个目标根的区间称为根的隔离。可以借助函数图形、导数分析和分段检查来寻找候选区间,但有限采样可能遗漏偶数重根、间隔很近的多个根或窄区间内的符号变化。
例如,f(x)=x3−x−2 满足 f(1)=−2、f(2)=4,且在 [1,2] 内 f′(x)=3x2−1>0,所以这个区间内恰有一个根。
2. 二分法的构造
2.1 区间与编号约定
设初始区间为 I0=[a0,b0],f 在其上连续,端点异号。经过 n 次区间折半后,记保留区间为
In=[an,bn],mn=2an+bn,n=0,1,2,….
因此 m0 是初始区间的中点;计算中点本身不算一次已经完成的折半。这个约定决定了后面误差界中的下标。
2.2 算法步骤
- 输入函数 f、区间 [a0,b0]、绝对误差容差 ε>0 和最大折半次数。检查定义域与连续性,并计算端点值。
- 若某个端点值为零,输出该端点;若端点同号,则该初始区间不满足二分法的异号条件。
- 在当前区间 [an,bn] 上计算中点 mn。若区间半宽不超过 ε,输出 mn 及当前区间。
- 计算 f(mn)。在精确算术下,若 f(mn)=0,则输出 mn。
- 若 f(an) 与 f(mn) 异号,令 In+1=[an,mn];否则令 In+1=[mn,bn]。
- 重复以上过程;达到次数上限而尚未满足停止条件时,应报告未达到所需精度。
端点符号比较在程序中宜直接进行,不必先计算乘积,以避免乘法上溢或下溢影响符号判断。
2.3 二分法保留了什么
若没有提前找到精确根,则每一步都有
In+1⊂In,f(an)f(bn)<0,bn−an=2nb0−a0.
区间套定理给出唯一交点 α∈⋂n=0∞In,连续性进一步保证 f(α)=0。
这里的“唯一交点”并不要求原始区间只含一个根。即使初始区间含有多个根,二分过程仍会沿所选子区间收敛到其中一个;不过,预先隔离根有助于明确所求对象。
3. 二分法的误差与停止准则
3.1 中点误差界
定理(二分法误差界)
在上述假设和编号约定下,若 α 是保留区间套所确定的根,则
∣mn−α∣≤2bn−an=2n+1b0−a0.
这个上界只需要区间信息,不需要知道真根,也不需要计算导数。
3.2 预先确定折半次数
为保证 ∣mn−α∣≤ε,只需
n≥max{0,⌈log22εb0−a0⌉}.
例如初始区间长度为 1,要求绝对误差不超过 10−6,则 19 次折半后输出 m19 即有保证:
∣m19−α∣≤2−20≈9.5367431640625×10−7.
若教材把第一次中点记为 m1,同一个结论就会换一种下标形式。比较次数公式前,应先统一编号。
3.3 区间宽度、实际误差与残差
区间半宽每次恰好减半,但中点实际误差不一定每次恰好减半,甚至可能出现某一步误差小、下一步误差稍大的情况。二分法保证的是几何下降的误差上界。
若还知道在连接 mn 与 α 的区间上 ∣f′(x)∣≤M,则
∣f(mn)∣≤M∣mn−α∣.
若反过来知道 ∣f′(x)∣≥μ>0,才可由残差控制误差:
∣mn−α∣≤μ∣f(mn)∣.
两式均要求 f 在相应闭区间连续、内部可微。仅看到 ∣f(mn)∣ 很小,不能跳过导数条件就断言解误差很小。
3.4 浮点实现的边界
理论上可以无限折半,浮点区间却只有有限个可表示数。若计算出的中点已经等于某个端点,就无法继续缩小区间,应报告浮点精度限制。
中点可根据数值范围选择 a+(b−a)/2 或 a/2+b/2 等计算方式,避免中间求和或求差上溢。浮点中点不一定恰好位于两端的正中央;根据实际计算出的中点,可用两侧距离的较大值作为几何半径的数值估计。
此外,计算机返回 f(m)=0 可能只是函数求值舍入的结果。严格认证需要可靠的符号判定和向外舍入的区间界;普通浮点演示不自动提供这种认证。
下面先单步观察区间保留方向,再运行到容差。也可以输入端点同号的区间,观察算法如何报告初始条件不满足。
图中保留当前区间的全局位置,同时单独放大当前区间;表格显示最近几步的中点与误差界估计。图上的函数曲线来自有限采样,不能代替连续性证明。预设函数的连续性已知,符号与区间读数采用浏览器浮点运算。
4. 从方程求根到不动点
4.1 不动点与迭代格式
定义(不动点)
若 φ(α)=α,则称 α 为映射 φ 的不动点。给定初值 x0,递推
xn+1=φ(xn),n=0,1,2,…
称为不动点迭代。
如果 xn→α,且 φ 在 α 连续,那么对递推式取极限可得 φ(α)=α。但这个推论预先假定了迭代收敛,不能反过来作为它必然收敛的证明。
4.2 等价改写需要限定范围
为了用不动点迭代求解 f(x)=0,应在所讨论区域内保证
f(x)=0⟺x=φ(x).
除以一个可能为零的表达式、取平方根或平方,都可能改变定义域或根的集合。改写之后应重新检查等价性,而不只检查目标根是否满足新公式。
例如,在 x>0 的范围内,方程 x2−2=0 可写成
φ1(x)φ2(x)φ3(x)φ4(x)=x−4x2−2,=x2,=x2+x−2,=21(x+x2).
这四种形式都有正不动点 2,却可能产生收敛、周期振荡或离开目标根邻域等不同现象。
4.3 迭代区间的不变性
若想在 I=[a,b] 内研究整个迭代,首先应检查
φ(I)⊆I.
这称为区间不变性。它保证从 I 内出发的迭代始终有机会使用在 I 上建立的估计。
只有 ∣φ′(x)∣<1 而没有适当的不变区域或不动点存在性条件,并不能保证在指定区间内得到根。例如 φ(x)=x/2+1 在 [0,1] 上导数为 1/2,但其不动点为 2,不在该区间内。
5. 压缩映射与全区间收敛
5.1 区间内不动点的存在
定理
若 φ∈C[a,b] 且 φ([a,b])⊆[a,b],则 φ 在 [a,b] 内至少有一个不动点。
因为 h(x)=φ(x)−x 在两端满足 h(a)≥0、h(b)≤0,可应用介值定理。这个存在性结论本身还不保证唯一性,也不保证所有初值的迭代都收敛。
5.2 压缩映射定理
定义(压缩映射)
若存在常数 q∈[0,1),使对任意 x,y∈I 都有
∣φ(x)−φ(y)∣≤q∣x−y∣,
则称 φ 在 I 上为压缩映射,q 为一个压缩常数。压缩常数可以取比最小 Lipschitz 常数更大的数,只要仍小于 1。
定理(闭区间上的压缩映射原理)
设 I=[a,b],φ(I)⊆I,且 φ 在 I 上为压缩映射。则:
- I 内存在唯一不动点 α。
- 对任意 x0∈I,迭代 xn+1=φ(xn) 始终留在 I 内,并收敛到 α。
- 误差满足 ∣en+1∣≤q∣en∣,因此 ∣en∣≤qn∣e0∣。
这里的“任意初值”指 I 内的任意初值,并不是整个实轴上的任意初值。
5.3 导数给出的充分条件
若 φ 在 [a,b] 上连续、内部可微,且存在统一常数 q<1 使
∣φ′(x)∣≤q,x∈(a,b),
则由中值定理得到压缩条件。若 φ∈C1[a,b],并在整个闭区间上 ∣φ′(x)∣<1,可利用最大值定理取得这样的统一上界。
5.4 一个完整的收敛性检查
对 φ1(x)=x−(x2−2)/4,在 I=[1,2] 上有
φ1′(x)=1−2x∈[0,1/2],φ1(I)=[5/4,3/2]⊂I.
因此可以取 q=1/2,从 [1,2] 内任意初值出发均收敛到唯一不动点 2。这里同时检查了等价性、不变性和压缩性。
6. 先验与后验误差估计
6.1 先验估计
在压缩映射定理的条件下,若 0<q<1,则对 n≥0 有
∣xn−α∣≤1−qqn∣x1−x0∣.
右端由初始两点、压缩常数和步数决定,可用来预估所需迭代次数,因此称为先验估计。
若 D=∣x1−x0∣>0,为使上界不超过 ε>0,可取
n≥max{0,⌈logqlog(ε(1−q)/D)⌉}.
注意 logq<0,解不等式时必须改变不等号方向。若 D=0,在精确算术下初值已是不动点;若 q=0,映射在区间上为常值,迭代一步即到不动点,无须使用这个含对数的公式。
6.2 后验估计
对 n≥1,有
∣xn−α∣≤1−qq∣xn−xn−1∣.
它利用刚刚计算出的相邻迭代差,称为后验估计。若多计算一次 φ(xn),还可写为
∣xn−α∣≤1−q∣φ(xn)−xn∣.
这两式估计的都是 xn 的误差,但使用的数据下标不同,不能把系数 q/(1−q) 和 1/(1−q) 随意交换。
6.3 相邻迭代差为何需要系数
考虑 φ(x)=0.999x+0.001,其不动点为 1。从 x0=0 出发,x1=0.001,所以
∣x1−x0∣=0.001,∣x1−1∣=0.999.
这里 q/(1−q)=999,后验估计恰好给出 0.999。相邻两步变化很小,可能只是迭代移动得很慢,而不是已经接近真根。
6.4 舍入扰动下的误差平台
若实际迭代满足
xn+1=φ(xn)+ξn,∣ξn∣≤η,
并且所有计算点仍处在压缩估计适用的区域内,则
∣xn−α∣≤qn∣x0−α∣+1−q1−qnη.
其中 η≥0 是每步绝对扰动的统一上界,不是相对容差。它表明舍入影响可能形成约 η/(1−q) 的误差尺度;q 越接近 1,持续扰动越容易积累。
7. 局部收敛与不动点的类型
7.1 局部收敛判据
定理
设 φ 在不动点 α 的某个开邻域内连续可微,且
∣φ′(α)∣<1.
则存在 δ>0,使任意满足 ∣x0−α∣≤δ 的初值都产生收敛到 α 的迭代。
导数的连续性允许在充分小的闭邻域内取得统一压缩常数;以不动点为中心的距离估计又保证该邻域不变。这个定理只给出足够近的初值所对应的结论。
7.2 吸引、排斥与振荡
由可微性,
en+1=φ′(α)en+o(∣en∣).
因此在充分靠近不动点时:
- 若 0<φ′(α)<1,非零误差最终保持同号并缩小,迭代从同一侧接近根。
- 若 −1<φ′(α)<0,非零误差最终交替变号并缩小,迭代在根两侧振荡收敛。
- 若 ∣φ′(α)∣>1,不动点局部排斥;足够近但不等于根的点,在仍处于该局部区域时误差会被放大。
最后一种情形不等于断言所有远处初值都趋于无穷。迭代离开邻域之后可能出现别的行为。
7.3 导数绝对值等于一时
若 ∣φ′(α)∣=1,仅凭一阶导数无法判定。
例如,在不动点 0 附近:φ(x)=x−x3 对充分小的非零初值收敛到 0;φ(x)=x+x3 则使非零误差增大;φ(x)=−x 产生不衰减的二周期。
对 φ2(x)=2/x,有 φ2′(2)=−1,并且
φ2(φ2(x))=x,x>0.
因此,除 x0=2 外,精确算术下的正初值都产生二周期,而不收敛到目标根。
8. 收敛阶与迭代函数的选择
8.1 线性、超线性与高阶收敛
设 xn→α,且从某一项起 en=0。若存在 p≥1 和 C>0,使
n→∞lim∣en∣p∣en+1∣=C,
则称其具有 p 阶收敛;p=1 时还要求 0<C<1,称为线性收敛;p=2 时称为二次收敛。
若 ∣en+1∣/∣en∣→0,则称为超线性收敛。它不要求存在某个固定的 p>1 满足上述极限。有限步精确终止的情况单独处理,不使用含零分母的比值。
若误差比趋于 1,常称为次线性收敛。本文的收敛阶采用逐步误差比的定义;二分法已有几何下降的误差上界,不必据此断言其中点误差比必定趋于 1/2。
8.2 导数与收敛阶
设 p≥2 为整数,φ 在不动点 α 的某个开邻域内具有 p 阶连续导数,且
φ′(α)=⋯=φ(p−1)(α)=0,φ(p)(α)=0,p≥2,
则 Taylor 展开给出
en+1=p!φ(p)(α)enp+o(∣en∣p).
从充分近的初值出发,只要未有限步精确终止,迭代具有 p 阶收敛。若 0<∣φ′(α)∣<1,则渐近线性因子为 ∣φ′(α)∣。
8.3 同一个方程的四种迭代
对第 4 节的正根 α=2,有以下比较。
| 迭代函数 | 在根处的导数 | 主要结论 |
|---|
| x−(x2−2)/4 | 1−2/2 | 在 [1,2] 上压缩,渐近线性收敛。 |
| 2/x | −1 | 非不动点正初值产生二周期。 |
| x2+x−2 | 1+22 | 正不动点局部排斥。 |
| (x+2/x)/2 | 0 | 在根附近二次收敛。 |
最后一种形式还有精确误差关系
φ4(x)−2=2x(x−2)2,x>0.
在 [1,2] 上,它同样满足不变性与压缩条件,可取 q=1/2。不过,全区间压缩常数给出的界可能偏保守;二次收敛描述的是根附近更细致的渐近行为。
选择迭代函数时,应同时考虑等价性、定义域、不变区域、收敛速度和每步计算代价。只追求较小的根处导数,仍可能因初值不合适而失败。
下面用同一个初值比较四种迭代。竖线表示从 xn 到曲线上的 φ(xn),横线将这个纵坐标转移到直线 y=x 上,作为下一步输入。
误差图使用浏览器计算的 2 作为参考值;与该浮点参考值相同只表示达到了当前参考精度。压缩型预设还显示带条件的后验误差估计;对振荡或局部排斥的预设,不套用不存在的压缩常数。
9. Aitken 加速的基本思想
9.1 三个相邻值构造外推
给定序列 xn,定义
Δxn=xn+1−xn,Δ2xn=xn+2−2xn+1+xn.
当 Δ2xn=0 时,Aitken 的 Δ2 变换为
xn=xn−Δ2xn(Δxn)2.
若误差恰好符合 xn=α+cλn,其中 c=0、0<∣λ∣<1,则精确算术下代入公式得到 xn=α。它的作用是消除主要的几何误差项。
9.2 加速结论与使用限制
若 xn→α、误差最终非零,且
enen+1→λ,0<∣λ∣<1,
则二阶差分最终非零,并且
xn−αxn−α→0.
这表示变换后的误差相对于原误差趋于零。不能将它直接表述为对任意输入序列都二次收敛,也不能保证每个有限步骤都会改善结果。
分母很小时,舍入误差可能被严重放大;若分母为零,公式没有定义。程序应检测这种情况,而不是继续相除。
上面的不动点实验可勾选 Aitken 后处理,比较三个原始迭代值对应的外推值。它只对已有序列作变换,不把外推值送回迭代;若把加速结果作为下一轮输入重新生成两步迭代,就进入了下一篇将讨论的 Steffensen 方法。
10. 停止准则与方法对照
10.1 将停止指标转化为误差依据
| 可计算指标 | 能得到的结论 | 需要的条件 |
|---|
| 二分区间半宽不超过 ε | 中点绝对误差不超过 ε。 | 连续性、包含根的区间与可靠符号判定。 |
| 1−qq∣xn−xn−1∣≤ε | 不动点迭代误差不超过 ε。 | 迭代处于不变压缩区域,q<1。 |
| ∣φ(xn)−xn∣≤(1−q)ε | 当前点到不动点的误差不超过 ε。 | 同上,且该点属于压缩区域。 |
| ∣f(xn)∣≤με | 到所考察根的误差不超过 ε。 | 相应区间内导数绝对值下界为 μ>0。 |
表中是精确算术结论。实际实现还需处理非有限结果、定义域越界、迭代停滞和次数上限;这些停止原因应与“已经满足误差要求”明确区分。
10.2 两种方法的适用性
| 项目 | 二分法 | 不动点迭代 |
|---|
| 起点 | 连续函数的端点异号区间。 | 迭代映射与初值。 |
| 核心保证 | 区间嵌套与长度缩小。 | 压缩条件或其他收敛理论。 |
| 导数需求 | 算法本身不需要导数。 | 计算可不含导数,理论分析常用导数。 |
| 误差估计 | 区间半宽直接提供上界。 | 通常需要压缩常数等额外信息。 |
| 速度 | 误差上界稳定地几何下降。 | 可快可慢,也可能振荡或不收敛。 |
实际求根中,可以先用区间方法确定根的位置,再为更快的局部迭代选择初值。使用这种组合时,各阶段的适用条件仍需分别检查。
11. 常见误区
11.1 端点异号就一定有根
还需要函数在整个区间上连续。渐近线两侧的异号不能用来证明存在零点。
11.2 区间同号就没有根
同号只能说明这个异号判据没有给出保证。偶数重根和包含多个根的区间都可能出现端点同号。
11.3 改写成不动点方程就会收敛
等价性只保证根的对应关系,收敛性由迭代映射的性质和初值共同决定。
11.4 局部导数判据等于全局保证
根处导数绝对值小于 1 只保证充分近的初值。若要覆盖整个给定区间,应提供不变性和统一估计。
11.5 后验估计可以省略放大因子
当 q 接近 1 时,q/(1−q) 很大。相邻迭代差小,不等于解误差小。
11.6 数值实验可以代替收敛证明
有限次迭代只能展示该参数下的计算行为,不能证明所有初值都收敛。误差图中的零值也可能只是当前浮点参考精度下的相等。
12. 本篇要点
- 连续性与端点异号保证至少一个根;唯一性需要单调性等额外条件。
- 二分法依靠嵌套区间提供误差界,次数公式必须与中点编号保持一致。
- 不动点迭代需要检查方程改写的等价性、定义域和迭代区域。
- 闭区间上的不变性与压缩性保证唯一不动点及区间内任意初值的收敛。
- 先验估计用于规划步数,后验估计利用当前数据判断误差;两者都需要正确的常数。
- 根处导数决定局部误差传播的主要行为,绝对值等于 1 时需要进一步分析。
- 收敛阶描述渐近误差规律,不自动说明任意初值下的表现或有限步的实际代价。
- Aitken 变换可以消除主要几何误差项,但必须处理二阶差分为零或过小的情况。
下一篇将整理 Newton 法、割线法与非线性方程组,讨论更快的局部求根方法、重根修正和初值选择。
参考资料
- Richard L. Burden, J. Douglas Faires, Annette M. Burden, Numerical Analysis, 10th ed., Cengage Learning:二分法、不动点迭代、误差估计与收敛加速。
- Tobin A. Driscoll, Richard J. Braun, Fundamentals of Numerical Computation,非线性方程与不动点迭代相关章节。
- NIST Digital Library of Mathematical Functions, §3.9 Acceleration of Convergence,Aitken 的 Δ² 过程。