跳转至

三次样条插值

定义

\([a,b]\) 内给出一组互异节点 \(a\leq x_0< x_1<\dots< x_n\leq b\), 若函数 \(S(x)\) 满足以下条件,则为 \([a,b]\) 内的三次样条插值函数:

  1. \(S(x)\)\([a,b]\) 内二阶导连续
  2. \(S(x)\) 在每个区间 \([x_i,x_{i+1}]\) 内是三次多项式
  3. \(S(x_i)=f(x_i), \qquad i=0,1,\dots,n\)

由此得出 \(4n-2\) 个方程:

\[ \begin{cases} S(x_i)=f(x_i), &i=0,\dots,n\\ S(x_i-0)=S(x_i+0), &i=1,\dots,n-1\\ S'(x_i-0)=S'(x_i+0), &i=1,\dots,n-1\\ S^{''}(x_i-0)=S^{''}(x_i+0), &i=1,\dots,n-1 \end{cases} \]

还需补上2个方程才能求解。

  • 第一边界条件\(S'(x_0)=f'_0\)\(S'(x_n)=f'_n\)
  • 第二边界条件\(S^{''}(x_0)=f^{''}_0\)\(S^{''}(x_n)=f^{''}_n\)。特别的,当两者均为 0 时称为自然边界条件
  • 第三边界条件:当f(x)为周期函数,此时\(S(x_0)=S(x_n),S'(x_0+0)=S'(x_n-0),S^{''}(x_0+0)=S^{''}(x_n-0)\),此时称为周期样条函数

求解方法

  1. \(\pmb{h_i=x_{i+1}-x_i}, \qquad i=0,\dots,n-1\)
  2. \(\pmb{\lambda_i=\frac{h_i}{h_i+h_{i-1}}}, \qquad i=1,\dots,n-1\)
  3. \(\pmb{\mu_i=\frac{h_{i-1}}{h_i+h_{i-1}}}, \qquad i=1,\dots,n-1\)
  4. \(\pmb{d_i=3(\mu_i\frac{y_{i+1}-y_i}{h_i}+\lambda_i\frac{y_i-y_{i-1}}{h_{i-1}})}, \qquad i=1,\dots,n-1\)
  5. 若为第一边界条件,则解矩阵

若为第二边界条件,则先求

$$ d_0=3\frac{y_1-y_0}{h_0}-\frac{h_0}{2}f{''}0~,~d_n=3\frac{y_n-yf}}{h_{n-1}}-\frac{h_{n-1}}{2_n $$

再解矩阵

  1. 经过上一步后,可以得到所有的\(m_i=f'(x_i)\), 然后根据由埃尔米特插值得到的公式

$$ \begin{aligned} S(x)=&\frac{h_i+2(x-x_i)2}{h_i3}y_i\&+\frac{h_i-2(x-x_{i+1})2}{h_i3}y_{i+1}\ &+\frac{(x-x_i)(x-x_{i+1})2}{h_i2}m_i\&+\frac{(x-x_{i+1})(x-x_{i})2}{h_i2}m_{i+1} \end{aligned} $$

得到每个小区间\([x_i,x_{i+1}]\)中的插值函数.

节点较少时可以直接使用待定系数法求解

例题6【课件原题】: