计算方法:三次样条插值原理

无论是牛顿插值还是拉格朗日插值,都只能保证在节点处的函数值没有误差。hermite插值更加复杂,可以保证一阶导数也连续,目前常用的是三次样条插值
计算方法:三次样条插值原理

一、三次样条插值概念

  • 不超过3次
  • 节点处无误差
  • 一阶导数和二阶导数节点处无误差

计算方法:三次样条插值原理
如果函数值和函数在点的倒数值是已知的,也就是我们有一下的已知条件
计算方法:三次样条插值原理
这不就是hermite插值的已知条件吗,我们可以利用Hermite插值先进行一次插值:
计算方法:三次样条插值原理
但是此时其实我们是不知道mim_i的值的,所以我们需要求出他,而现在我们只剩下了一个条件,端点处二阶导数连续:令hih_i表示ii+1i-i+1区间的长度,将s(x)s(x)转化成下面的形式
计算方法:三次样条插值原理
然后我们求一个二阶导数:
计算方法:三次样条插值原理
因为我们的二阶导数需要在端点处连续,也就是说在[xi,xi1][x_i,x_{i-1}]区间的s(xi)s''(x_i)要等于区间[xi1,xi][x_{i-1},x_i]上二阶导数的对xix_i的值,所以我们将上式的下标ii换成i1i-1
计算方法:三次样条插值原理
此时我们根据区间端点处二阶导数连续的定义,得到下面的等式:
变化不复杂,就是简单的移相合并而已

计算方法:三次样条插值原理
计算方法:三次样条插值原理
画圈的部分是我们必须化为1的部分,只有这样我们才能吧mim_i单独拿出来,进行一系列的化简:
计算方法:三次样条插值原理
这不就是一个关于mim_i的方程组????,把它写成下面的形式就更直观了:
计算方法:三次样条插值原理
共有???? + 1个未知数,???? − 1个方程,好像不能解,所以我们仍然需要其他的计算条件,不妨考虑一下边界(x0,xnx_0,x_n)的情况:(注意mim_i的定义,他表示的是一阶导数值),以下是可能给出的两种边界条件,只要有任意一种边界条件给出,我们就可以多出两个等式,就可以解了。tips:注意我们上面有两个二阶导数的公式,一个的参数是xx^-,另一个是x+x^+,对x0x_0而言我们要带入s(x0+)s''(x_0^+),只能在x0x_0的右端点计算二阶导数。相反对于xnx_n,我们只能带入s(xn)s''(x_n^-)也就是在左端点处计算二阶倒数。(xnx_n再往右就没有定义了)
计算方法:三次样条插值原理
具体带入的过程:
计算方法:三次样条插值原理
然后我们就能得到一个可解的方程组“
计算方法:三次样条插值原理
然后我们用 追赶法求解三对角方程组
计算方法:三次样条插值原理
计算方法:三次样条插值原理

算法总结

计算方法:三次样条插值原理
计算方法:三次样条插值原理
计算方法:三次样条插值原理