应用与计算数学
方程的近似解法
像二分法和牛顿法这样的数值方法,能让计算机逐步计算出方程的根。
直观直觉:在根附近放大观察
假设你要寻找方程 f(x)=0 的一个根 r,但没有任何代数公式能精确给出 r。数值方法会构造一个猜测序列 x0,x1,x2,…,它在每一步都越来越接近 r,这很像不断放大 f 的图像、朝着它与横轴相交的那一点靠近,从而读出越来越多正确的小数位。下面三种方法的区别仅在于它们把当前猜测 xn 变成更好的下一个猜测 xn+1 的方式有多巧妙。
把割线的步长 h 拖向0,观察它逐渐贴合到 x0 处斜率为 f′(x0) 的切线上:这正是牛顿法用来走向下一个猜测值 x1=x0−f′(x0)f(x0) 所沿着的切线,而不是更粗糙的割线斜率 hf(x0+h)−f(x0)。大学定义:三种求根方法
定义: 二分法
若连续函数 f 在区间 [a,b] 上满足 f(a)f(b)<0,介值定理保证其内部存在一个根。二分法在每一步都将该区间对半分:计算中点 c=2a+b,求出 f(c),然后保留仍存在变号的那一半,并重复此过程。
∣xn−r∣≤2n+1b−a 这里 ∣xn−r∣≤2n+1b−a 给出了第 n 个中点 xn 与真实根 r 之间距离的上界:由于区间宽度 L=b−a 在每一步都减半,最坏情况下的误差也随之减半,因此仅经过 n=4 步,不确定性就缩小到 L/32。这种有保证、可预测的收缩速度正是二分法的全部魅力所在——它虽然慢,但从不会不收敛。
定义: 牛顿法
牛顿法用 xn 附近曲线的切线 y=f(xn)+f′(xn)(x−xn) 来代替曲线,并把该切线与横轴的交点作为下一个猜测值 xn+1,从而得到迭代公式 xn+1=xn−f′(xn)f(xn)。它在每一步都需要导数 f′,但一旦有效,收敛速度会比二分法快得多。
xn+1=xn−f′(xn)f(xn) 第三种视角把两者统一起来:把方程改写成关于某个函数 g 的不动点问题 x=g(x),使得 f 的根成为 g 的不动点,然后从任意 x0 出发迭代 xn+1=g(xn)。二分法与牛顿法都是这一思想在 g 取不同选择时的特例。
三种求根方法比较| 方法 | 迭代公式 | 收敛阶 | 所需条件 |
|---|
| 二分法 | c=2a+b | 线性(1) | f 连续,f(a)f(b)<0 |
| 牛顿法 | xn+1=xn−f′(xn)f(xn) | 二次(2) | f 二次可微,f′(r)=0,x0 接近 r |
| 不动点迭代 | xn+1=g(xn) | 一般为线性(1) | 在 r 附近 ∣g′(x)∣≤L<1 |
大学关键定理
设 f 在 [a,b] 上连续且满足 f(a)f(b)<0。则二分法生成的中点 xn=2an+bn 满足 xn→r,其中 r 是 [a,b] 内的某个根,并且第 n 步后的误差满足 ∣xn−r∣≤2n+1b−a。
为什么成立?
每一步都把根困在一个不断收缩的“箱子”里,而一个始终包含根、并收缩为一点的箱子,必然收缩到根本身。
证明
第一步(不变量)。设 a0=a、b0=b。在第 n 步,我们维持不变量 f(an)f(bn)<0,即根被困在 [an,bn] 内某处。由假设,该不变量最初成立。给定 [an,bn],计算中点 xn=2an+bn 并求出 f(xn):若其符号与 f(an) 相反,则令 an+1=an, bn+1=xn,否则令 an+1=xn, bn+1=bn(若恰好 f(xn)=0,则 xn 就是根,过程终止)。无论哪种情况都再次有 f(an+1)f(bn+1)<0,因此该不变量由归纳法得以保持。
第二步(宽度收缩)。按构造,每个新区间恰好是前一个区间的一半,故对一切 n≥0 都有 bn−an=2nb−a。由于根 r 在每一步都位于 [an,bn] 内(由第一步),而中点 xn 也位于 [an,bn] 内,二者都在宽度为 2nb−a 的同一区间内,故已有 ∣xn−r∣≤2nb−a 成立;稍微精细一点地计数(从中点量到某个端点)即得所述的界 ∣xn−r∣≤2n+1b−a。
第三步(收敛)。由于当 n→∞ 时 2n+1b−a→0,第二步中的夹逼即迫使 xn→r。这一部分甚至不需要 f 除初始变号条件之外的连续性——连续性只用于保证一开始 [a,b] 内部确实存在一个根,这正是在第0步应用的介值定理。
设 f 在根 r 附近二次连续可微,且 f′(r)=0。则存在 r 的一个邻域,使得若牛顿迭代从该邻域内部出发,迭代序列收敛于 r,并且对某常数 C=2min∣f′∣max∣f′′∣(最大值与最小值均在该邻域上取)满足 ∣xn+1−r∣≤C∣xn−r∣2。
为什么成立?
切线对光滑曲线的逼近非常好,以至于它产生的误差与已走过距离的平方成正比,因此每多正确一位小数,到下一步正确位数大约翻倍。
证明
第一步(围绕当前猜测值作泰勒展开)。由于 f 二次可微,带拉格朗日余项的泰勒定理给出对某个 ξn between xn and r 有 f(r)=f(xn)+f′(xn)(r−xn)+21f′′(ξn)(r−xn)2。这是精确等式而非近似,因为余项承载了全部二阶误差。
第二步(代入根的条件)。由于 f(r)=0,左边为零,剩下 0=f(xn)+f′(xn)(r−xn)+21f′′(ξn)(r−xn)2。两边同除以 f′(xn)(在 r 附近非零,因为 f′(r)=0 且 f′ 连续),分离出 r−xn:0=f′(xn)f(xn)+(r−xn)+2f′(xn)f′′(ξn)(r−xn)2。
第三步(识别出牛顿步)。整理得 r−(xn−f′(xn)f(xn))=−2f′(xn)f′′(ξn)(r−xn)2。左边括号内恰是牛顿更新 xn+1,故用 en=xn−r 可写成 r−xn+1=−2f′(xn)f′′(ξn)en2,即 en+1=−2f′(xn)f′′(ξn)en2。
第四步(界定常数)。取绝对值,并用该邻域上的极值 max∣f′′∣ 和 1/min∣f′∣ 分别界定 ∣f′′(ξn)∣ 与 1/∣f′(xn)∣,即得 C=2min∣f′∣max∣f′′∣ 下的 ∣xn+1−r∣≤C∣xn−r∣2。一旦 C∣x0−r∣<1,该递推关系就迫使 ∣xn−r∣ 收缩到 0,从而证明收敛性,而 ∣xn+1−r∣≤C∣xn−r∣2 中的平方正是二次收敛速度的体现。
设 g:[a,b]→[a,b] 连续可微,且对一切 x∈[a,b] 都有 ∣g′(x)∣≤L<1。则 g 在 [a,b] 内有唯一不动点 r,且对任意起点 x0∈[a,b],迭代 xn+1=g(xn) 收敛于 r,并满足 ∣xn−r∣≤Ln∣x0−r∣。
为什么成立?
斜率的绝对值小于一意味着每次施加 g 都会使各点彼此更靠近,因此无论从哪里出发,反复的压缩都必然使整个区间坍缩到同一个点。
证明
第一步(用介值定理证明存在性)。设 h(x)=g(x)−x。由 g(a)∈[a,b] 得 g(a)≥a,即 h(a)≥0;同理由 g(b)≤b 得 h(b)≤0。由于 h 连续,介值定理给出某个 r 使得 h(r)=0,即 g(r)=r:不动点存在。
第二步(用中值定理证明唯一性)。设 r1,r2∈[a,b] 都是不动点且 r1=r2。中值定理给出二者之间某个 c 使 g(r1)−g(r2)=g′(c)(r1−r2);由 g(r1)=r1 与 g(r2)=r2,这可写成 r1−r2=g′(c)(r1−r2),故 ∣r1−r2∣=∣g′(c)∣∣r1−r2∣≤L∣r1−r2∣。由于 L<1 且 ∣r1−r2∣>0,这产生矛盾,故 r1=r2。
第三步(每一步都收缩)。对任意 xn∈[a,b],对 g(xn)−g(r) 应用中值定理:存在 xn 与 r 之间的某个 cn 使 g(xn)−g(r)=g′(cn)(xn−r)。由 g(r)=r 与 xn+1=g(xn),左边即为 xn+1−r,故 ∣xn+1−r∣=∣g′(cn)∣∣xn−r∣≤L∣xn−r∣。
第四步(反复施加收缩)。从 n=0 开始反复应用第三步,得 ∣x1−r∣≤L∣x0−r∣,再得 ∣x2−r∣≤L∣x1−r∣≤L2∣x0−r∣,归纳可得对一切 n 都有 ∣xn−r∣≤Ln∣x0−r∣。由于 0≤L<1,当 n→∞ 时右边趋于 0,从而证明 xn→r。
大学实际应用与典型例题
求根是无数没有封闭形式解的计算背后隐藏的引擎。工程师用牛顿法求解结构与电路设计中的非线性方程组;金融领域用它从债券价格反推未知利率,或从期权价格反推隐含波动率;计算机图形学用它求光线与隐式曲面的交点;而每一台科学计算器在内部都通过运行牛顿法的几步来计算 2 或立方根。由于二分法万无一失,它是求根库中在牛顿法有发散风险时使用的后备方案。
例题: 对没有代数求根公式的三次方程使用二分法
某力学系统的平衡位置满足 x3−x−2=0。利用区间 [1,2](其中 f(1)=−2<0,f(2)=4>0),执行两次二分步骤,求出所得中点 x2。
解答
第一步:计算第一个中点。x0=21+2=1.5,且 f(1.5)=1.53−1.5−2=−0.125<0,故根位于 [1.5,2] 内,因为 f 在此处变号(f(1.5)<0, f(2)>0)。
第二步:计算第二个中点。x1=21.5+2=1.75,且 f(1.75)=1.753−1.75−2=1.609375>0,故根位于 [1.5,1.75]。
第三步:计算 x2。x2=21.5+1.75=1.625。
第四步:解释。仅经过两步,搜索区间就从宽度 1 缩小到 0.25,而 x2=1.625 与真实根 r≈1.5214 的距离已不超过 0.125,这与二分法定理给出的误差界 ∣x2−r∣≤232−1=0.125 一致。
例题: 用牛顿法手算平方根
在计算器出现之前,工程师是这样计算平方根的:为求 5,从 x0=2 出发,对 f(x)=x2−5 应用牛顿法,计算 x1 和 x2。
解答
第一步:建立迭代式。这里 f(x)=x2−5,f′(x)=2x,故牛顿更新式为 xn+1=xn−2xnxn2−5。
第二步:计算 x1。当 x0=2 时:x1=2−2⋅222−5=2−4−1=2.25。
第三步:计算 x2。当 x1=2.25 时:x2=2.25−2⋅2.252.252−5=2.25−4.50.0625≈2.236111。
第四步:解释。真实值为 5≈2.236068,因此仅经过两步,x2 就已精确到小数点后四位——从 x1 到 x2 正确位数大约翻了一倍,这正是上面证明的二次收敛的标志。
从 [a,b]=[0,1] 开始二分法,执行 n=5 次迭代,∣x5−r∣ 的保证误差界是多少?
以下哪个公式正确给出了牛顿法的一步?
某债券交易员从猜测值 y0 出发,用牛顿法求解非线性定价方程 P(y)=0 得到收益率 y。以下哪种情况最可能导致迭代不收敛?
为使 [a,b] 上的不动点迭代 xn+1=g(xn) 从任意 x0∈[a,b] 出发都保证收敛到不动点,需要满足哪个条件?