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

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

一、三次样条插值概念

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

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

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

算法总结

计算方法:三次样条插值原理_第17张图片
计算方法:三次样条插值原理_第18张图片
计算方法:三次样条插值原理_第19张图片

你可能感兴趣的:(算法)