MATLAB程序:用三次样条插值法进行数值分析
目录
- 前言
- 一、三次样条插值
- 1. 三次样条函数定义
- 2. 三次样条插值多项式
- 3. 三次样条插值求法
- 3.1 第一种类型
- 3.2 第二种类型
- 3.3 第三种类型
- 二、三次样条插值公式matlab程序
- 1. 三次样条插值公式(第二种类型)
- 2 例题
- 三、 总结
- 四、 补充
- 五、插值法专栏
前言
必看
回顾前篇例题中的另一问题使用三次样条插值函数来求解插值点的函数值,那么本篇文章将继续承接上篇内容,主要讲述三次样条插值函数的原理及如何利用matlab来实现编程。如果没有看过前一篇的读者可以点击此链接: 数值分析(一) 牛顿插值法及matlab代码 回顾一下
一、三次样条插值
1. 三次样条函数定义
定义:函数定义在区间
[
a
,
b
]
\left[a,b\right]
[a,b]上,给定n+1个节点和一组与之对应的函数值,且函数满足:
1. 每个节点上满足
S
(
x
i
)
=
f
(
x
i
)
(
i
=
0
,
1
,
⋯
,
n
−
1
)
S\left(x_i\right)=f\left(x_i\right)\;\;\;\;\left(i=0,1,\cdots,n-1\right)
S(xi)=f(xi)(i=0,1,⋯,n−1)
2. 在
[
a
,
b
]
\left[a,b\right]
[a,b]上有连续的二阶导数
3. 在每个小区间
[
x
i
,
x
i
+
1
]
(
i
=
0
,
1
,
⋯
,
n
−
1
)
\left[x_i,x_{i+1}\right]\left(i=0,1,\cdots,n-1\right)
[xi,xi+1](i=0,1,⋯,n−1)上是一个三次多项式
则称
S
(
x
i
)
S\left(x_i\right)
S(xi)为 三次样条插值函数
2. 三次样条插值多项式
三次样条插值函数
S
(
x
)
S\left(x\right)
S(x)是一个分段三次多项式,要求出
S
(
x
)
S\left(x\right)
S(x),在每个小区间
[
x
i
,
x
i
+
1
]
\left[x_i,x_{i+1}\right]
[xi,xi+1]上要确定4个待定参数,若用
S
i
(
x
)
S_i\left(x\right)
Si(x)表示它在第i个子区间
[
x
i
,
x
i
+
1
]
\left[x_i,x_{i+1}\right]
[xi,xi+1]上的表达式,则
S
i
(
x
)
=
a
i
0
+
a
i
1
x
+
a
i
2
x
2
+
a
i
3
x
3
(
i
=
0
,
1
,
⋯
,
n
−
1
)
S_i\left(x\right)=a_{i0}\;+a_{i1}x+a_{i2}x^2\;+a_{i3}x^3\;\;\;\left(i=0,1,\cdots,n-1\right)
Si(x)=ai0+ai1x+ai2x2+ai3x3(i=0,1,⋯,n−1)注意
三次多项式
S
(
x
)
S\left(x\right)
S(x)及其一阶导数
S
′
(
x
)
S'\left(x\right)
S′(x)和二阶导
S
′
′
(
x
)
S''\left(x\right)
S′′(x)在整个插值区间上连续,在上述条件中再加入边界条件,即可求出各系数,常用的边界条件有三种类型。
3. 三次样条插值求法
在子区间
[
x
i
,
x
i
+
1
]
\left[x_i,x_{i+1}\right]
[xi,xi+1]上
S
(
x
)
=
S
i
(
x
)
S\left(x\right)=S_i\left(x\right)
S(x)=Si(x)是三次多项式,所以 在此小区间上
S
′
′
(
x
)
S''\left(x\right)
S′′(x)是x的线性函数,且因为
S
′
′
(
x
i
−
1
)
=
M
i
−
1
,
S
′
′
(
x
i
)
=
M
i
x
∈
[
x
i
−
1
,
x
i
]
S''\left(x_{i-1}\right)=M_{i-1},S''\left(x_i\right)=M_i\;\;\;\;x\in\left[x_{i-1},x_i\right]
S′′(xi−1)=Mi−1,S′′(xi)=Mix∈[xi−1,xi],用线性插值,可知其表达式为
S
i
′
′
(
x
)
=
M
i
−
1
x
−
x
i
x
i
−
1
−
x
i
+
M
i
x
−
x
i
−
1
x
i
−
x
i
−
1
S_i''\left(x\right)=M_{i-1}\frac{x-x_i}{x_{i-1}-x_i}+M_i\frac{x-x_{i-1}}{x_i-x_{i-1}}
Si′′(x)=Mi−1xi−1−xix−xi+Mixi−xi−1x−xi−1 记
h
i
=
x
i
−
x
i
−
1
h_i=x_i-x_{i-1}
hi=xi−xi−1,根据上式则可得到
S
i
′
′
(
x
)
=
M
i
−
1
x
i
−
x
h
i
+
M
i
x
−
x
i
−
1
h
i
S_i''\left(x\right)=M_{i-1}\frac{x_i-x}{h_i}+M_i\frac{x-x_{i-1}}{h_i}
Si′′(x)=Mi−
上一篇:
基于MATLAB的B样条插值拟合算法与分段多项式(附完整代码)
下一篇:
用C++实现的三次样条插值