三次样条插值
定义
在 \([a,b]\) 内给出一组互异节点 \(a\leq x_0< x_1<\dots< x_n\leq b\), 若函数 \(S(x)\) 满足以下条件,则为 \([a,b]\) 内的三次样条插值函数:
- \(S(x)\) 在 \([a,b]\) 内二阶导连续
- \(S(x)\) 在每个区间 \([x_i,x_{i+1}]\) 内是三次多项式
- \(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)\),此时称为周期样条函数。
求解方法
- 求 \(\pmb{h_i=x_{i+1}-x_i}, \qquad i=0,\dots,n-1\)
- 求 \(\pmb{\lambda_i=\frac{h_i}{h_i+h_{i-1}}}, \qquad i=1,\dots,n-1\)
- 求 \(\pmb{\mu_i=\frac{h_{i-1}}{h_i+h_{i-1}}}, \qquad i=1,\dots,n-1\)
- 求 \(\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\)
- 若为第一边界条件,则解矩阵

若为第二边界条件,则先求
$$ 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 $$
再解矩阵

- 经过上一步后,可以得到所有的\(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【课件原题】:
