插值法
2026年06月06日
程设计科 / 计算方法
19598字符
阅读量:Loading

在生产实践中,由于给出的通常是一批离散的样点,为了满足设计和理论分析的需要,我们需要寻求函数的分析表达式。解决这类问题主要有两类方法:一类是要求近似函数严格通过给定的已知样点,这称为插值法;另一类则不要求严格通过已知点,只要求总偏差最小,称为曲线拟合法。本文详细梳理插值法(特别是多项式插值)的理论、公式推导及误差分析。

一、拉格朗日 (Lagrange) 插值

1、多项式插值原理

代数插值的基本问题是:已知函数 在区间 上的 个互异点 处的函数值为 ,需要寻求一个至多为 次的多项式:

使其满足插值条件:

将这 个条件代入,得到关于待定系数的线性方程组:

该方程组的系数矩阵 的行列式为范德蒙德 (Vandermonde) 行列式:

由于 互不相同,该行列式的值不为零,从而保证了方程组存在唯一解。这证明了满足插值条件的 次多项式是存在且唯一的。

但是,求解行列式的时间复杂度是阶乘级别的,实际情况下难以适用。

2、插值多项式的误差估计

设插值多项式与被插函数的截断误差(插值余项)为 。下面有如下定理:若 次连续可导,则对于 内任意点 ,插值余项为:

其中

证明

构造辅助函数:对固定点 ,构造关于变量 的辅助函数:

显然 。又因为插值条件使得 ,所以 。因此 内至少有 个零点(即 )。反复应用罗尔中值定理,由于 个零点,其一阶导数 至少有 个零点。反复求导 次, 在区间内至少有一个零点,设为

由于 是至多 次多项式,。同时, 是最高次系数为 1 的 次多项式,故 。代入并化简:

解得 。该式对于节点 同样成立。

3、拉格朗日 (Lagrange) 插值基函数

为了避免直接求解线性方程组的高昂计算量,我们采用基函数线性组合的思路。定义 Lagrange 插值基函数 ,要求它满足:在节点 处值为,在其他节点处值为

由此推导出 的表达式:

由此得到 次 Lagrange 插值多项式

由于 ,这严格满足插值条件。

二、牛顿 (Newton) 插值

Lagrange 插值虽然结构对称,但在增加新节点时,所有的基函数都要重新计算,很难受。Newton 插值通过引入“差商”的概念解决了这个问题。

1、差商

一阶差商定义为 阶差商是两个 阶差商的差商:

差商存在以下性质:

  1. 线性性:
  2. 函数值线性组合表示:
  3. 对称性:改变节点顺序不改变差商的值,如
  4. 与导数的关系:差商等于对应区间内某一点的高阶导数除以阶乘:

2、Newton 插值公式与推导

利用差商定义,我们可以不断展开函数值:

将后续展开式层层代入并消去相等部分,得到 Newton 插值公式:

其插值余项为 [cite: 275][cite_start]。由于满足多项式插值唯一性,,其次余项与拉格朗日余项完全等价。这样优化后,每增加一个节点 ,只需增加一项:

这极大减少了计算量。

3、差分

当插值节点是等距的(即 )时,计算可进一步简化,使用差分表示差商。

  • 向前差分:,高阶为
  • 向后差分:
  • 中心差分:

差分可直接表示为函数值的线性组合:

差商与差分的关系为:

4、等距节点插值公式

引入变换参数 ,有:

  • Newton 向前插值公式(适用于插值点靠近区间起点的计算):设 ,代入前述 Newton 公式得:

其余项为

  • Newton 向后插值公式(适用于插值点靠近区间终点的计算):设 ,利用向后差分可得:

其余项为 ,这种通过差分表计算的方法进一步优化了等距点集上的插值效率。

三、分段线性插值

1、引入及其原理

在代数插值过程中,常常通过增加插值多项式的次数来提高对函数的逼近程度,但是往往不能得到有效的结果,例如对于函数,利用阶拉格朗日插值,会得到下面的结果:

