三次样条插值
2019-05-24 本文已影响0人
carry_xz
三次样条插值
设S(x)满足样本点要求,则只需在每个子区间[]上确定1个三次多项式,假设为:
假设有n个点,需要n-1条线描述,每条线四个未知数, 则未知数个数为4(n-1)。显然中间(n-2)个点具有4个约束条件:
两端端点存在约束S() = f(),则约束方程有4(n-2)+2=4(n-1)-2,所以,总的未知数个数比方程个数多两个。所以需要额外的两个约束,于是就有了三种边界条件的插值算法。
- 第 1 类边界条件:给定端点处的一阶导数值
- 第 2 类边界条件:给定端点处的二阶导数值
- 第 3 类边界条件是周期性条件,如果y=f(x)是以[xj,xj+1]为周期的函数,于是S(x) 在端点处满足条件
推导过程
S(x) 在 [](j=1,2,⋯,n-1)上是三次多项式,于是S"(x)在[]上是一次多项式,假设S"(x) 在[](j=1,2,⋯,n-1)两端点上的值已知,设
其中
对进行两次积分可得:
以上是在上求得的同理可求,将同时代入两个函数联立方程,可以求得
将:
求导后得:
同理分别写出,联立等式,简化后可得:
在matlab实现时注意:n个点,n-1条线,以上矩阵是由相邻的两条线的微分方程联立而来(一阶连续),因此方程总个数减少了1,矩阵中有n-2个方程。 另外,用matlab实现时需要注意,matlab中下标从1开始,其他语言下标可能从0开始。