查看原文
其他

【强基固本】三次样条(cubic spline)插值

“强基固本,行稳致远”,科学研究离不开理论基础,人工智能学科更是需要数学、物理、神经科学等基础学科提供有力支撑,为了紧扣时代脉搏,我们推出“强基固本”专栏,讲解AI领域的基础知识,为你的科研学习提供助力,夯实理论基础,提升原始创新能力,敬请关注。

来源:知乎—阿贵
地址:https://zhuanlan.zhihu.com/p/62860859
当已知某些点而不知道具体方程时候,最经常遇到的场景就是做实验,采集到数据的时候,我们通常有两种做法:拟合或者插值。拟合不要求方程通过所有的已知点,讲究神似,就是整体趋势一致。插值则是形似,每个已知点都必会穿过,但是高阶会出现龙格库塔现象,所以一般采用分段插值。今天我们就来说说这个分段三次样条插值。
顾名思义,分段就是把区间[a,b]分成n个区间  ,共有n+1个点,其中两个端点  。三次样条就是说每个小区间的曲线是一个三次方程,三次样条方程满足以下条件:
1,在每个分段小区间  上, 都是一个三次方程
2,满足插值条件,即 
3, 曲线光滑,即  连续
则这个三次方程可以构造成如下形式:
 这种形式,我们称这个方程为三次样条函数  。
从  可以看出每个小区间有四个未知数  ,有n个小区间,则有4n个未知数,要解出这些未知数,则我们需要4n个方程来求解。

01

求解
我们要找出4n个方程来求解4n个未知数
首先,由于所有点必须满足插值条件,  ,除了两个端点,所有n-1个内部点的每个点都满足  前后两个分段三次方程,则有2(n-1)个方程,再加上两个端点分别满足第一个和最后一个三次方程,则总共有2n个方程;
其次,n-1个内部点的一阶导数应该是连续的,即在第 i 区间的末点和第 i+1 区间的起点是同一个点,它们的一阶导数应该也相等,即  则有n-1个方程
另外,内部点的二阶导数也要连续,即  ,也有n-1个方程
现在总共有4n-2个方程了,还差两个方程就可以解出所有未知数了,这两个方程我们通过边界条件得到。
有三种边界条件:自然边界,固定边界,非节点边界
1,自然边界 ( Natural Spline ):指定端点二阶导数为0,
2, 固定边界 ( Clamped Spline ): 指定端点一阶导数,这里分别定为A和B。即 
3, 非扭结边界( Not-A-Knot Spline ): 强制第一个插值点的三阶导数值等于第二个点的三阶导数值,最后第一个点的三阶导数值等于倒数第二个点的三阶导数值. 即 

02

具体推导

1. 由 可得 
2. 用  表示步长,由  推出 
3. 由  推出

可得
4. 由  推出 
设  则  改写为 
可得

5. 现在  都可以表示成二阶导的关系式,将其代入到  可得

6. 将  代入  可得

这样我们可以构造一个以m为未知数的线性方程组。

1)在自然边界条件时,

可以看出,左侧的系数矩阵为严格对角占优矩阵。即:每一行中对角元素的值的模 > 其余元素值的模之和。故线性方程组有唯一解,且雅克比迭代法、高斯-赛德尔迭代法和0<ω≤1的超松弛迭代法均收敛。

2)在夹持边界条件时,

将上述两个公式带入方程组,新的方程组左侧为

3)在非扭结边界条件时,

由于 ,并且 


新的方程组系数矩阵可写为:

下图可以看出不同的端点边界对样条曲线的影响:


03

算法总结
假定有n+1个数据节点

1. 计算步长 
2. 将数据节点和指定的首位端点条件带入矩阵方程
3. 解矩阵方程,求得二次微分值  。该矩阵为三对角矩阵,常见解法为高斯消元法,可以对系数矩阵进行LU分解,分解为单位下三角矩阵和上三角矩阵。即 
4. 计算样条曲线的系数:

5. 在每个子区间  中,创建方程

参考:
https://www.cnblogs.com/flysun027/p/10371726.html
https://www.cnblogs.com/xpvincent/archive/2013/01/26/2878092.html


本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“强基固本”历史文章


更多强基固本专栏文章,

请点击文章底部“阅读原文”查看



分享、点赞、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存