image-20260429150612120

可见在绝对值比较小的时候,其你和效果较好,但是在靠外的插值节点的部分,拟合效果极差,这就是龙格(Runge)现象,直观上容易想象,如果不用多项曲线,而是将曲线 的两个相邻的点用线段连接,这样得到的折线必定能较好地近似曲线。而且只要 连续,节点越密,近似程度越好。由此得到启发,为提高精度,在加密节点时,可以把节点分成若干段,分段用低次多项式近似函数,这就是分段插值的思想。用折线近似曲线,相当于分段用线性插值,称为分段线性插值:

image-20260429151352375

根据分段线性插值的理论直接写出 的表达式如下:

类似于 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 插值多项式。假设有两组函数 ,满足以下条件: 均为至多 次多项式;以及:

于是,Hermite 插值多项式为

该多项式满足条件,且次数不超过 。根据条件, 处的函数值与导数值都为零,因此必须有因子 ,所以可以设:

其中 为 Lagrange 插值基函数。由条件, 需满足:

代入得:

解得 ,因此:

同理,由于 处的函数值与导数值均为 ,而 ,故可设:

代入条件式得

于是 ,因此

所以 Hermite 插值多项式为

2、分段三次 Hermite 插值

根据 Hermite 插值多项式,特别地,当 时,有:

所以,两个节点的三次 Hermite 插值多项式为:

当节点较多时,为避免多项式次数过高而引起非节点处的偏离过大,仍采用分段插值的方法。若把节点两两分段,在每一小段上作三次 Hermite 插值,就得到一个分段三次 Hermite 插值函数 ,它满足:

  1. 在每个小区间 )上, 是三次多项式。

也可以通过构造基函数给出分段三次 Hermite 插值函数的表达式。参照分段线性插值与 Hermite 插值基函数公式(5-47)和式(5-48),可得出分段三次 Hermite 插值的基函数为

分段三次 Hermite 插值函数为:

五、样条插值

前述分段线性插值和分段三次 Hermite 插值虽然在一定程度上克服了高次多项式插值的龙格现象,但分段线性插值仅保证函数连续,导数不连续;分段三次 Hermite 插值虽能保证一阶导数连续,却无法保证二阶导数连续。然而在许多工程技术问题中,如飞机机翼外形设计、内燃机凸轮曲线等,不仅要求曲线连续,还要求曲率连续,即二阶导数连续。这就引出了样条插值。

1、样条函数的概念

所谓样条(Spline),原本是工程设计中使用的一种绘图工具,它是一根富有弹性的细木条或细金属条。绘图员用压铁固定样条在若干已知点上,迫使其通过这些点,样条自然弯曲形成一条光滑曲线,称为样条曲线,且在连接点处具有连续的曲率。三次样条插值正是由此抽象而来的数学模型。数学上将具有一定光滑性的分段多项式称为样条函数。具体地说,给定区间 的一个分划:

如果函数 满足:

  1. 在每个小区间 上, 次多项式。
  2. 上具有 阶连续导数。

则称 为关于分划 次样条函数,其图形称为 次样条曲线。显然,折线就是一次样条曲线。实际中最常用的是三次样条曲线,因为三次样条既能保证二阶导数连续,又不会因次数过高而产生剧烈振荡。

2、三次样条插值

利用样条函数进行插值,即取插值函数为样条函数,称为样条插值。分段线性插值便是一次样条插值。本节重点讨论三次样条插值。已知函数 在区间 上的 个互异节点:

处的函数值 ,求插值函数 ,使其满足:

  1. 插值条件:
  2. 在每个小区间 上, 是三次多项式,记为
  3. 在整个区间 上, 具有二阶连续导数,即

