第 3 章 · 插值与外推
给你一张离散数据表,要求"表中间的值"——插值;"表外的值"——外推(危险动作)。这一章把插值的各大门派排开并给出选择建议。
多项式插值:理论优雅、实践挑剔
$n+1$ 个点唯一确定 $n$ 次多项式。拉格朗日形式好看但不宜直接算;实用的是 Neville 算法:逐层用低阶结果线性组合出高阶结果,天然给出误差估计(相邻阶的差)。警告:高次多项式插值在等距点上会剧烈振荡(Runge 现象)——次数越高不等于越准,10 次以上基本不可用。
分段与有理:工程默认
- 三次样条:分段三次多项式,二阶导数连续,曲线光顺不振荡——画光滑曲线、运动轨迹的标准答案。自然样条(端点二阶导为零)是其中最常用款。
- 有理函数插值(Bulirsch-Stoer):用多项式之比,擅长有极点特征或大范围外推的函数。
- 局部低阶(三次 Hermite):只要给每点函数值 + 导数(或斜率估计),C$^1$ 连续,实时图形学最爱——便宜且不振荡。
外推:高度危险区
外推 = 用表内规律猜表外。多项式外推几步就爆炸;唯一靠谱的场景是Richardson 外推:对已知误差阶的过程(如步长 $h$ 的梯形公式误差 $O(h^2)$),把两个步长的结果按误差规律组合,跳过一阶误差:
这是下一章 Romberg 积分的引擎。
老师的提醒
- 插值点噪声大时,"精确穿过每个点"是错误目标——换平滑/拟合框架。
- 外推前先想清楚物理有没有理由保证趋势延续;多数外推事故是模型失效而非算法失效。
自检
- Runge 现象说明高次插值有什么风险?
- 样条比全局多项式好在哪两点?
- Richardson 外推的前提条件是什么?
更深一层:插值的三种"世界观"
插值方法之间的差异其实是三种逼近哲学:多项式插值(用一个全局多项式穿过所有点——理论最优但高次振荡)、分段插值(样条/Hermite,局部低阶拼接——牺牲全局光滑换稳定)、有理插值(分式形式,自带极点表达能力——适合有奇性特征的函数)。选择 = 判断数据的"真实形状":光滑解析 → 样条/高次;有尖峰突变 → 分段低阶;有已知极点结构 → 有理。NR 第 3 章的选型表本质上是这张哲学地图的工程化。
Runge 现象值得亲手体验一次:等距点上做 $f(x) = \frac{1}{1+25x^2}$ 的 10 次插值,区间端部的振荡能到真实值的十几倍——高次多项式插值的端部灾难是"次数越高越准"这一直觉的反例教材。解药有三:切比雪夫节点(非等距,端部加密)、样条(分段)、最小二乘(干脆不要求穿过点)。
推导细读:三次样条为什么"二阶导连续"就够
样条的构造是"在约束下极小化弯曲能":在所有穿过数据点的二次连续函数里,三次样条最小化 $\int (f'')^2 dx$——它是数据的最"平顺"解释(木条压过钉子的物理类比)。工程上的标准配方是自然样条或非节点样条(not-a-knot),三对角方程求解(衔接第 5 节 Thomas 算法)。使用纪律:数据噪声大时样条会忠实放大噪声(插值的天性),先平滑再插值;外推区(数据范围之外)样条行为不可控,必须禁用或切换外推模型。
在真实世界里:插值在工程管线里的三个典型站位
- 物性查询:CFD/化学仿真里蒸气压、导热系数以表格存储,运行时插值——立方 Hermite(保单调)优先,避免样条的过冲把物性算成负数;
- 轨迹规划:机器人/数控的路径点之间用三次样条(C² 连续 = 加速度连续,机械臂不吃冲击);
- 数字地图/图形:贝塞尔与 B 样条是样条的表亲——"分段低阶 + 局部控制"的哲学统治了 CAD 三十年。
三处的共同教训:插值阶数与数据质量要匹配——点密而准用高阶,点疏而糙用低阶。
专题深入:样条的"最小弯曲能"原理
三次样条的深刻性质值得展开:在所有穿过数据点的二次连续函数里,三次样条最小化弯曲能 $\int(f'')^2dx$——它是数据的"最平顺解释"(木条压过钉子的物理类比)。这个变分性质解释了样条为什么"看起来对":它是能量最小的光滑曲线。工程上的标准配方:自然样条(端点二阶导为零)与非节点样条(not-a-knot——端点三阶导连续)的选择;三对角方程求解(Thomas 算法回收)。数据噪声大时样条会忠实放大噪声——插值的天性是先平滑再插值。
数学细节展开:Neville 算法的"误差副产品"
Neville 算法的逐层递推有一个免费的副产品:相邻阶的差给出误差估计——$P_{i,i+1}$ 与 $P_{i+1,i+2}$ 的差是当前阶的误差量级。这个"误差的自我报告"是插值方法的诚信特征——好的插值算法告诉你它有多不准。Runge 现象的警示:高次多项式插值在等距点上剧烈振荡——次数越高不等于越准,10 次以上基本不可用;切比雪夫节点(端部加密)是等距节点的解药。
工程案例细节:插值的"工程三选一"
插值的工程三选一:数据光滑表格 → 三次样条(画光滑曲线、运动轨迹的标准答案);局部快速估计 → Hermite/低次 Lagrange(实时图形学最爱——便宜且不振荡);函数逼近已知有理特征 → Bulirsch-Stoer(有理函数插值——大范围外推)。先问数据从哪来——噪声数据该走最小二乘平滑(第 15 章),不该走精确插值。
常见误区与辨析(补充)
- "插值点噪声大时'精确穿过每个点'是正确目标":错——换平滑/拟合框架。
- "外推前先想清楚物理有没有理由保证趋势延续":多数外推事故是模型失效而非算法失效。
例题
已知 $\sin 30° = 0.5$、$\sin 45° \approx 0.70711$,用 Neville 算法线性插值估计 $\sin 40°$,并给出误差估计。
解答
一次插值:
真值 $\sin 40° = 0.64279$,误差 $\approx 4.7\times10^{-3}$。
误差估计(Neville 的副产品):相邻阶之差 $C = |P - y_0|$ 随阶数下降给出误差量级;本例一阶插值误差理论界 $\frac{h^2}{8}\max|f''| = \frac{15^2}{8}\times0.5\times\frac{\pi}{180}^2\approx 2.1\times10^{-3}\ (\text{弧度制})$——同量级 ✓。加一个 $60°$ 节点升二阶可再降一个量级。