跳转至

Newton 迭代为什么可能快速收敛,也可能失败?

先备知识

第 12 章已经区分“连续函数存在根”和“迭代能够找到根”;第 16 章给出带余项的 Taylor 公式;第 17.2 单元说明凸函数的切线位于图像下方。本页把三者组合起来研究 Newton 迭代。

你还需要会使用误差 \(e_n=x_n-r\) 描述收敛速度。数值实验可以展示轨迹,但定理条件 决定轨迹是否具有证明。

学习目标

完成本单元后,你应当能够:

  1. 从切线横截距推导 Newton 公式;
  2. 核验一组足够强的区间条件并证明单调收敛;
  3. 证明简单根附近的局部二次误差估计;
  4. 推导重数为 \(m\) 时普通 Newton 的线性主项;
  5. 用导数过小、初值不当和二周期解释纯 Newton 的失败。

牵引问题

二分法只用函数值符号,每步稳定地缩小区间。Newton 法还使用导数,往往几步就获得 很多正确数字,却可能一步跳出目标区域、遇到零导数,甚至在两个点之间永久循环。 “通常很快”怎样变成一条有条件的定理?失败又来自哪里?

探索与猜想

在点 \(x_n\) 处,用切线

\[ y=f(x_n)+f'(x_n)(x-x_n) \]

代替原曲线。令切线高度为零,得到横轴交点

\[ x_{n+1}=x_n-\frac{f(x_n)}{f'(x_n)}. \]

这只是一个构造。它立即暴露三个问题:

  1. \(f'(x_n)=0\) 或过小,除法失效或步长过大;
  2. 切线交点可能离开我们了解函数性质的区间;
  3. 即使每一步都有定义,迭代点也未必收敛。

因此,公式本身不带全局收敛保证。

概念与理论

Newton 映射

\(f'(x)\ne0\) 的点定义

\[ N(x)=x-\frac{f(x)}{f'(x)}. \]

Newton 迭代是 \(x_{n+1}=N(x_n)\)。若迭代收敛到 \(r\),且 \(N\)\(r\) 连续, 则 \(r=N(r)\),从而 \(f(r)=0\)。反过来,“\(f(r)=0\)”并不自动保证附近所有初值 都收敛到 \(r\)

强区间条件下的单调收敛

定理。\(f\in C^2[a,b]\),并满足

\[ f(a)f(b)<0, \]
\[ f'(x)\ne0\qquad(x\in[a,b]), \]

\(f''\)\([a,b]\) 上不变号。选择一个端点 \(x_0\),使

\[ f(x_0)f''(x_0)>0. \]

则 Newton 迭代有定义,始终留在 \([a,b]\) 内,并单调收敛到该区间内的唯一根。

证明。

因为 \(f'\) 连续且从不为零,它在整个区间上同号,所以 \(f\) 严格单调。介值定理给出 至少一个根,严格单调性给出至多一个根;记唯一根为 \(r\)

Newton 映射在把 \(f\) 替换为 \(-f\) 时不变,而乘以 \(-1\) 可把 \(f'<0\) 的情况 化为 \(f'>0\)。因此只需处理 \(f'>0\)。此时

\[ f(a)<0<f(b). \]

\(f''\ge0\),函数凸,条件 \(f(x_0)f''(x_0)>0\) 迫使选择右端点一侧的 \(x_0\),于是 \(x_0>r\)\(f(x_0)>0\)。凸函数在 \(x_n\) 处的支撑线不等式给出

\[ 0=f(r)\ge f(x_n)+f'(x_n)(r-x_n). \]

因为 \(f'(x_n)>0\),整理得

\[ r\le x_n-\frac{f(x_n)}{f'(x_n)}=x_{n+1}<x_n. \]

所以只要 \(x_n>r\),下一点仍在 \([r,x_n)\) 内。归纳可知 \((x_n)\) 单调递减且以 \(r\) 为下界。

\(f''\le0\),函数凹,端点条件迫使从根左侧 \(f(x_0)<0\) 的端点启动。凹函数的 切线位于图像上方,同样整理得到

\[ x_n<x_{n+1}\le r. \]

所以序列单调递增且以 \(r\) 为上界。

两种情形下序列都有极限 \(L\in[a,b]\)。由于 \(f'(L)\ne0\),Newton 映射在 \(L\) 连续。对递推式取极限:

\[ L=L-\frac{f(L)}{f'(L)}, \]

\(f(L)=0\)。根唯一,所以 \(L=r\)。证毕。

这是一条方便核验的充分条件,不是 Newton 收敛的必要条件。条件失效时,算法可能仍 收敛,但不能引用本定理作保证。

简单根附近的局部二次收敛

\(r\) 是简单根,即

\[ f(r)=0,\qquad f'(r)\ne0. \]

\(f'\) 的连续性,可以在 \(r\) 的一个闭邻域内找到常数

\[ |f'(x)|\ge \mu>0. \]

\(f''\) 在该邻域连续,再取

\[ |f''(x)|\le M. \]

\(r\)\(x_n\) 处使用二阶 Taylor 公式,存在 \(x_n,r\) 之间的 \(\xi_n\) 使

\[ 0=f(r) =f(x_n)+f'(x_n)(r-x_n) +\frac12f''(\xi_n)(r-x_n)^2. \]

\(e_n=x_n-r\),整理得

\[ e_{n+1} =x_n-\frac{f(x_n)}{f'(x_n)}-r =\frac{f''(\xi_n)}{2f'(x_n)}e_n^2. \]

因此

\[ |e_{n+1}|\le \frac{M}{2\mu}|e_n|^2. \]

\(q=M/(2\mu)\)。再把初值限制为 \(|e_0|\le\delta\),其中 \(q\delta<1\),便有

\[ |e_{n+1}|\le q\delta |e_n|<|e_n|. \]

这同时保证后续迭代留在所选邻域内。误差近似平方,称为局部二次收敛

“局部”是结论不可删除的一部分:这条局部结论只有在初值足够接近简单根,并且迭代 始终留在导数下界和二阶导数上界成立的邻域内时才有效。

重根导致收敛阶退化

\(r\) 是重数为 \(m\ge2\) 的根,在根附近可写成

\[ f(x)=(x-r)^m g(x),\qquad g(r)\ne0, \]

其中 \(g\) 在根的某个邻域内属于 \(C^1\)。令 \(e=x-r\),则

\[ f'(x)=e^{m-1}\bigl(mg(x)+eg'(x)\bigr). \]

普通 Newton 一步后的误差为

\[ \begin{aligned} e_{\mathrm{new}} &=e-\frac{e^m g(x)} {e^{m-1}(mg(x)+eg'(x))}\\ &=e\frac{(m-1)g(x)+eg'(x)} {mg(x)+eg'(x)}\\ &=\left(1-\frac1m\right)e+O(e^2). \end{aligned} \]

主项是误差的一次方,而不是平方,所以普通 Newton 通常只剩线性收敛。

\[ f(x)=(x-1)^2, \]

递推甚至可以精确化简为

\[ x_{n+1}-1=\frac12(x_n-1). \]

每步只把误差减半。

有定义也可能不收敛

对于

\[ f(x)=x^3-2x+2,\qquad f'(x)=3x^2-2, \]

Newton 映射在 \(0,1\) 都有定义,却满足

\[ N(0)=1,\qquad N(1)=0. \]

\(x_0=0\) 出发得到永久二周期。小残差、步长变小和真正收敛必须分别检查;有限次 迭代轨迹不能证明未来行为。

例题与迁移

例 1:\(x^3-x-1=0\) 的强条件路线

\[ f(x)=x^3-x-1. \]

\([1,2]\) 上,

\[ f(1)=-1,\qquad f(2)=5, \]
\[ f'(x)=3x^2-1>0,\qquad f''(x)=6x>0. \]

根存在且唯一。因为

\[ f(2)f''(2)>0, \]

应从 \(x_0=2\) 启动。强区间定理保证迭代从根右侧单调下降并收敛。前几步为

\[ x_1=2-\frac5{11}=\frac{17}{11}\approx1.54545, \]
\[ x_2\approx1.35961,\qquad x_3\approx1.32580. \]

根约为 \(1.3247179572\)。这些数值展示速度,而收敛保证来自前面对全部条件的核验。

例 2:重根只留下线性速度

\(f(x)=(x-1)^2\),从 \(x_0=2\) 出发:

\[ x_1=1.5,\quad x_2=1.25,\quad x_3=1.125. \]

误差依次为

\[ 1,\ \frac12,\ \frac14,\ \frac18. \]

误差比稳定为 \(1/2\),而不是误差平方。函数和导数都很光滑,降阶的原因是 \(f'(1)=0\),根不是简单根。

例 3:纯 Newton 的二周期

\(f(x)=x^3-2x+2\),从 \(x_0=0\) 出发:

\[ x_1=0-\frac{2}{-2}=1, \]
\[ x_2=1-\frac{1}{1}=0. \]

于是 \(0,1,0,1,\ldots\) 永久循环。函数本身确有实根,但这个初值找不到它。改变初值 可能成功,却不能据此宣布纯 Newton 全局收敛。下一单元将保留变号区间,在不安全时 退回二分步。

即时检验与回望

即时检验 1

\(f(x)=x^2-2\)\([1,2]\) 上应用强区间定理,应从哪个端点启动?

答案

\(f(1)=-1\)\(f(2)=2\)\(f'(x)=2x>0\)\(f''(x)=2>0\)。需要 \(f(x_0)f''(x_0)>0\),所以选择 \(x_0=2\)。定理随后保证迭代从 \(\sqrt2\) 右侧单调下降。

即时检验 2

若误差依次约为 \(10^{-2},10^{-4},10^{-8}\),它更像线性收敛还是二次收敛?为什么?

答案

每个误差约为前一个误差的平方:

\[ 10^{-4}=(10^{-2})^2,\qquad 10^{-8}=(10^{-4})^2. \]

因而更像二次收敛。线性收敛通常表现为 \(|e_{n+1}|/|e_n|\) 趋于一个 \(0\)\(1\) 之间的常数。

回望:区间定理控制“从哪里出发、是否收敛”,局部误差定理控制“接近以后有多快”。 它们回答不同问题,不能相互替代。

习题与答案

习题 1:平方根迭代

\(a>0\),推导求 \(\sqrt a\) 的 Newton 迭代,并说明从 \(x_0>\sqrt a\) 出发时 为什么下一点仍不小于 \(\sqrt a\)

答案

\(f(x)=x^2-a\)

\[ x_{n+1} =x_n-\frac{x_n^2-a}{2x_n} =\frac12\left(x_n+\frac a{x_n}\right). \]

\(x_n>0\),由算术—几何平均不等式,

\[ x_{n+1}\ge\sqrt{x_n\frac a{x_n}}=\sqrt a. \]

\(x_n>\sqrt a\),还可验证 \(x_{n+1}<x_n\),所以迭代从根右侧单调下降。

习题 2:第一步就无定义

\(f(x)=x^3-1\),从 \(x_0=0\) 使用 Newton 法会发生什么?这是否说明方程没有根?

答案

\(f'(x)=3x^2\),所以 \(f'(0)=0\),Newton 公式第一步就需要除以零,无法定义。 这不说明方程没有根;方程显然有根 \(x=1\)。它只说明所选初值不适合纯 Newton。

习题 3:核验一个区间定理

\(f(x)=\cos x-x\)\([0,1]\) 上核验强区间定理,并选择启动端点。

答案
\[ f(0)=1>0,\qquad f(1)=\cos1-1<0. \]

\[ f'(x)=-\sin x-1<0,\qquad f''(x)=-\cos x<0 \]

\([0,1]\) 上成立。因为 \(f(1)<0\)\(f''(1)<0\),有 \(f(1)f''(1)>0\),所以从 \(x_0=1\) 启动。定理保证单调收敛到唯一根。

习题 4:一般重根的线性因子

若根的重数为 \(m=3\),普通 Newton 在根附近的主误差因子是多少?与 \(m=2\) 相比 更快还是更慢?

答案

主误差因子为

\[ 1-\frac1m=1-\frac13=\frac23. \]

\(m=2\) 时因子为 \(1/2\)。因为 \(2/3>1/2\),三重根附近的普通 Newton 线性 收敛更慢。

习题 5:诊断二周期

\(f(x)=x^3-2x+2\),验证从 \(x_0=1\) 出发也进入同一个二周期。残差是否趋于零?

答案

已知

\[ N(1)=0,\qquad N(0)=1, \]

所以从 \(1\) 出发得到 \(1,0,1,0,\ldots\)。两点的残差分别为

\[ |f(1)|=1,\qquad |f(0)|=2, \]

都不趋于零。迭代次数增加不能修复这个初值造成的周期。

常见误区与后续

  • 把切线公式当成收敛定理: 公式只定义候选点,定理还需要区间或局部条件。
  • 把区间强条件当成必要条件: 条件失效不等于必然失败,只是失去这条证明。
  • 删除“局部二次”中的“局部”: 任意远处初值不受邻域误差估计控制。
  • 见到光滑函数就断言二次收敛: 重根使 \(f'(r)=0\),普通 Newton 通常降为线性。
  • 只看最后两步很小: 二周期、停滞和浮点舍入都可能制造误导。

下一单元将 Newton 候选限制在一个持续变号的区间中。安全时使用 Newton 步加速, 不安全时退回二分步,并用区间宽度给出可验证误差证书。