在数值分析这个数学分支中，**样条插值**是使用一种名為样条的特殊分段多项式进行插值的形式。由于样条插值可以使用低阶多项式样条实现较小的插值误差，这样就避免了使用高阶多项式所出现的龙格现象，所以样条插值得到了流行。

样条插值
----

使用多项式插值，对给定数据集进行插值的*n*阶多项式就被给定数据点所唯一地定义出来。但是，对同样的数据进行插值的*n*阶样条并不是唯一的，为了构建一个唯一的样条插值式它还必须满足另外*n*-1个自由度。

线性样条插值
------

线性样条插值是最简单的样条插值。数据点使用直线进行连接，结果样条是一个多边形。

从代数的角度来看，每个*S**i* 都是一个如下

S\_{i}(x)=y\_{i}+{\frac {y\_{{i+1}}-y\_{i}}{x\_{{i+1}}-x\_{i}}}(x-x\_{i})
的线性函数。
样条在每个数据点都必须连续，即

S\_{i}(x\_{{i+1}})=S\_{{i+1}}(x\_{{i+1}})\qquad {\mbox{ , }}i=1,\ldots n-1
我们很容易得到

S\_{{i-1}}(x\_{i})=y\_{{i-1}}+{\frac {y\_{{i}}-y\_{{i-1}}}{x\_{{i}}-x\_{{i-1}}}}(x-x\_{{i-1}})=y\_{i}
S\_{{i}}(x\_{i})=y\_{i}+{\frac {y\_{{i+1}}-y\_{i}}{x\_{{i+1}}-x\_{i}}}(x-x\_{i})=y\_{i}
所以以上论述成立。

二次样条插值
------

二次样条插值可以构建为

S\_{i}(x)=y\_{i}+z\_{i}(x-x\_{i})+{\frac {z\_{{i+1}}-z\_{i}}{2(x\_{{i+1}}-x\_{i})}}(x-x\_{i})^{2}
通过选择z\_0，然后用递推关系就可以得到系数：

z\_{{i+1}}=-z\_{i}+2{\frac {y\_{{i+1}}-y\_{i}}{x\_{{i+1}}-x\_{i}}}

三次样条插值
------

对于n+1给定点的数据集{\displaystyle \{x\_{i}\}}，我们可以用n段三次多项式在数据点之间构建一个三次样条。如果

