形式陈述
给定正整数 n ≥ 1 及严格递增的实节点
a = x 0 < x 1 < ⋯ < x n = b 及实数据 y i 。与一个全局插值多项式 理路 多项式插值问题 Polynomial interpolation 由互异节点上的有限数据唯一确定次数受限的插值多项式,并区分对象存在性与具体表示算法。 不同,样条允许相邻区间使用不同多项式。对非负整数 m , k ,次数不超过 m 、光滑度为 C k 的样条,是在每个区间 [ x i , x i + 1 ] 上为次数不超过 m 的多项式,并在内部节点处具有直到 k 阶的连续导数的函数。分段次数本身不自动保证拼接光滑,这些导数的连续性 理路 连续性 Continuity · Continuous function 函数在输入微小变化时输出可被控制为任意小变化的性质。 必须单独施加;P 3 表示次数不超过三的多项式空间。
三次插值样条 s 满足
s ( x i ) = y i , s ∈ C 2 [ a , b ] , s | [ x i , x i + 1 ] ∈ P 3 . 为什么还需要边界条件?n 段三次式共有 4 n 个系数,每段两端的插值给 2 n 个条件,内部一、二阶导数连续再给 2 ( n − 1 ) 个条件,合计仍少两个。因此必须补两个边界条件。自然样条取 s ″ ( a ) = s ″ ( b ) = 0 ;clamped 样条给定 s ′ ( a ) 与 s ′ ( b ) ;not-a-knot 条件要求最前和最后一个内部节点处三阶导数也连续,使相邻两段在该处实际上属于同一三次多项式。这一标准写法要求至少四个节点;只有两三个节点时需另定低次退化规则,否则两个条件可能不存在或重复。
令 h i = x i + 1 − x i > 0 、M i = s ″ ( x i ) 。三次式的二阶导数为一次式,所以一旦知道两端的 M i , M i + 1 ,就在整段上知道了 s ″ 。积分两次,再由两个端点值确定积分常数,得到
s ( x ) = M i ( x i + 1 − x ) 3 + M i + 1 ( x − x i ) 3 6 h i + ( y i − M i h i 2 6 ) x i + 1 − x h i + ( y i + 1 − M i + 1 h i 2 6 ) x − x i h i . 要求左右两段的一阶导数在内部节点相等,就得到
h i − 1 M i − 1 + 2 ( h i − 1 + h i ) M i + h i M i + 1 = 6 ( y i + 1 − y i h i − y i − y i − 1 h i − 1 ) . 边界条件补齐首尾方程后得到带状或三对角线性系统 理路 线性方程组 System of linear equations 可写为矩阵方程 Ax=b 的有限个一次方程系统。 。自然边界下该系统可用三对角消元在 O ( n ) 时间、O ( n ) 存储内求解;构造在系统解出并形成每段系数后完成。单点求值先以二分查找定位区间,耗时 O ( log ( n + 1 ) ) ,再用常数次运算计算对应三次式。
直觉
高次全局多项式像一根从头贯穿到尾的硬尺,增加或移动一个数据点会重塑整条曲线;三次样条把区间分成短段,再用一阶、二阶导数连续把各段接成没有折角和曲率跳变的曲线。低次数限制局部振荡,光滑拼接保留整体视觉和微分结构。
B-spline 基把样条空间写成局部支撑基:一个基函数只覆盖少数相邻区间,因此矩阵呈带状。需要区分的是,基函数局部并不意味着最终插值解只受局部数据影响;解系数时的全局线性系统仍会把单点改动传播到远处,只是影响通常逐渐衰减。
若要把这套表示具体算出来,可从节点重数规定的样条空间 理路 样条空间与节点重数 Spline space · Knot multiplicity · 节点重数与连续性 用节点重数规定分段多项式的拼接条件,计算空间维数,并明确跳变和端点取值。 进入B样条递推基 理路 B样条基与局部支撑 B-spline basis · Cox–de Boor recursion · B样条 从零次区间指示函数递推局部基,证明非负、单位分解、基性质及重复节点下的连续性。 ,再用局部三角算法 理路 de Boor 样条求值 de Boor algorithm · de Boor spline evaluation 定位一个非零节点跨度,以局部凸组合计算样条值,并完整处理重节点、右端点与失败输入。 求值。下文的三点自然样条也可表示为次数三、节点 ( 0 , 0 , 0 , 0 , 1 , 2 , 2 , 2 , 2 ) 、系数 ( 0 , 1 / 2 , 3 / 2 , 1 / 2 , 0 ) 的B样条组合。在 x = 1 ,三个非零基值为 ( 1 / 4 , 1 / 2 , 1 / 4 ) ,故值为一;在 [ 0 , 1 ] 展开正是 3 x / 2 − x 3 / 2 ,右段由对称得到。该坐标表示没有替换插值条件或自然边界条件。
例子与边界
先用三点 ( 0 , 0 ) , ( 1 , 1 ) , ( 2 , 0 ) 完成一次自然样条构造。边界给 M 0 = M 2 = 0 ,两个步长都为 1 ,唯一内部方程为 4 M 1 = 6 ( − 1 − 1 ) = − 12 ,故 M 1 = − 3 。代入分段公式得
s ( x ) = { 3 2 x − 1 2 x 3 , 0 ≤ x ≤ 1 , 3 2 ( 2 − x ) − 1 2 ( 2 − x ) 3 , 1 ≤ x ≤ 2. 两段在 x = 1 处都取值 1 ,一阶导数都为 0 ,二阶导数都为 − 3 ;两外端的二阶导数为零。这同时检查了插值、拼接和边界条件,而不只是检查曲线外观。
同一组稠密采样若用一个很高次的全局多项式连接,端点附近可能出现大摆动;分段三次只在短区间内建模,并通过 C 2 条件协调邻段,通常更稳健。一个明确的四阶结论是:若 f ∈ C 4 [ a , b ] ,采用等距网格和 not-a-knot 边界条件,则当网格足够细时
‖ f − s ‖ ∞ = O ( h 4 ) , h = max i h i . 这个阶数不能无条件移植给自然样条。如果原函数端点二阶导数不为零,自然边界就会强迫一个不匹配的曲率,端点误差可能主导全区间一致误差;不能仅凭“每段三次”宣布四阶。
相同节点和值在 natural、clamped 和 not-a-knot 条件下会产生不同曲线,尤其端点附近差异明显;所以“那个 cubic spline”不是没有边界条件的唯一对象。若节点不严格递增,h i = 0 会让方程失效;若间距极端悬殊,系统和导数估计也可能变得敏感。
精确插值会穿过所有噪声数据。需要在拟合程度与曲率之间权衡时,应改用 smoothing spline,其目标通常含残差项和粗糙度惩罚;它与本页的精确插值样条不是同一个问题。B-spline 是表示样条空间的一组基,也不等同于某一种边界条件下的插值解。
推论与应用
样条把局部多项式 理路 多项式插值问题 Polynomial interpolation 由互异节点上的有限数据唯一确定次数受限的插值多项式,并区分对象存在性与具体表示算法。 、光滑拼接 理路 连续性 Continuity · Continuous function 函数在输入微小变化时输出可被控制为任意小变化的性质。 和结构化线性求解连接起来。有限元也使用分片多项式空间,但其系数由变分方程决定,不应直接套用插值样条的边界条件。
实现验收应同时检查节点严格递增、边界条件明确、插值残差在节点处满足容差、内部一二阶导数连续,并对线性系统失败或非有限系数给出明确错误。只有曲线“看起来平滑”不足以证明构造正确。
从固定节点值到最小曲率拟合
三次平滑样条 理路 三次平滑样条与未惩罚零空间 Cubic smoothing spline · Smoothing spline · 平滑样条 从二阶导数惩罚构造带仿射零空间的表示式,解自然样条的带状系统,并区分曲率惩罚与系数差分惩罚。 保留本页的自然插值构造,但输入给它的是待优化的拟合值。给定任意节点值,自然插值在所有取相同值的允许函数中有最小二阶导数平方积分;再平衡残差和曲率,便得到带两个未惩罚仿射方向的带状系统。三点响应 ( 0 , 1 , 0 ) 在未归一化惩罚系数 1 / 9 下给拟合值 ( 1 / 6 , 2 / 3 , 1 / 6 ) ,不再要求穿过原始响应。
参考资料
Tobin A. Driscoll and Richard J. Braun, Fundamentals of Numerical Computation , 2017,Cubic splines,构造条件与 Theorem 50。
Carl de Boor, A Practical Guide to Splines , revised ed., Springer, 2001.
MIT OpenCourseWare, 18.330 Introduction to Numerical Analysis: Lecture Notes , spline interpolation, accessed 2026.
Larry L. Schumaker, Spline Functions: Basic Theory , 3rd ed., Cambridge University Press, 2007.