插值与拟合
模块导航
- 第一组:插值基础与误差 —— Part 0–5
- 第二组:节点设计、Hermite 与分段样条 —— Part 6–7
- 第三组:拟合、应用与总结 —— Part 8–9 + 速查
数值分析的核心问题之一是:如何用简单函数逼近复杂函数或离散数据。插值法(Chap 11–14)和拟合(最小二乘法,Chap 15–16)分别从两个角度回答这个问题:
- 插值:要求严格经过所有已知点,适合有精确约束的工程问题(如导弹轨迹拟合)。
- 拟合:不要求经过所有点,只要求整体误差最小,适合实验观测数据(测量有噪声)。
两者共同构成"函数逼近论"的两条主线,并为后续数值积分、微分方程数值解提供基础。
前置知识回顾
- 线性代数:矩阵运算、范数、正交变换。去哪里补:线性代数枢纽页。
- 微积分:导数与高阶导数的概念与计算。
- 范数:向量 2-范数 $\lVert x \rVert_2 = \sqrt{\sum x_i^2}$,内积与正交概念。课件对应:Chap 1–2。
课件在插值法的应用背景里强调了几类典型场景:
- 复杂函数的近似计算:原函数难以直接求值时,用低次多项式在局部作近似。
- 函数表的非表格点计算:已知若干节点上的函数值,需要估算区间内部其他点的数值。
- 光滑曲线的绘制:当只掌握离散数据点时,希望构造一条平滑曲线通过或逼近这些点。
- 离散数据的规律提取:实验数据常带噪声,不能机械穿点,需要通过拟合找出整体趋势。
因此,本章群并不是单纯在讨论“多项式公式怎么写”,而是在回答:面对离散数据时,我们到底应该要求函数“经过所有点”,还是只要求它“整体最接近”这些点。前者导向插值,后者导向拟合。
代数插值问题
设 $f(x) \in C[a, b]$,取互异节点 $a \le x_0 < x_1 < \cdots < x_n \le b$,已知函数值 $y_i = f(x_i)$($i = 0, 1, \ldots, n$)。
求一个次数不超过 $n$ 的代数多项式 $P(x) = a_0 + a_1 x + \cdots + a_n x^n$,满足
则称 $P(x)$ 为 $f(x)$ 的插值多项式,$x_0, \ldots, x_n$ 为插值结点,$f(x)$ 为被插值函数。
定理 5.1(插值多项式存在唯一性)
若插值结点 $x_0, x_1, \ldots, x_n$ 互异,则满足插值条件的 $n$ 次插值多项式 $P(x)$ 存在且唯一。
证明思路:插值条件给出关于 $a_0, a_1, \ldots, a_n$ 的线性方程组,系数矩阵为 Vandermonde 矩阵,行列式为
(因为所有结点互异),故系数矩阵可逆,方程组有唯一解。$\blacksquare$
拉格朗日插值的核心思想是将 $n+1$ 个插值条件拆解为 $n+1$ 个基函数,每个基函数在一个结点取 1、在其他结点取 0:
拉格朗日插值基函数
性质:$l_k(x_i) = \delta_{ki}$(克罗内克 delta)。
拉格朗日插值多项式
可直接验证:$L_n(x_i) = \sum_k y_k \delta_{ki} = y_i$,满足所有插值条件。
例题 · 线性插值($n=1$)
题目:已知误差函数 $\operatorname{Erf}(x) = \frac{2}{\sqrt{\pi}} \int_0^x e^{-t^2} dt$ 的两个值 $\operatorname{Erf}(0.5) = 0.5205$、$\operatorname{Erf}(1.0) = 0.8427$,用线性插值求 $\operatorname{Erf}(0.75)$。
解:由 $L_1(x) = y_0 + \frac{y_1 - y_0}{x_1 - x_0}(x - x_0)$,代入 $x_0=0.5, x_1=1.0$:
对照真实值:$\operatorname{Erf}(0.75) \approx 0.7112$,线性插值误差约为 $0.0296$。
定理 5.2(拉格朗日插值误差余项)
设 $f(x) \in C[a, b]$,且 $f^{(n+1)}(x)$ 在 $(a, b)$ 内存在,则插值余项为
其中 $\omega_{n+1}(x) = \prod_{j=0}^n (x - x_j)$。
误差上界:$|R_n(x)| \le \frac{M}{(n+1)!} |\omega_{n+1}(x)|$,其中 $M = \max_{a \le t \le b} |f^{(n+1)}(t)|$。
例题 · 误差函数表的步长选择
题目:在 $[0, \pi]$ 上制作 $\sin x$ 等距结点函数表,要求线性插值计算非表格点数据时准确到小数后两位(误差 $\le 0.01$),求步长 $h$。
解:由误差公式 $|R_1(x)| \le \frac{h^2}{8} \max |f''(x)|$(其中 $|f''(x)| = |-\sin x| \le 1$),要求 $\frac{h^2}{8} \le 0.005$。
结论:步长取 $h = 0.2$ 即可满足精度要求。
牛顿插值与拉格朗日插值结果相同(唯一性保证),但构造方式不同:拉格朗日用基函数,牛顿用均差(divided difference),具有承袭性——添加新结点时原有系数不用重算。
均差的定义
一阶均差:$f[x_j, x_{j+1}] = \frac{f(x_{j+1}) - f(x_j)}{x_{j+1} - x_j}$
二阶均差:$f[x_j, x_{j+1}, x_{j+2}] = \frac{f[x_{j+1}, x_{j+2}] - f[x_j, x_{j+1}]}{x_{j+2} - x_j}$
$n$ 阶均差:递归定义,均差值与结点排列顺序无关。
牛顿插值公式
均差表提供了从 $f(x_0)$ 到各阶均差的系统计算方法。
切比雪夫插值结点
课件在 Chap13 中把 Runge 现象继续推进了一步:既然高次等距插值在区间边缘会振荡,那么问题也许不只在“次数太高”,还在“节点选得不好”。对区间 $[-1,1]$ 上的 $n$ 次插值,切比雪夫结点取为
它们在区间两端更密,能减小 $\omega_{n+1}(x)=\prod_{j=0}^n(x-x_j)$ 的极大幅度,从而抑制等距节点下明显的边缘振荡。
Hermite 插值
如果已知的不仅是函数值 $f(x_i)$,还有节点处导数值 $f'(x_i)$,那么仅用普通插值会浪费信息。Hermite 插值要求逼近函数同时满足函数值条件与导数条件,因此比普通插值更适合处理“节点处斜率也已知”的问题。
两点三次 Hermite 插值的误差公式为
这说明:导数信息的加入,相当于把节点条件“加倍”,也让逼近精度的局部控制能力显著增强。
例题 · 为什么切比雪夫结点能改善高次插值
题目:对 $f(x)=\dfrac{1}{1+x^2}$ 在区间上做高次插值时,为什么课件要从等距节点转向切比雪夫节点?
- 第一步:回忆误差项 $R_n(x)=\dfrac{f^{(n+1)}(\xi)}{(n+1)!}\omega_{n+1}(x)$。
- 第二步:在等距节点下,$\omega_{n+1}(x)$ 在区间边缘常会变得很大,于是误差也被同步放大。
- 第三步:切比雪夫节点把节点向边缘加密,从而压低 $\omega_{n+1}(x)$ 的振荡幅度。
答案:切比雪夫节点并不是神秘配方,而是在误差公式层面直接针对“边缘振荡”开的药方。
题目 · Runge 函数的等距高次插值
题目:对于函数 $f(x)=\dfrac{1}{1+25x^2}$,在区间 $[-1,1]$ 上取等距节点进行高次插值,当 $n$ 增大时,插值多项式在区间两端会出现什么现象?
| 选项 | 说法 | 判断 |
|---|---|---|
| A | 插值多项式趋于直线 | 错误。次数升高不会让整体插值自然退化成直线 |
| B | 收敛到 $f(x)$ | 错误。等距节点下高次插值并不保证一致收敛到原函数 |
| C | 振荡加剧,误差变大 | 正确 |
| D | 插值多项式趋于零 | 错误。端点振荡不是趋零,而是误差被放大 |
答案解析:$f(x)=\dfrac{1}{1+25x^2}$ 是经典 Runge 函数。对它在 $[-1,1]$ 上使用等距节点做高次多项式插值时,随着节点数增加,插值多项式会在区间两端出现明显振荡,误差反而变大,这就是 Runge 现象。
龙格现象说明高次整体插值不可靠。解决方案:用分段低次多项式在小区间上插值,再用连接条件拼成整体光滑函数。
分段线性插值
在每个子区间 $[x_j, x_{j+1}]$ 上用线性函数:
三次样条插值(Definition 5.4)
给定分划 $a = x_0 < x_1 < \cdots < x_n = b$,$S(x)$ 满足:
- 在每个子区间上是三次多项式;
- $S(x)$ 二阶导数 $S''(x)$ 在 $[a, b]$ 上连续;
- $S(x_j) = y_j$(插值条件)。
待定系数共 $4n$ 个,条件方程 $4n - 2$ 个,还需 2 个边界条件(自然边界 $S''(x_0)=S''(x_n)=0$、周期边界或固定导数边界)。
插值要求 $P(x_i) = y_i$ 严格成立,但实验数据通常带有测量噪声——强制拟合噪声数据反而会放大误差。最小二乘法(Least Squares)放弃逐点精确,通过最小化残差平方和得到最优拟合:
线性最小二乘问题
给定数据点 $(x_i, y_i)$,$i=1, \ldots, m$,拟合函数 $\varphi(x) = c_0 + c_1 x$。最小化
其中 $G = \begin{bmatrix} 1 & x_1 \\ \vdots & \vdots \\ 1 & x_m \end{bmatrix}$,$X = \begin{bmatrix} c_0 \\ c_1 \end{bmatrix}$。
正规方程组与几何意义
残差平方和最小化 $\min_X \|GX - F\|_2^2$ 等价于解正规方程组:
几何意义:在由 $G$ 的列向量张成的子空间中找 $F$ 的最近似向量。最优解对应于把向量 $F$ 正交投影到这个子空间上,因此最小残差 $r=F-GX^*$ 与该子空间正交,即
这就是“残差与拟合子空间垂直”的几何本质,也是正规方程组的来源。
为什么课件还要讲 QR 分解
Chap16 进一步指出:虽然正规方程组形式紧凑,但它会把条件数平方化,不一定是数值上最稳的做法。若把设计矩阵分解为
其中 $Q$ 的列向量正交,$R$ 为上三角矩阵,则最小二乘问题可化为求解一个更稳定的三角方程组。也就是说,QR 分解不是另起炉灶,而是在同一个最小二乘问题上换了一条数值更稳的实现路线。
例题 · 线性拟合
题目:用最小二乘法拟合数据 $(-3, -0.277), (-2, 0.895), (-1, -1.565), (0, 3.456), (1, 3.060), (2, 4.856), (3, 3.898)$。
解:设 $\varphi(x) = c_0 + c_1 x$,解正规方程组得 $c_0 = 2.0464, c_1 = 0.8955$,残差 2-范数 $\|r\|_2 = 3.4142$。
用三次多项式拟合同样数据,残差降为 $\|r\|_2 = 2.9007$。这说明提高多项式次数可能降低残差,但也会增加模型复杂度,因此在实际计算中需要在“误差更小”和“模型更简洁”之间作权衡。
| 应用场景 | 方法 | 原因 |
|---|---|---|
| 函数表查值 | 线性插值 / Newton 插值 | 用少量节点近似区间内部函数值 |
| 工程实测数据处理 | 最小二乘多项式拟合 | 测量数据有噪声,直接插值会放大误差 |
| 飞机机翼剖面与曲线重建 | 三次样条插值 | 保证曲线平滑并控制弯曲程度 |
| 高次多项式插值节点设计 | 切比雪夫结点 | 减轻等距节点下的边缘振荡 |
| 数值积分(Newton-Cotes) | 等距结点插值近似被积函数 | 用多项式逼近复杂函数再积分 |
复习速查
- 拉格朗日基函数:$l_k(x) = \prod_{j \neq k} \frac{x - x_j}{x_k - x_j}$,性质 $l_k(x_i) = \delta_{ki}$。
- 插值误差余项:$R_n(x) = \frac{f^{(n+1)}(\xi)}{(n+1)!}\omega_{n+1}(x)$。
- 龙格现象:高次等距插值在区间边缘产生振荡,不可靠。
- 牛顿插值公式:$N_n(x) = f(x_0) + f[x_0,x_1](x-x_0) + \cdots$,具有承袭性。
- 切比雪夫结点:通过重新设计节点分布来抑制高次等距插值的边缘振荡。
- Hermite 插值:同时利用函数值与导数值,误差中出现平方节点因子。
- 三次样条:分域三次多项式 + $S''(x)$ 连续 + 2 个边界条件。
- 最小二乘:解正规方程组 $G^T G X = G^T F$;若从数值稳定性考虑,可转而用 QR 分解实现。
- 误差分类:插值误差来自逼近本身,数值舍入误差来自有限精度计算,两者来源不同。
参考来源
- 电子科技大学数学科学学院 · 邓良剑 · 《数值分析》Chap 11–16 讲义
- 数值分析笔记(四)插值 - 知乎专栏
- Numerical Analysis - 华东师范大学