欢迎来到数值解法!寻找隐藏根的指南

你好,未来的数学家!在本章——方程的数值解法(Numerical solution of equations)中,我们将不再仅仅依赖代数变形,而是开始利用计算的真正力量。你可能已经学会了如何解一元二次方程,甚至是三次方程,但如果遇到像 \(x^5 - 3x + 1 = 0\) 这样复杂的方程该怎么办呢?

现实世界中大多数方程都过于复杂,无法求出精确解。数值方法就是一种让我们寻找根(函数值为零时 \(x\) 的取值)的高精度近似值的工具。你可以把本章看作是在学习高级的搜索技巧!

如果一开始觉得有些棘手也不用担心。我们将一步步拆解每种方法。所有这些方法都涉及迭代——通过重复简单的计算来不断优化答案。


第1节:确定根的位置(变号法)

在进行近似求解之前,我们需要知道根的大致位置。我们利用连续函数的性质来完成这一步。

1.1 先决条件:连续性与变号

在进阶数学(Further Maths)中,除非另有说明,我们通常处理的函数 \(f(x)\) 都是连续的。这意味着你可以不把笔抬起来就画出整个图形——没有断点或垂直渐近线。

根 \(\alpha\) 是图形与 x 轴相交的位置,即 \(f(\alpha) = 0\)。

变号规则(Change of Sign Rule)

如果你在两点 \(a\) 和 \(b\) 处计算连续函数 \(f(x)\) 的值:

  • 如果 \(f(a)\) 为正且 \(f(b)\) 为负(反之亦然),
  • 那么在区间 \([a, b]\) 内必然存在一个根。

比喻:想象你正在穿越一个山谷(即函数图像)。如果你从海平面上方(正值 \(f(x)\))出发,最终到达海平面下方(负值 \(f(x)\)),那么你一定至少经过了一次海平面(即根,\(f(x)=0\))!

1.2 逐步定位

要证明根 \(\alpha\) 位于区间 \([a, b]\) 内,步骤如下:

  1. 计算 \(f(a)\) 和 \(f(b)\) 的值。
  2. 证明 \(f(a)\) 和 \(f(b)\) 的符号相反(一个正,一个负)。
  3. 得出结论:“由于存在符号变化且 \(f(x)\) 是连续的,因此在区间 \([a, b]\) 内一定存在一个根。”

常见错误提醒!

你必须提到连续性!如果函数有渐近线(例如 \(f(x) = 1/x\)),它可以在没有根的情况下改变符号。例如,如果你检查 \(f(x) = 1/x\) 在 \(f(-1)\) 和 \(f(1)\) 的值,符号确实改变了,但根并不在 -1 和 1 之间——因为它在 \(x=0\) 处不连续。

第1节要点总结

变号规则是基础。只要函数是连续的,它就能保证两点之间存在根。


第2节:二分法

二分法是最简单、最可靠,但也是为了达到所需精度而进行计算时最慢的技术。

2.1 基本概念:将不确定性减半

一旦我们确定根在 \(a\) 和 \(b\) 之间,二分法就会通过反复将包含根的区间对半平分来缩小范围。

比喻:想象你在田野里寻找躲藏的朋友。你知道他肯定在田野的某个地方。你把田野一分为二(二分),询问他在哪一半。然后你再把那新的一小半再一分为二,以此类推。每次切割,你潜在的误差就会减半。

2.2 二分过程(迭代步骤)

从 \(f(a)\) 和 \(f(b)\) 符号相反的区间 \([a, b]\) 开始。

第1步:寻找中点
计算中点 \(c\): $$c = \frac{a + b}{2}$$

第2步:计算 \(f(c)\)
计算函数在中点处的值 \(f(c)\)。

第3步:细化区间
将 \(f(c)\) 的符号与 \(f(a)\) 和 \(f(b)\) 进行比较:

  • 如果 \(f(c)\) 与 \(f(a)\) 的符号相同,那么根一定在新的区间 \([c, b]\) 中。因此,用 \(c\) 代替 \(a\)。
  • 如果 \(f(c)\) 与 \(f(b)\) 的符号相同,那么根一定在新的区间 \([a, c]\) 中。因此,用 \(c\) 代替 \(b\)。

第4步:重复
重复步骤1-3,直到区间 \([a, b]\) 小到足以满足要求的精度(例如,求出精确到小数点后2位的根)。

快速回顾:可靠性 vs 速度

  • 优点:高度可靠。只要初始区间包含根,它保证能得出结果。
  • 缺点:收敛速度非常慢。要达到高精度需要多次迭代。
第2节要点总结

二分法通过不断将误差减半来工作,这使得它既稳健又低效。它完全依赖于检查 \(f(x)\) 的符号。


第3节:线性插值法

线性插值是一种更快、基于几何的方法,它试图通过画一条直线来获得比单纯的中点法更好的估计。

3.1 基本概念:使用直线近似

线性插值法不再盲目地取中点,而是假设曲线 \(f(x)\) 在点 \(A(a, f(a))\) 和 \(B(b, f(b))\) 之间大致是一条直线。

新的根估计值 \(x_1\),就是这条直线(称为)与 x 轴相交的点。

3.2 插值公式

估计值 \(x_1\) 根据函数值 \(f(a)\) 和 \(f(b)\) 的大小将区间 \([a, b]\) 分割。根更靠近函数值较小(即更接近零)的那一点。

