欢迎来到数值方法!
你好!你现在来到的是纯数学中最实用且引人入胜的章节之一:数值方法 (Numerical Methods)。如果刚开始觉得这个主题有些抽象,别担心;实际上,这正是计算机和计算器在后台运作时所使用的数学逻辑!
我们将学到什么? 我们将学习如何寻找那些无法或极难通过标准代数方法求解的方程的近似解(根)。例如,尝试求解 \(e^x + 2x^2 = 5\)。你无法通过代数手段单独解出 \(x\),这时我们就需要数值方法了!
关键点: 当代数方法束手无策时,数值方法能提供准确且系统化的近似解。
第 1 节:定位根与变号原理 (Change of Sign Principle)
什么是根?
方程 \(f(x) = 0\) 的根 (root) 是指函数图像 \(y = f(x)\) 与 \(x\) 轴相交时 \(x\) 的值。在这一点上,\(y=0\)。
1.1 变号原理
这是数值寻根中最基础的概念。它简单且直观:
如果我们有一个连续函数 (continuous function) \(f(x)\)(意味着图像没有跳跃或断点),并且我们找到了两个值 \(a\) 和 \(b\),使得:
1. \(f(a)\) 为正。
2. \(f(b)\) 为负。
……那么,由于函数必须从正值区域过渡到负值区域(或反之),在 \(a\) 和 \(b\) 之间至少存在一个根。
分步指南:使用变号原理
- 定义 \(f(x)\): 确保你的方程整理为 \(f(x) = 0\) 的形式。
- 选择区间: 选取两个值 \(a\) 和 \(b\),构成区间 \([a, b]\)。
- 计算符号: 将 \(a\) 和 \(b\) 代入 \(f(x)\)。
- 验证: 如果 \(f(a)\) 和 \(f(b)\) 符号相反,则该区间内必然存在一个根。
示例: 要证明 \(f(x) = x^3 - 4x + 1 = 0\) 的一个根位于 \(x=0\) 和 \(x=1\) 之间:
\(f(0) = (0)^3 - 4(0) + 1 = 1\) (正数)
\(f(1) = (1)^3 - 4(1) + 1 = 1 - 4 + 1 = -2\) (负数)
由于符号发生了改变,因此在 0 和 1 之间存在一个根。
辅助提示: 变号原理直接引出了二分法 (Interval Bisection Method),它只是不断地将区间折半,直到根达到所需的精度。虽然速度较慢,但非常可靠!
常见错误警示!
变号原理仅在函数连续时有效。如果存在不连续点(如渐近线),函数值可能会在没有穿过 \(x\) 轴的情况下发生变号!除非是正切函数或已知有渐近线的函数,否则在 P3 中遇到的函数通常可假设为连续的。
我们使用它来定位根。它要求检查 \(f(x)\) 在区间 \([a, b]\) 内是否从正变负(或反之)。
第 2 节:不动点迭代法 (Fixed Point Iteration)
2.1 理解迭代
与其精确地求出根,我们先从一个初始猜测值 \(x_0\) 开始。将 \(x_0\) 代入特定的公式,得到一个更准确的猜测值 \(x_1\)。重复这个过程(我们称之为迭代 (iterate)),直到猜测值不再有明显变化,这意味着我们已经收敛到了根。
一般形式为:
$$x_{n+1} = g(x_n)$$
类比: 想象一个自动调节的恒温器。它测量当前温度 (\(x_n\)),应用调节规则 (\(g\)),并调整设置以达到新温度 (\(x_{n+1}\)),目标是最终稳定在设定温度(即根)。
2.2 建立迭代公式
难点在于将 \(f(x) = 0\) 转换为 \(x = g(x)\) 的形式。转换方法通常不止一种,但只有部分能够收敛!
示例: \(x^3 - 2x - 5 = 0\)。
尝试 A(重排 1):
$$x^3 = 2x + 5$$
$$x = \sqrt[3]{2x + 5}$$
得到迭代公式:\(x_{n+1} = \sqrt[3]{2x_n + 5}\)。
尝试 B(重排 2):
$$2x = x^3 - 5$$
$$x = \frac{x^3 - 5}{2}$$
得到迭代公式:\(x_{n+1} = \frac{x_n^3 - 5}{2}\)。
核心思想: 如果迭代收敛,\(x_{n+1}\) 最终会几乎等于 \(x_n\)。当 \(x_{n+1} = x_n\) 时,我们就得到 \(x = g(x)\),这正是原方程的解!
2.3 收敛性:阶梯图与蛛网图
当你绘制 \(y = x\) 和 \(y = g(x)\) 的图像时,它们的交点就是根。迭代过程描述了图上的一条路径:
- 从 \(x\) 轴上的 \(x_0\) 开始。
- 垂直移动到曲线 \(y = g(x)\) 上。这就是 \(x_1\)。
- 水平移动到直线 \(y = x\) 上。(这是关键一步,因为它将 \(x_1\) 设为下一步的输入)。
- 重复(垂直回到 \(y=g(x)\),水平回到 \(y=x\))。
你知道吗?
如果根是单调逼近的(总是增加或总是减小),形成的路径被称为阶梯图 (staircase diagram);如果序列在根附近振荡,则被称为蛛网图 (cobweb diagram)。
如果根处的 \(g(x)\) 的导数绝对值小于 1,则迭代会收敛。
$$|\,g'(x)\;| < 1$$
如果 \(|\,g'(x)\;| > 1\),迭代将会发散(螺旋向外或向远离根的方向跳跃)。
把根想象成碗底。如果函数 \(g(x)\) 太陡(斜率 > 1),你的起点值会滚走。如果函数比较平缓(斜率 < 1),你的值就会滚进碗底(根)里。
第 3 节:牛顿-拉弗森法 (Newton-Raphson Method)
不动点迭代法(第 2 节)可能会很慢,或者如果重排方式不当会失败。牛顿-拉弗森法通常更强大且速度更快。
3.1 牛顿-拉弗森公式
此方法利用当前猜测值 \(x_n\) 处曲线 \(y = f(x)\) 的切线,来预测下一个更好的猜测值 \(x_{n+1}\)。
公式如下:
$$x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}$$先决条件检查: 注意,此方法需要你求出导数 \(f'(x)\)!
3.2 工作原理(几何解释)
该公式源自切线近似。如果你选定一个猜测值 \(x_n\),计算出该点的切线,该切线与 \(x\) 轴的交点就是下一个猜测值 \(x_{n+1}\)。由于切线是曲线在局部的良好近似,因此 \(x_{n+1}\) 通常非常接近实际的根。
分步计算示例
假设我们要找 \(f(x) = x^2 - 3\) 的根。(我们知道答案是 \(\sqrt{3}\) \(\approx\) 1.732)。让我们取 \(x_0 = 2\)。
- 求 \(f(x)\) 和 \(f'(x)\):
\(f(x) = x^2 - 3\)
\(f'(x) = 2x\) - 建立迭代公式:
$$x_{n+1} = x_n - \frac{x_n^2 - 3}{2x_n}$$ - 计算 \(x_1\)(从 \(x_0 = 2\) 开始):
$$x_1 = 2 - \frac{(2)^2 - 3}{2(2)} = 2 - \frac{1}{4} = 1.75$$ - 计算 \(x_2\):
$$x_2 = 1.75 - \frac{(1.75)^2 - 3}{2(1.75)} \approx 1.73214$$看看收敛速度有多快!\(x_2\) 已经精确到了小数点后 4 位。这种高速正是牛顿-拉弗森法的主要优势。
3.3 失效与局限性
尽管速度快,但牛顿-拉弗森法在特定情况下可能会失效:
- 当 \(f'(x_n) \approx 0\) 时: 如果在猜测值 \(x_n\) 附近切线接近水平,分母 \(f'(x_n)\) 将变得非常小。这会导致分数变得极大,使 \(x_{n+1}\) 被推向远离根的地方。几何上,近乎水平的切线会与 \(x\) 轴相交于很远的地方。
- 拐点(驻点): 如果你的初始猜测值 \(x_0\) 靠近局部极大值或极小值(驻点),该方法可能会试图向远处的一个根收敛,或者完全失败。
牛顿-拉弗森法关键点: 它是最快的方法,但你需要一个相对接近的初始猜测值,并且必须避免曲线平坦(即 \(f'(x)=0\))的点。
第 4 节:方法总结与精度
4.1 证明根的精度
在使用迭代法后,你通常会被要求证明根位于某个区间内,这往往精确到小数点后一定的位数(d.p.)。
如果你被要求证明根 \(\alpha\) 精确到 3 位小数为 \(1.732\):
你必须测试该区间四舍五入到该值的下限和上限:
- 下限: \(1.7315\)
- 上限: \(1.7325\)
你必须在原函数 \(f(x)\) 上使用变号原理。
1. 计算 \(f(1.7315)\)。证明它是某种符号(例如负)。 2. 计算 \(f(1.7325)\)。证明它是相反的符号(例如正)。
由于在此区间内发生了符号改变,实际的根 \(\alpha\) 必须位于 1.7315 和 1.7325 之间。区间内的所有值四舍五入后均为 1.732(3 位小数)。证毕 (Q.E.D.)。
4.2 选择合适的方法
你选择的数值方法取决于问题的具体要求。
| 方法 | 用途 | 速度/效率 | 要求/说明 |
|---|---|---|---|
| 变号原理 / 二分法 | 定位并证明区间内存在根。 | 慢,但 100% 可靠。 | 函数必须连续。 |
| 不动点迭代法 (\(x_{n+1}=g(x_n)\)) |
通过迭代计算根。 | 一般。不保证一定收敛。 | 需要进行代数重排。仅当根附近 \(|\,g'(x)\;| < 1\) 时有效。 |
| 牛顿-拉弗森法 | 快速计算根。 | 收敛极快(通常)。 | 需要导数 \(f'(x)\)。若 \(f'(x) \approx 0\) 则失效。 |
最后鼓励: 数值方法是高度程序化的。如果你掌握了公式并练习正确建立迭代过程,你会发现这一章非常有成就感。祝你好运!