S(x)=\left\{{\begin{matrix}S\_{0}(x),\ x\in [x\_{0},x\_{1}]\\S\_{1}(x),\ x\in [x\_{1},x\_{2}]\\\cdots \\S\_{{n-1}}(x),\ x\in [x\_{{n-1}},x\_{n}]\end{matrix}}\right.
表示对函数f进行插值的样条函数，那么需要：

* 插值特性，{\displaystyle S(x\_{i})=f(x\_{i})}
* 样条相互连接，{\displaystyle S\_{i-1}(x\_{i})=S\_{i}(x\_{i}),i=1,\ldots ,n-1}
* 两次连续可导，{\displaystyle S'\_{i-1}(x\_{i})=S'\_{i}(x\_{i})} 以及 {\displaystyle S''\_{i-1}(x\_{i})=S''\_{i}(x\_{i}),i=1,\ldots ,n-1}.

由于每个三次多项式需要四个条件才能确定曲线形状，所以对于组成S的n个三次多项式来说，这就意味着需要{\displaystyle 4n}个条件才能确定这些多项式。但是，插值特性只给出了n+1个条件，内部数据点给出{\displaystyle n+1-2=n-1}个条件，总计是{\displaystyle 4n-2}个条件。我们还需要另外两个条件，根据不同的因素我们可以使用不同的条件。

其中一项选择条件可以得到给定u与v的*钳位*三次样条，

S'(x\_{0})=u\,\!
S'(x\_{k})=v\,\!
另外，我们可以设

S''(x\_{0})=S''(x\_{n})=0\,\!.
这样就得到*自然*三次样条。自然三次样条几乎等同于样条设备生成的曲线。

在这些所有的二次连续可导函数中，钳位与自然三次样条可以得到相对于待插值函数*f*的最小震荡。

如果选择另外一些条件，

S(x\_{0})=S(x\_{n})\,\!
S'(x\_{0})=S'(x\_{n})\,\!
S''(x\_{0})=S''(x\_{n})\,\!
可以得到*周期性*的三次样条。

如果选择，

S(x\_{0})=S(x\_{n})\,\!
S'(x\_{0})=S'(x\_{n})\,\!
S''(x\_{0})=f'(x\_{0}),\quad S''(x\_{n})=f'(x\_{n})\,\!
可以得到*complete*三次样条。

### 三次样条的最小性

三次样条有另外一个非常重要的解释，实际上它是在索伯列夫空间H^{2}([a;b])最小化泛函

J(f)=\int \_{a}^{b}|f''(x)|^{2}dx
的函数。

泛函J包含对于函数f(x)全部曲率\left|{\frac {f''(x)}{(1+f'(x)^{2})^{{{\frac {3}{2}}}}}}\right|的近似，样条是f(x)最小曲率的近似。

由于弹性条的总体能量与曲率成比例，所以样条是受到n个点约束的弹性条的最小能量形状。样条也是基于弹性条设计的工具。

### 使用自然三次样条的插值

它可以定义为

S\_{i}(x)={\frac {z\_{{i+1}}(x-x\_{i})^{3}+z\_{i}(x\_{{i+1}}-x)^{3}}{6h\_{i}}}+\left({\frac {y\_{{i+1}}}{h\_{i}}}-{\frac {h\_{i}}{6}}z\_{{i+1}}\right)(x-x\_{i})+\left({\frac {y\_{{i}}}{h\_{i}}}-{\frac {h\_{i}}{6}}z\_{i}\right)(x\_{{i+1}}-x)
以及

h\_{i}=x\_{{i+1}}-x\_{i}\,\!.
通过解下面的方程可以得到它的系数。

\left\{{\begin{matrix}z\_{0}=0\\h\_{{i-1}}z\_{{i-1}}+2(h\_{{i-1}}+h\_{i})z\_{i}+h\_{i}z\_{{i+1}}=6\left({\frac {y\_{{i+1}}-y\_{i}}{h\_{i}}}-{\frac {y\_{i}-y\_{{i-1}}}{h\_{{i-1}}}}\right)\\z\_{n}=0\end{matrix}}\right.

示例
--

### 线性样条插值

假设要为带有节点

(x\_{0},f(x\_{0}))=(x\_{0},y\_{0})=\left(-1,\ e^{{-1}}\right)\,\!
(x\_{1},f(x\_{1}))=(x\_{1},y\_{1})=\left(-{\frac {1}{2}},\ e^{{-{\frac {1}{4}}}}\right)\,\!
(x\_{2},f(x\_{2}))=(x\_{2},y\_{2})=\left(0,\ 1\right)\,\!
(x\_{3},f(x\_{3}))=(x\_{3},y\_{3})=\left({\frac {1}{2}},\ e^{{-{\frac {1}{4}}}}\right)\,\!
(x\_{4},f(x\_{4}))=(x\_{4},y\_{4})=\left(1,\ e^{{-1}}\right)\,\!
的函数

f(x)=e^{{-x^{2}}}
找一个线性样条。直接代入样条公式，我们得到如下样条：

S(x)=\left\{{\begin{matrix}e^{{-1}}+2(e^{{-{\frac {1}{4}}}}-e^{{-1}})(x+1)&x\in [-1,-{\frac {1}{2}}]\\e^{{-{\frac {1}{4}}}}+2(1-e^{{-{\frac {1}{4}}}})(x+{\frac {1}{2}})&x\in [-{\frac {1}{2}},0]\\1+2(e^{{-{\frac {1}{4}}}}-1)x&x\in [0,{\frac {1}{2}}]\\e^{{-{\frac {1}{4}}}}+2(e^{{-1}}-e^{{-{\frac {1}{4}}}})(x-{\frac {1}{2}})&x\in [{\frac {1}{2}},1]\\\end{matrix}}\right.
样条函数（蓝线）以及所近似的函数（红点）如下图所示：

### 二次样条插值

下图是一个*k*=4的样条函数（蓝线）与所近似的函数（红线）的例子：

参见
--

* 三次埃尔米特样条
* NURBS