则称 的三次样条插值函数。三次样条插值函数 在每个小区间上是一个三次多项式,因此共有 个待定系数。而插值条件给出了 个方程,内部节点处的一阶、二阶导数连续各给出 个方程,总计 个方程,还差 个条件。因此需要在区间端点处补充两个边界条件方可唯一确定 。下面介绍两种常用的求解三次样条插值函数的方法:一种以节点处的二阶导数值为参,另一种以节点处的一阶导数值为参数。

3、以节点处的二阶导数值为参数的三次样条插值函数

。由于 在每个小区间 上是三次多项式,故其二阶导数 在该区间上是一次多项式(线性函数)。记 ,由线性插值公式可得:

将上式对 积分两次,得:

利用插值条件 确定积分常数 ,整理后得到:

或者等价地写作:

求导,得到:

或等价地:

由于 在内部节点 处一阶导数连续,故有:

分别计算右导数和左导数。由式(5-64),在 处取右极限(此时 ):

处取左极限(由 计算,此时 ):

由连续性 ,得:

移项整理,将所有含 的项移到左端,得:

令:

两边同乘以 ,即可化为:

上式称为三次样条插值的 关系式,或按其力学意义称为三弯矩方程(因为 在力学上代表弯矩)。该方程组含有 个未知参数 ,但只有 个方程,尚需补充两个边界条件。

(1) 第一类边界条件(给定端点处的一阶导数值)

若已知 ,可得在左端点 处:

移项得:

在右端点 处:

移项得:

联立,得到关于 阶线性方程组,其矩阵形式为:

其中:

该方程组的系数矩阵为严格对角占优的三对角矩阵,因此存在唯一解,可用追赶法高效求解。

(2) 第二类边界条件(给定端点处的二阶导数值)

若已知 ,由于 ,直接得到:

此时 已知,方程组中实际上只有 个未知数 ,其矩阵形式为:

特别地,当 时,称为自然边界条件,此时样条曲线在端点处呈自由状态(即端点的弯矩为零),对应的样条称为自然样条。

(3) 第三类边界条件(周期边界条件)

是以 为周期的周期函数,则要求 也具有相同周期,即在端点处满足:

可得 。结合 关系式与周期边界条件,可得到 阶方程组:

其中:

上述三种情形下,方程组的系数矩阵均为严格对角占优矩阵,因此方程组有唯一解。将求得的 代入,即得到三次样条插值函数

4、以节点处的导数值为参数的三次样条插值函数

除了以二阶导数 为参数外,也可以节点处的一阶导数值为参数来构造三次样条插值函数。

。在每个小区间 上,由分段三次 Hermite 插值公式, 可表示为:

其中

在内部节点 处二阶导数连续,即:

对式(5-71)求二阶导数并代入连续性条件,可导出关于参数 的方程组:

其中:

上称为三次样条插值的 关系式,或按其几何意义称为三转角方程(因为 代表曲线在节点处的斜率/转角)。

方程组含有 个未知数 ,仅有 个方程,同样需要补充两个边界条件:

  • 第一类边界条件:直接给定 ,此时未知数减少为 个,得到三对角方程组。
  • 第二类边界条件:给定 ,可由式(5-71)的二阶导数在端点处的表达式导出关于 的方程,与式(5-72)联立得到三对角方程组。
  • 第三类边界条件(周期边界条件):,可得到 阶方程组。

这些方程组的系数矩阵均非奇异,故方程组有唯一解。解出参数 后代入式(5-71),即得三次样条插值函数

关系式(三弯矩方程)和 关系式(三转角方程)是求解三次样条插值函数的两种等价方法。前者以二阶导数为参数,边界条件表达直观;后者以一阶导数为参数,在已知导数信息的场景下更为直接。实际应用中, 关系式更为常见,因其三对角矩阵具有良好的数值稳定性,可用追赶法高效求解。三次样条插值在保证函数值精确通过所有节点的同时,实现了 阶光滑性,有效克服了高次多项式插值的龙格现象,是工程实践中应用最广泛的插值方法之一。

作者信息:老官童鞋gogo
发表于:2026年06月06日
本文标题: 插值法