Skip to content

样条与分段多项式插值

Spline interpolation · Cubic spline

以光滑拼接的低次分段多项式完成插值,并用边界条件与带状线性系统确定三次样条。

形式陈述

给定严格递增节点

a=x0<x1<<xn=b

及数据 yi。次数不超过 m、光滑度为 Ck 的样条,是在每个区间 [xi,xi+1] 上为次数不超过 m 的多项式,并在内部节点处具有直到 k 阶的连续导数的函数。分段次数本身不自动保证拼接光滑,连续条件必须单独施加。

三次插值样条 s 满足

s(xi)=yi,sC2[a,b],s|[xi,xi+1]P3.

这些条件还不足以唯一确定 s,必须补两个边界条件。自然样条取 s(a)=s(b)=0;clamped 样条给定 s(a)s(b);not-a-knot 条件要求最前和最后一个内部节点处三阶导数也连续,使相邻两段在该处实际上属于同一三次多项式。

hi=xi+1xi>0Mi=s(xi)。对内部节点,

hi1Mi1+2(hi1+hi)Mi+hiMi+1=6(yi+1yihiyiyi1hi1).

边界条件补齐首尾方程后得到带状或三对角线性系统。自然边界下该系统可用三对角消元在 O(n) 时间、O(n) 存储内求解;构造在系统解出并形成每段系数后完成。单点求值先以二分查找定位区间,耗时 O(logn),再用常数次运算计算对应三次式。

直觉

高次全局多项式像一根从头贯穿到尾的硬尺,增加或移动一个数据点会重塑整条曲线;三次样条把区间分成短段,再用一阶、二阶导数连续把各段接成没有折角和曲率跳变的曲线。低次数限制局部振荡,光滑拼接保留整体视觉和微分结构。

B-spline 基把样条空间写成局部支撑基:一个基函数只覆盖少数相邻区间,因此矩阵呈带状。需要区分的是,基函数局部并不意味着最终插值解只受局部数据影响;解系数时的全局线性系统仍会把单点改动传播到远处,只是影响通常逐渐衰减。

例子与边界

同一组稠密采样若用一个很高次的全局多项式连接,端点附近可能出现大摆动;分段三次只在短区间内建模,并通过 C2 条件协调邻段,通常更稳健。若 fC4[a,b]、网格形状受控且边界条件与问题相容,经典三次样条插值在一致范数下可达到

fs=O(h4),h=maxihi.

这个阶数带有光滑性、网格与边界假设,不能由“每段三次”一句话自动推出。

相同节点和值在 natural、clamped 和 not-a-knot 条件下会产生不同曲线,尤其端点附近差异明显;所以“那个 cubic spline”不是没有边界条件的唯一对象。若节点不严格递增,hi=0 会让方程失效;若间距极端悬殊,系统和导数估计也可能变得敏感。

精确插值会穿过所有噪声数据。需要在拟合程度与曲率之间权衡时,应改用 smoothing spline,其目标通常含残差项和粗糙度惩罚;它与本页的精确插值样条不是同一个问题。B-spline 是表示样条空间的一组基,也不等同于某一种边界条件下的插值解。

推论与应用

样条把局部多项式光滑拼接和结构化线性求解连接起来。有限元也使用分片多项式空间,但其系数由变分方程决定,不应直接套用插值样条的边界条件。

实现验收应同时检查节点严格递增、边界条件明确、插值残差在节点处满足容差、内部一二阶导数连续,并对线性系统失败或非有限系数给出明确错误。只有曲线“看起来平滑”不足以证明构造正确。

参考资料
  • Carl de Boor, A Practical Guide to Splines, revised ed., Springer, 2001.
  • MIT OpenCourseWare, 18.330 Introduction to Numerical Analysis, spline interpolation notes.
  • Larry L. Schumaker, Spline Functions: Basic Theory, 3rd ed., Cambridge University Press, 2007.