利用相似三角形(几何原理),我们推导出新估计值 \(x_1\) 的公式:

$$x_1 = a + \frac{(b-a)|f(a)|}{|f(a)| + |f(b)|}$$

其中 \(|f(a)|\) 和 \(|f(b)|\) 是函数计算结果的幅值(绝对值)。

记忆窍门 / 理解公式:
我们从 \(a\) 出发,加上总宽度 \((b-a)\) 的一小部分。这一部分的比例由到 x 轴的距离之比决定。点 \(a\) 吸引根的估计值向自身靠近,其力度与 \(f(b)\) 的大小成正比。

由于分母使用的是绝对值,只要 \(f(a)\) 和 \(f(b)\) 符号相反,该公式无论 \(f(a)\) 为正还是为负都适用。

3.3 插值过程

第1步:计算估计值
使用上述公式求出 \(x_1\)。

第2步:计算 \(f(x_1)\)
计算函数在新估计值处的值。

第3步:细化区间
就像二分法一样,观察 \(f(x_1)\) 的符号,并替换掉与之符号相同的边界点(即 \(a\) 或 \(b\))。

第4步:重复
重复该过程,直到达到要求的精度。

快速回顾:速度 vs 可靠性

  • 优点:通常比二分法收敛得更快,因为它利用了 \(f(x)\) 幅值的信息。
  • 缺点:每一步的计算更为复杂。
第3节要点总结

线性插值使用几何方法(相似三角形)在端点之间绘制直线,通常比二分法能更快地得出估计值。它需要使用 \(f(a)\) 和 \(f(b)\) 的幅值。


第4节:牛顿-拉弗森法

牛顿-拉弗森法(Newton-Raphson method)是FP1中介绍的最快、最强大的数值技术。然而,它要求具备微积分知识。

4.1 基本概念:使用切线

牛顿-拉弗森法不是使用弦(连接两个已知点的线,如线性插值法),而是使用曲线在单一初始点 \(x_0\) 处的切线

切线在 \(x_n\) 处的斜率由导数 \(f'(x_n)\) 给出。

下一个估计值 \(x_{n+1}\) 就是切线与 x 轴相交的位置。

4.2 牛顿-拉弗森公式

利用坐标几何(直线的点斜式),下一个近似值的公式为:

$$x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}$$

此公式至关重要,必须背诵。

4.3 牛顿-拉弗森过程

第1步:定义函数及其导数
你需要 \(f(x)\) 和 \(f'(x)\) 两个函数。

第2步:选择初始值 \(x_0\)
这通常在题目中给出,或者你必须通过变号规则或草图在根附近找到一个合理的起始点。

第3步:计算下一个估计值
将 \(x_0\) 代入公式求出 \(x_1\): $$x_1 = x_0 - \frac{f(x_0)}{f'(x_0)}$$

第4步:迭代
使用 \(x_1\) 求 \(x_2\),用 \(x_2\) 求 \(x_3\),以此类推,直到达到要求的精度(通常是当近似值在要求的小数位数上一致时)。

4.4 潜在的问题与失效

尽管牛顿-拉弗森法速度极快(它具有二阶收敛性,意味着准确的小数位数在每次迭代中大致翻倍!),但它并非万无一失。

警告:方法可能失效的情况

  1. 水平切线:如果 \(f'(x_n) = 0\),该方法失效,因为你不能除以零。如果你的初始点太靠近拐点(局部极大值或极小值)就会发生这种情况。
  2. 发散:如果初始值 \(x_0\) 离根太远,切线可能会指向一个完全不同的区域,导致估计值离根越来越远,而不是越来越近(发散)。
  3. 循环:迭代可能会在两个值之间跳来跳去,而无法收敛到根。

你知道吗?牛顿-拉弗森法是大多数计算器和计算机程序在被要求“解”非线性方程时使用的核心算法。它的速度使其在实际工程和物理学中具有不可估量的价值。

第4节要点总结

牛顿-拉弗森法是最快的方法,依赖于微积分(\(f'(x)\))。其公式使用切线。一定要检查估计值附近的导数不为零!


章节复习:方法比较

你必须理解每种技术的优缺点。

5.1 快速对比表

方法 所用原理 可靠性 速度(收敛性) 关键输入
二分法 变号规则 最高(总是有效) 慢(线性) \(f(a), f(b)\) 符号
线性插值法 直线(弦) 高(需要变号) 中等 \(f(a), f(b)\) 幅值
牛顿-拉弗森法 切线(微积分) 可能失效(若 \(f'(x)=0\)) 极快(二次) \(f(x), f'(x)\)

5.2 证明精度达到要求

当题目要求证明根 \(\alpha\) 精确到小数点后 \(k\) 位时,你必须在可能范围的边界上使用变号规则

示例:证明根为 3.45(精确到小数点后2位)。

  1. 真值必须位于 3.445 和 3.455 之间。
  2. 计算 \(f(3.445)\)。
  3. 计算 \(f(3.455)\)。
  4. 如果这两个数值之间存在符号变化,说明你已经成功地将根“锁定”在这个区间内,从而证明了精度。

无论你使用哪种数值方法(二分法、插值法或牛顿-拉弗森法)来寻找估计值,这最后一步的证明至关重要!

继续练习那些迭代吧!数值方法的核心就是技巧与严谨的计算。你可以做到的!