常用插值方法详细解析及示例

·
2026-06-16 02:52:08

1. 最近邻插值核心思想: 寻找距离未知点 x 最近的已知数据点 x_i,并将其值 y_i 直接赋予 x。

特点与优势:

计算速度极快:只需比较距离,无需复杂计算。保持原值:插值结果永远是原始样本值之一,不会产生新的值。不连续:插值后的函数是阶跃的,不光滑。缺点:

精度最低,误差较大。生成图像或曲线会有明显的“块状”或“锯齿”效应。示例:

计算距离:|2.5-2| = 0.5, |2.5-3| = 0.5

结论:x=2.5 离 x=2和x=3的距离一样,可以增加新策略,比如选小的方向,则插值结果:y = 4。

主要应用: 图像放大(当需要保持锐利边缘且不引入新颜色时,如像素艺术)、快速预览。

2. 线性插值核心思想: 认为相邻两个已知点之间的变化是线性的,通过连接两点的线段来估计未知点的值。

特点:

计算简单,效率高。结果连续,避免了最近邻法的跳跃感。比高阶多项式插值更稳定,不会出现疯狂的振荡。插值结果不平滑(在节点处不可导,一阶导数不连续)。精度高于最近邻但低于高阶方法。示例:

已知点:(1, 1), (2, 4), (3, 9),求 x=2.5的值。

插值结果:y = 6.5。

3. 多项式插值 (Polynomial)核心思想: 寻找一个唯一的 n 阶多项式 P(x) ,使其恰好通过所有 n+1 个已知数据点。

3.1 拉格朗日插值核心思想: 构造一组拉格朗日基多项式 Li(x)Li(x),每个 Li(x) 在 x=xi 处为 1,在其他已知点 xj(j≠i)处为 0,最终插值多项式P(x)是这些基多项式的线性组合,形式分别为:

特点:

i(xj)={1if j=i0if j

示例:

已知点:(1, 1), (2, 4), (3, 9),求 x=2.5的值。

构造基多项式:

3.2 牛顿插值核心思想: 使用均差来逐步构造多项式,形式为:

P(x)=a0+a1(x−x0)+a2(x−x0)(x−x1)+...特点:

计算效率高 O(n2):增加一个新数据点时,只需在现有多项式后增加一项,无需重新计算所有项,这在动态获取数据时非常有用。数值计算上通常比拉格朗日形式更稳定。同样受到龙格现象的困扰。示例

已知点:(1, 1), (2, 4), (3, 9),求 x=2.5的值。

构造均差表:

从表中得到系数:

4. 样条插值核心思想: 为了解决高阶多项式插值的龙格现象,采用“分而治之”的策略,使用分段低阶多项式(最常用的是三次多项式)来连接所有数据点,并强制要求连接点处具有连续的一阶和二阶导数,从而保证整体曲线的光滑性,最常用三次样条插值。

特点:

极其光滑:整体曲线具有连续的二阶导数,视觉效果非常好。非常稳定:避免了龙格现象,对于任意分布的数据点都能得到良好的结果。精度高:是实践中最常用、最可靠的插值方法之一。计算复杂:需要求解一个三对角线性方程组来确定所有分段多项式的系数。示例:

已知点:(1, 1), (2, 4), (3, 9),求 x=2.5的值。

建立方程组

设三个节点为 x₀=1, x₁=2, x₂=3,对应的函数值为 y₀=1, y₁=4, y₂=9。

分别找到两个三次多项式:

S₀(x) = a₀ + b₀(x-1) + c₀(x-1)² + d₀(x-1)³,在区间 [1,2] 上

S₁(x) = a₁ + b₁(x-2) + c₁(x-2)² + d₁(x-2)³,在区间 [2,3] 上插值条件

S₀(1) = a₀ = 1

S₀(2) = a₀ + b₀ + c₀ + d₀ = 4

S₁(2) = a₁ = 4

S₁(3) = a₁ + b₁ + c₁ + d₁ = 9一阶导数连续性(在 x=2 处)

S₀’(2) = b₀ + 2c₀ + 3d₀

S₁’(2) = b₁

S₀’(2) = S₁’(2)二阶导数连续性(在 x=2 处)

S₀’‘(2) = 2c₀ + 6d₀

S₁’‘(2) = 2c₁

S₀’‘(2) = S₁’'(2)自然边界条件

S₀’‘(1) = 2c₀ = 0

S₁’'(3) = 2c₁ + 6d₁ = 0求解方程组

根据上述条件,我们得到以下方程组:

方程1:a₀ = 1

方程2:a₀ + b₀ + c₀ + d₀ = 4

方程3:a₁ = 4

方程4:a₁ + b₁ + c₁ + d₁ = 9

方程5:b₀ + 2c₀ + 3d₀ = b₁

方程6:2c₀ + 6d₀ = 2c₁

方程7:2c₀ = 0

方程8:2c₁ + 6d₁ = 0

从方程7得:c₀ = 0

代入方程6:6d₀ = 2c₁ ⇒ c₁ = 3d₀

代入方程2:1 + b₀ + 0 + d₀ = 4 ⇒ b₀ + d₀ = 3

代入方程5:b₀ + 0 + 3d₀ = b₁ ⇒ b₁ = b₀ + 3d₀

代入方程4:4 + b₁ + c₁ + d₁ = 9 ⇒ b₁ + c₁ + d₁ = 5

代入方程8:2c₁ + 6d₁ = 0 ⇒ 6d₀ + 6d₁ = 0 ⇒ d₀ + d₁ = 0 ⇒ d₁ = -d₀

现在新增关系:

b₁ = b₀ + 3d₀

c₁ = 3d₀

d₁ = -d₀

代入 b₁ + c₁ + d₁ = 5:

(b₀ + 3d₀) + 3d₀ + (-d₀) = 5 ⇒ b₀ + 5d₀ = 5

之前有 b₀ + d₀ = 3

解这两个方程:

b₀ + d₀ = 3

b₀ + 5d₀ = 5

相减得:4d₀ = 2 ⇒ d₀ = 0.5

代入得:b₀ = 3 - 0.5 = 2.5

进一步得出:

b₁ = 2.5 + 3×0.5 = 4

c₁ = 3×0.5 = 1.5

d₁ = -0.5得到样条函数

对于区间 [1,2]:S₀(x) = 1 + 2.5(x-1) + 0(x-1)² + 0.5(x-1)³

对于区间 [2,3]:S₁(x) = 4 + 4(x-2) + 1.5(x-2)² - 0.5(x-2)³计算 x=2.5 的值

x=2.5 位于区间 [2,3],所以使用 S₁(x):

S₁(2.5) = 4 + 4(2.5-2) + 1.5(2.5-2)² - 0.5(2.5-2)³

= 4 + 4×0.5 + 1.5×0.25 - 0.5×0.125

= 4 + 2 + 0.375 - 0.0625

= 6.31255. 总结与对比

为了更直观地比较,下表总结了各方法的核心特性:

方法

核心思想

光滑性

计算效率

精度/稳定性

缺点

最近邻

直接取最近点的值

不连续

极高

最低

锯齿状,误差大

线性

用直线连接相邻点

C00 连续

中等

节点处有“尖角”

多项式

单一天价多项式穿过所有点

C∞ 无限光滑

不稳定(龙格现象)

高阶振荡,数值不稳定

三次样条

分段三次多项式,节点光滑

C2 连续(非常光滑)

中等

高且稳定

实现相对复杂