4. 分段线性插值与分段三次Hermite插值

当插值节点数量增多时,直接用高次多项式穿过所有节点会带来严重的振荡(Runge 现象),因此工程上更常用“分段低次插值”的思路:把整个区间切成若干小区间,在每个小区间上使用低次多项式,再通过节点处的连接条件保证整体曲线足够光滑。本节聚焦两种最基础、也最常用的方案——分段线性插值与分段三次 Hermite 插值,从构造方法、连续性阶数、导数条件和误差量级四个维度进行对比分析。

一、分段线性插值:最简单的“折线”

设区间 [a,b] 被节点 a=x₀<x₁<…<xₙ=b 划分,已知函数值 yᵢ=f(xᵢ)。分段线性插值在每个子区间 [xᵢ,xᵢ₊₁] 上取连接 (xᵢ,yᵢ) 与 (xᵢ₊₁,yᵢ₊₁) 的直线:

L(x) = yᵢ + (yᵢ₊₁ − yᵢ)/(xᵢ₊₁ − xᵢ) · (x − xᵢ),  x ∈ [xᵢ, xᵢ₊₁]

构造过程极其直接:只需相邻两点的函数值,不需要任何导数信息。由于相邻子区间在公共节点处取值相同,整条曲线在节点处连续,即 L(x) ∈ C[a,b];但左右两段的斜率一般不同,节点处一阶导数通常不存在,因此它只有 C⁰ 连续性。几何上表现为一条折线,节点处出现“尖角”。

误差方面,若 f 在子区间上二阶连续可导,令 hᵢ=xᵢ₊₁−xᵢ,则区间内任一点满足

|f(x) − L(x)| ≤ (hᵢ²/8) · max|f″(x)|

即误差是 O(h²) 量级,且与二阶导数成正比。这意味着:函数曲率大的地方(|f″| 大)折线误差明显,加密节点(减小 h)可按平方速度改善精度。分段线性插值的优点是绝不产生振荡、计算量极小、保形性好(不会超出相邻节点值的范围);缺点是光滑性差,用于绘制曲线或求导时会暴露折角。

二、分段三次 Hermite 插值:带导数的光滑拼接

若在每个节点不仅给出函数值 yᵢ,还给出导数值 mᵢ=f′(xᵢ),就可以在每个子区间上用一段三次多项式同时匹配两端的函数值与导数值,共 4 个条件恰好确定 4 个系数。采用基函数(Hermite 基)形式,子区间 [xᵢ,xᵢ₊₁] 上令 t=(x−xᵢ)/hᵢ,则

H(x) = h₀₀(t)·yᵢ + h₁₀(t)·hᵢ·mᵢ + h₀₁(t)·yᵢ₊₁ + h₁₁(t)·hᵢ·mᵢ₊₁
h₀₀(t)=2t³−3t²+1,  h₁₀(t)=t³−2t²+t
h₀₁(t)=−2t³+3t²,   h₁₁(t)=t³−t²

这组基函数满足 h₀₀(0)=1、h₀₀(1)=0、h₀₀′(0)=h₀₀′(1)=0 等端点条件,因此拼接后每个节点处左右两段不仅函数值相等,一阶导数也相等,整体达到 C¹ 连续性。由于每段是三次多项式,二阶导数在节点处一般不连续,故不是 C²。

误差估计为:若 f 在子区间上四阶连续可导,则

|f(x) − H(x)| ≤ (hᵢ⁴/384) · max|f⁽⁴⁾(x)|

误差达到 O(h⁴),比线性插值高两个量级,且曲线在节点处无折角,视觉与数值上都更平滑。代价是需要节点导数 mᵢ;若实际问题只给函数值,可用差商近似 mᵢ(如 mᵢ≈(yᵢ₊₁−yᵢ₋₁)/(xᵢ₊₁−xᵢ₋₁)),此时严格说已不是精确 Hermite 插值,光滑性与精度会有所下降,但工程上常可接受。

三、两种方法的对比与选用

下面的关系图把两种方案在“输入信息—分段构造—连续性—误差量级”上的差异并列呈现,便于快速对照:

分段线性插值 输入:节点 (xᵢ, yᵢ) 仅需函数值,无需导数 每段:一次多项式(直线) 2 个条件确定 2 个系数 连续性:C⁰(节点处有折角) 一阶导数一般不连续 误差:O(h²),≤ h²/8·max|f″| 无振荡,保形性好 分段三次 Hermite 插值 输入:节点 (xᵢ, yᵢ) 与导数 mᵢ 需一阶导数(或差商近似) 每段:三次多项式 4 个条件确定 4 个系数 连续性:C¹(节点处光滑) 二阶导数一般不连续 误差:O(h⁴),≤ h⁴/384·max|f⁽⁴⁾| 更平滑,精度高两个量级 增加 导数

选用时可把握几条原则:若只关心节点值之间的单调过渡、需要绝对避免过冲(如某些物理量、颜色映射),分段线性插值简单可靠;若需要曲线光滑、后续还要对插值结果求导或做可视化,Hermite 插值更合适。若导数难以获得,可考虑用差商近似,或改用只需函数值即可达到 C² 的三次样条(后续章节展开)。

四、一个可手算的示例

取 f(x)=x³ 在节点 x₀=0、x₁=1、x₂=2 上插值,真实导数 m₀=0、m₁=3、m₂=12。考察子区间 [0,1]:

  • 分段线性:L(x)=x,在 x=0.5 处 L=0.5,而 f(0.5)=0.125,误差 0.375。
  • Hermite:h=1,t=x,代入基函数得 H(x)=0·h₀₀+0·h₁₀+1·h₀₁+3·h₁₁ = (−2x³+3x²)+3(x³−x²)=x³,恰好精确。这是因为 x³ 的四阶导数为零,误差上界 h⁴/384·max|f⁽⁴⁾|=0,与理论一致。

该示例说明:当被插函数本身是低次多项式时,Hermite 插值可能精确复现;而线性插值即便对最简单的三次函数也会产生明显偏差。实际编程时,可先按上式在每段内计算 t,再累加四个基函数项,最后用节点处左右段函数值与导数是否吻合来验证 C¹ 拼接是否正确。

检验拼接是否正确的实用方法:对每个内部节点 xᵢ,分别用左段和右段公式计算 H(xᵢ) 与 H′(xᵢ),两者应分别等于 yᵢ 与 mᵢ;若不等,多半是 t 的归一化或基函数系数写错。
注意误差公式中的 h 是子区间长度,节点非等距时应对每个子区间分别取 hᵢ 并取最大误差上界;此外,Hermite 插值虽为 C¹,但若节点导数 mᵢ 给得与真实导数偏差较大,曲线可能出现局部过冲,此时应检查导数来源而非盲目加密节点。