三次样条曲线

单一多项式插值会有两个问题:

  1. 随着多项式的阶数越来越高,计算量也越来越大。
  2. 随着多项式的阶数越来越高,插值精度并不会越来越高,恰恰相反,函数曲线会出现剧烈的振荡,即龙格现象。

既能穿过所有已知点又能避免龙格现象(剧烈的震荡),就要用分段函数插值。就是把所有的已知数据分割成若干段,每段都对应一个插值函数,最终得到一个插值函数序列。

为了保证分段函数之间彼此衔接,每个分段函数都采用高次函数形式来构造(三次样条差值 就是用x的三次方形式构造)这就保证了多个函数之间的衔接光滑。不能用过高阶的函数,否则抖动太剧烈。

三次样条插值就是把已知数据分割成若干段,每段构造一个三次函数,并且保证分段函数的衔接处具有0阶连续,一阶导数连续,二阶导数连续的性质(也就是光滑衔接)。

三次样条曲线不算基于优化的算法,没有目标函数,不过有约束,而且边界约束有多种情况。

一阶连续意味着曲线y=S(x)没有急转弯,没有特别剧烈的跳变。二阶连续意味着每个点的曲率半径有定义。

给定n+1个数据点,共有n个区间,推导如下


自由边界:首尾两端没有受到任何让它们弯曲的力。让端点的斜率自由的在某一位置保持平衡,使得曲线的摇摆最小。
固定边界:首尾两端点的微分值是被指定的。用外力使柔软而有弹性的曲线经过数据点,并在端点处使其具有固定斜率。
非节点边界:指定样条曲线的三次微分匹配

文章QP方法解基于五次多项式形式的cost function minimization问题不是分段的多项式函数,问题相当简单。

参考:
原理
如何推导