赞
踩
主要参考文献:三次样条(cubic spline)插值
在早期工程师制图时,把富有弹性的细长木条,即样条用压铁固定在样点上,在其他地方让它自由弯曲,然后沿木条画下曲线,作为样条曲线。
分段三次样条插值:分段就是把区间[a,b]分成n个区间:
共有n+1个点,其中两个端点为:
三次样条就是说每个小区间的曲线是一个三次方程,其中三次样条方程满足以下条件:
1、在每个分段小区间[xi,xi+1]上,S(x)=Si(x)都是一个三次方程,其中i=0,1…,n-1;
2、满足插值条件,即:
3、曲线光滑,S(x)及其一阶导数、二阶导数均连续。
三次方程可构造成如下形式:
称这个方程为三次样条函数Si(x)。其中,每个小区间上的Si(x)有4个未知数:
而有n个小区间,则有4n个未知数,要解出这些未知数,则需要4n个方程来求解。下面的【1 求解】一节是求解思路。
现在的目标是:【通过找出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):强制第一个插值点的三阶导数值等于第二个点的三阶导数值,最后第一个点的三阶导数值等于倒数第二个点的三阶导数值。即:
下面的【2 推导】一节是具体推导过程。
Si(x)及其一阶导数、二阶导数分别为:
1、由:
可得:
2、步长设为:
由Si(xi+1)=yi+1可得:
3、由S’i(xi+1)=S’i+1(xi+1)可得:
有:
4、由S"i(xi+1)=S"i+1(xi+1)可得:
设:
可得:
5、由上面1-4的ai、ci、di的公式,即:
代入到:
可得:
6、于是将ai、bi、ci、di的公式代入到:
可得:
下面通过三种不同的边界条件分别构造三个以m为未知数的线性方程组。
在自然边界条件时,端点二阶导数为0,即:
而:
则有m0=0,mn=0,用矩阵形式方程表示为:
上图中,等式左面的系数矩阵为严格对角占优矩阵:每一行中对角元素的值的模>其余元素值的模之和。故线性方程组有唯一解。
在固定边界条件时,有:
而:
则有:
1、如下:
化简得以下公式(记为公式1):
2、如下:
化简得以下公式(记为公式2):
将上述公式1与公式2代入,得到新的方程组形式与【2.1 自然边界】的矩阵方程类似,只不过左侧的系数矩阵需要修改为:
同时右侧矩阵第一行与最后一行的两个0分别改为:
与
在非扭结边界条件时,有:
由于:
则有:
化简得以下公式(记为公式3):
将上述公式3代入,得到新的方程组形式与【2.1 自然边界】的矩阵方程类似,只不过左侧的系数矩阵需要修改为:
首先假定有n+1个数据节点:
1、计算步长:
2、将数据节点和指定的首位端点条件代入矩阵方程。
3、解矩阵方程,求得二次微分值mi。该矩阵为三对角矩阵,常见解法为高斯消元法,可以对系数矩阵进行LU分解,分解为单位下三角矩阵和上三角矩阵,即:
4、计算样条曲线的系数:
5、在每个子区间:
中,创建方程:
结束
END
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。