在生产实践中,由于给出的通常是一批离散的样点,为了满足设计和理论分析的需要,我们需要寻求函数的分析表达式。解决这类问题主要有两类方法:一类是要求近似函数严格通过给定的已知样点,这称为插值法;另一类则不要求严格通过已知点,只要求总偏差最小,称为曲线拟合法。本文详细梳理插值法(特别是多项式插值)的理论、公式推导及误差分析。
一、拉格朗日 (Lagrange) 插值
1、多项式插值原理
代数插值的基本问题是:已知函数
使其满足插值条件:
将这
该方程组的系数矩阵
由于
但是,求解行列式的时间复杂度是阶乘级别的,实际情况下难以适用。
2、插值多项式的误差估计
设插值多项式与被插函数的截断误差(插值余项)为
其中
证明:
构造辅助函数:对固定点
,构造关于变量 的辅助函数: 显然
。又因为插值条件使得 ,所以 。因此 在 内至少有 个零点(即 )。反复应用罗尔中值定理,由于 有 个零点,其一阶导数 至少有 个零点。反复求导 次, 在区间内至少有一个零点,设为 。 由于
是至多 次多项式, 。同时, 是最高次系数为 1 的 次多项式,故 。代入并化简: 解得
。该式对于节点 同样成立。
3、拉格朗日 (Lagrange) 插值基函数
为了避免直接求解线性方程组的高昂计算量,我们采用基函数线性组合的思路。定义 Lagrange 插值基函数
由此推导出
由此得到
由于
二、牛顿 (Newton) 插值
Lagrange 插值虽然结构对称,但在增加新节点时,所有的基函数都要重新计算,很难受。Newton 插值通过引入“差商”的概念解决了这个问题。
1、差商
一阶差商定义为
差商存在以下性质:
- 线性性:
。 - 函数值线性组合表示:
。 - 对称性:改变节点顺序不改变差商的值,如
。 - 与导数的关系:差商等于对应区间内某一点的高阶导数除以阶乘:
2、Newton 插值公式与推导
利用差商定义,我们可以不断展开函数值:
将后续展开式层层代入并消去相等部分,得到 Newton 插值公式:
其插值余项为
这极大减少了计算量。
3、差分
当插值节点是等距的(即
- 向前差分:
,高阶为 。 - 向后差分:
。 - 中心差分:
。
差分可直接表示为函数值的线性组合:
差商与差分的关系为:
4、等距节点插值公式
引入变换参数
- Newton 向前插值公式(适用于插值点靠近区间起点的计算):设
,代入前述 Newton 公式得:
其余项为
- Newton 向后插值公式(适用于插值点靠近区间终点的计算):设
,利用向后差分可得:
其余项为
三、分段线性插值
1、引入及其原理
在代数插值过程中,常常通过增加插值多项式的次数来提高对函数的逼近程度,但是往往不能得到有效的结果,例如对于函数
可见在
根据分段线性插值的理论直接写出
类似于 Lagrange 插值多项式的构造,函数:
就是所求的分段线性插值函数。
2、代码
下面是生成图片“分段线性插值与原函数对比”图像的MATLAB代码:
% 1. 定义原函数 (Runge 函数)f = @(x) 1 ./ (1 + x.^2);
% 2. 在 [-5, 5] 之间均匀取11个点,以进行分段线性插值n = 10;x_nodes = linspace(-5, 5, n + 1);y_nodes = f(x_nodes);
% 3. 定义绘图区间 [-10, 10] 用于观察外推和龙格现象x_plot = linspace(-10, 10, 500);y_true = f(x_plot);
% 4. 计算分段线性插值结果% 使用 interp1 函数进行分段线性插值,并启用 'extrap' 进行范围外推y_interp = interp1(x_nodes, y_nodes, x_plot, 'linear', 'extrap');
% 5. 绘图对比figure;plot(x_plot, y_true, 'b-', 'LineWidth', 2); hold on;plot(x_plot, y_interp, 'r--', 'LineWidth', 1.5);plot(x_nodes, y_nodes, 'ko', 'MarkerSize', 6, 'MarkerFaceColor', 'g');
% 图形修饰title('分段线性插值与原函数对比');xlabel('x');ylabel('y');legend('原函数 f(x) = 1/(1+x^2)', '分段线性插值', '插值节点', 'Location', 'Best');grid on;xlim([-10, 10]);ylim([-2, 2]);四、埃尔米特(Hermite)插值
1、问题引入与基本插值方法
对于插值函数,有时候不仅需要使其在节点处的函数值相同,还需要其实在节点处的导数与原函数导数相同,乃至是二阶或更高阶导数,这就是埃尔米特插值问题。
已知函数
满足上述条件的多项式
于是,Hermite 插值多项式为
该多项式满足条件,且次数不超过
其中
代入得:
解得
同理,由于
代入条件式得
于是
所以 Hermite 插值多项式为
2、分段三次 Hermite 插值
根据 Hermite 插值多项式,特别地,当
所以,两个节点的三次 Hermite 插值多项式为:
当节点较多时,为避免多项式次数过高而引起非节点处的偏离过大,仍采用分段插值的方法。若把节点两两分段,在每一小段上作三次 Hermite 插值,就得到一个分段三次 Hermite 插值函数
;- 在每个小区间
( )上, 是三次多项式。
也可以通过构造基函数给出分段三次 Hermite 插值函数的表达式。参照分段线性插值与 Hermite 插值基函数公式(5-47)和式(5-48),可得出分段三次 Hermite 插值的基函数为
分段三次 Hermite 插值函数为:
五、样条插值
前述分段线性插值和分段三次 Hermite 插值虽然在一定程度上克服了高次多项式插值的龙格现象,但分段线性插值仅保证函数连续,导数不连续;分段三次 Hermite 插值虽能保证一阶导数连续,却无法保证二阶导数连续。然而在许多工程技术问题中,如飞机机翼外形设计、内燃机凸轮曲线等,不仅要求曲线连续,还要求曲率连续,即二阶导数连续。这就引出了样条插值。
1、样条函数的概念
所谓样条(Spline),原本是工程设计中使用的一种绘图工具,它是一根富有弹性的细木条或细金属条。绘图员用压铁固定样条在若干已知点上,迫使其通过这些点,样条自然弯曲形成一条光滑曲线,称为样条曲线,且在连接点处具有连续的曲率。三次样条插值正是由此抽象而来的数学模型。数学上将具有一定光滑性的分段多项式称为样条函数。具体地说,给定区间
如果函数
- 在每个小区间
上, 是 次多项式。 在 上具有 阶连续导数。
则称
2、三次样条插值
利用样条函数进行插值,即取插值函数为样条函数,称为样条插值。分段线性插值便是一次样条插值。本节重点讨论三次样条插值。已知函数
处的函数值
- 插值条件:
。 - 在每个小区间
上, 是三次多项式,记为 。 - 在整个区间
上, 具有二阶连续导数,即 。
则称
3、以节点处的二阶导数值为参数的三次样条插值函数
设
将上式对
利用插值条件
或者等价地写作:
对
或等价地:
由于
分别计算右导数和左导数。由式(5-64),在
在
由连续性
移项整理,将所有含
令:
两边同乘以
上式称为三次样条插值的
(1) 第一类边界条件(给定端点处的一阶导数值)
若已知
移项得:
在右端点
移项得:
联立,得到关于
其中:
该方程组的系数矩阵为严格对角占优的三对角矩阵,因此存在唯一解,可用追赶法高效求解。
(2) 第二类边界条件(给定端点处的二阶导数值)
若已知
此时
特别地,当
(3) 第三类边界条件(周期边界条件)
若
由
其中:
上述三种情形下,方程组的系数矩阵均为严格对角占优矩阵,因此方程组有唯一解。将求得的
4、以节点处的导数值为参数的三次样条插值函数
除了以二阶导数
设
其中
由
对式(5-71)求二阶导数并代入连续性条件,可导出关于参数
其中:
上称为三次样条插值的
方程组含有
- 第一类边界条件:直接给定
, ,此时未知数减少为 个,得到三对角方程组。 - 第二类边界条件:给定
, ,可由式(5-71)的二阶导数在端点处的表达式导出关于 和 的方程,与式(5-72)联立得到三对角方程组。 - 第三类边界条件(周期边界条件):
,可得到 阶方程组。
这些方程组的系数矩阵均非奇异,故方程组有唯一解。解出参数