- 📚 相关推荐文章
- 空间插值 推荐
- 拉格朗日插值公式 推荐
- 样条插值 推荐
- matlab编写拉格朗日插值代码函数 推荐
- 插值 推荐

插值
-
2023年3月20日发(作者:固定桥修复)几种常用的插值方法
数学系信息与计算科学1班李平
指导老师:唐振先
摘要:插值在诸如机械加工等工程技术和数据处理等科学研究中有许多直接的应用,在很多
领域都要用插值的办法找出表格和中间值,插值还是数值积分微分方程数值解等数值计算的
基础。本文归纳了几种常用的插值方法,并简单分析了其各自的优缺点。
关键词:任意阶多项式插值,分段多项式插值。
引言:所谓插值,通俗地说就是在若干以知的函数值之间插入一些未知函数值,而
插值函数的类型最简单的选取是代数多项式。用多项式建立插值函数的方法主要
用两种:一种是任意阶的插值多项式,它主要有三种基本的插值公式:单项式,拉
格朗日和牛顿插值;另一种是分段多项式插值,它有Hermite和spine插值和分段
线性插值。
一.任意阶多项式插值:
1.用单项式基本插值公式进行多项式插值:
多项式插值是求通过几个已知数据点的那个n-1阶多项式,即
P
n-1
(X)=A
1
+A
2
X+…A
n
Xn-1,它是一个单项式基本函数X0,X1…Xn-1的集合来定义多
项式,由已知n个点(X,Y)构成的集合,可以使多项式通过没数据点,并为n个未
知系数Ai写出n个方程,这n个方程组成的方程组的系数矩阵为Vandermonde矩
阵。
虽然这个过程直观易懂,但它都不是建立插值多项式最好的办法,因为
Vandermonde方程组有可能是病态的,这样会导致单项式系数不确定。另外,单项
式中的各项可能在大小上有很大的差异,这就导致了多项式计算中的舍入误差。
2.拉格朗日基本插值公式进行插值:
先构造一组插值函数L
i
(x)=011
011
()()()()
()()()()
iin
iiiiiin
xxxxxxxx
xxxxxxxx
,其中i=0,…
n.容易看出n次多项式L
i
(x)满足L
i
(x)=1,(i=j);L
i
(x)=0,(i≠j),其
中i=0,1…n,令L
i
(x)=
0
()
n
ii
i
ylx
这就是拉格朗日插值多项式。与单项式基本
函数插值多项式相比,拉格朗日插值有2个重要优点:首先,建立插值多项式不需
要求解方程组;其次,它的估计值受舍入误差要小得多。拉格朗日插值公式结构
紧凑,在理论分析中很方便,但是,当插值节点增加、减少或其位置变化时全部插值
函数均要随之变化,从而整个插值公式的结构也将发生变化,这在实际计算是非常
不利的。
3.使用牛顿均差插值公式进行多项式进行插值:
首先,定义均差,f在xi,xj上的一阶均差
()()
[,]ji
ij
ji
fxfx
fxx
xx
,其中(i≠j)。f在
xi
,x
j
,x
k
的二阶均差f[x
i
,x
j
,x
k
]=
[,][,]
ijjk
jk
fxxfxx
xx
,k阶均
f[x
i
…x
k
]=01
0
[][]
kik
k
fxxfxx
xx
。
由此得出牛顿均值插值多项式的公式为Pn(x)=f[x
0
]+f[x
0
-x
1
](x-x
0
)+…+f[x
0
,
x
n
](x-x
0
)…(x-x
n-1
)。实际计算中经常利用下表给出的均差表直接构造牛顿插值
公式
,,
x
k
F(x
i
)
一阶均差二阶均差三阶均差
…
…
x
0
x
1
x
2
x
3
…
F(x
0
)
F(x
1
)
F(x
2
)
F(x
3
)
…
F[x
0
,x
1
]
F[x
1
,x
2
]
F[x
2
,x
3
]
…
F[x
0
,x
1
,x
2
]
F[x
1
,x
2
,x
3
]
…
F[x
0
,x
1
,x
2
,x
3
]
…
凡是拉格朗日插值解决的问题牛顿插值多项式都可以解决,不仅如此,更重要的是
牛顿均值克服了拉格朗日插值多项式的缺点,当需要提高近似值的精确度而增加
结点时,它不必重新计算,只要在后面再计算一项均插即可,减少了计算量,不用计
算全部系数,节约了大量人力,物力,财力。
增加插值多项式的阶数并不一定能增加插值的精度,据定义,插值式,F(x)可以与
结点(xi,yi),i=1,…,n处的实际函数匹配,但却不能保证支点之间求F(x),还能
很好的逼近产生(xi,yi)数据的实际函数F(x)。例如,如果F(x)为一个已知的解析
函数,而且定义F(x)的节点集合中数据点的数目可以增加(多项式F(x)的阶数也
增加),但是,由于F(x)的起伏增加,那么插值式就可能在节点见振带,基于当实际函
数F(x)平滑时,这种多项式摆动也可能发生,这种振荡不是由多项式摆动引起的,而
是由多项式的项相加来求插值多项式时发生舍入误差造成的。有时多项式摆动可
通过谨慎选择基础函数的取样来成为,但如果数据是由不容易重复实验取得的,就
不能这么做了,这会司会用下面介绍分段插值法。
二、分段插值多项式
1、分段线性插值:
分段线性插值最简单的插值方案,只要将每个相邻的节点用直线接起来,如此形
成的一条新的折线就是分段线性插值函数,记作I
n
(x
j
)=y
i
而且I
n
(x)在每个区间[x
j
x
j+1
]上是线性函数(j=0,1…n-1)
I
n
(X)可以定义为I
n
(x
j
)=
0
()
n
ii
i
ylx
其中l
0(x)
=1
01
xx
xx
,[0,1]xxx
其他,l
0
(x)=0
l
j
(x)=1
1
j
jj
xx
xx
,
1
[,]
jj
xxx
;
n
l()x=1
1
j
jj
xx
xx
1
,[,];
jj
xxx
其他,l
j
(x)=0
l
n
(x)=1
1
n
nn
xx
xx
1
,[,];
nn
xxx
其他,l
n
(x)=0
I
n
(x
j
)具有很好的收敛性,即对于x∈[a,b]有:当n趋向于无穷大时,I
n
(x)=g(x)成
立。
用I
n
(x)计算x点的插值时,只用到x左右的两个节点,计算量与节点个数n无关,
但n越大分段越多,插值误差就越小,但是,该方法折线在节点处显然不光滑,即I
n
(X)
在节点处导数不存在着影响它在需要光滑插值曲线的(如机械插值等领域中的应
用)。
2分段三次Hermite插值
为清楚起见,先用三次Hermite插值的构造方法加以解释,三次Hermite插值的做
法是,在[x
k
x
k+1
]上寻找一个次数不超过3的多项式H
3
(x)它满足插值条件
H
3
(x
k
)=f(x
k
),H
3
(x
k+1
)=f(x
k+1
)
'
3
()
k
Hx=m
k
,'
31
()
k
Hx
=m
k+1
相应的插值基函数为
2
1
11
2
1
1
11
()12,
()12,
kk
k
kkkk
kk
k
kkkk
xxxx
x
xxxx
xxxx
x
xxxx
2
1
1
2
11
1
()(),
()().
k
kk
kk
k
kk
kk
xx
xxx
xx
xx
xxx
xx
于是有H
3
(x)=α
k
(x)f(x
k
)+α
k+1
(x)f(x
k+1
)+m
k
β
k
(x)+m
k+1
β
k+1
(x)。
如果函数Ψ满足条件:
(1)Ψ∈C1[a,b]
(2)满足插值条件:Ψ(x
k
)=f(x
k
),''()()
kk
xfx,k=0,1,2,…,n.
(3)在每个小区间[x
k-1
,x
k
],k=1,2,…,n上Ψ是三次多项式。
则称Ψ为f的分段三次Hermite插值多项式。
根据分段线性插值和三次Hermite插值公式可得到Ψ的表达式
Ψ(x)='
0
[()()()()]
n
kkkk
k
fxxfxx
其中
2
0
1
01
0
1001
01
12,[,]
()
0,[,]
xx
xx
xxx
x
xxxx
xxx
2
1
1
11
2
1
1
11
11
12,[,]
()12,[,]
0,[,]
kk
kk
kkkk
kk
kkk
kkkk
kk
xxxx
xxx
xxxx
xxxx
xxxx
xxxx
xxx
2
1
1
11
1
12,[,]
()
0,[,]
kk
nn
n
kkkk
nn
xxxx
xxx
x
xxxx
xxx
2
1
001
0
01
01
(),[,]
()
0,[,]
xx
xxxxx
x
xx
xxx
2
1
1
1
2
1
1
1
11
(),[,]
()(),[,]
0,[,]
k
kkk
kk
k
kkkk
kk
kk
xx
xxxxx
xx
xx
xxxxxx
xx
xxx
2
1
1
1
1
(),[,]
()
0,[,]
n
nnn
n
nn
nn
xx
xxxxx
x
xx
xxx
α
k
,β
k
,k=0,1,2,…,n,
称为以节点x
0
,x
1
,…,x
n
的分段三次Hermite插值
基函数,对于给定n个插值点x
1
<x
2
<…<x
n
和其相应函数值f(x
k
)和一阶函数值
f'(x
k
),k=0,1,2,…,n.
显然,分段三次Hermite插值可以产生平滑变化的插值式,但它有一个明显的缺点,
就是在每个界点处的函数斜率必须已知,而从实验中获得的数据,这个斜率就不存
在。下面要介绍的三次样条插值可以解决这个问题,同时能得到插值式所期望的
光滑度。
3、三次样条插值
1.样条函数
在[a,b]上取n+1个插值结点a=x
0
1 <… n =b已知函数f(x)在这n+1个点的函数 值为y k =f(x k )则在[a,b]上函数y=f(x)的m次样条插值函数S(x)满足: (1)S(x)在(a,b)上直到m-1阶导数连续; (2)S(x k )=y k ,(k=01…n); (3)在区间[x k ,x k+1 ](k=01…n-1)上,S(x)是m次多项式。 2.三次样条函数 在[a,b]上函数y=f(x)的三次样条插值函数S(x)满足: (1)在(a,b)上0、1、2阶导数连续,即: s'(x k -0)=s'(x k +0),s″(x k -0)=s″(x k +0)(k=01…n-1) (2)S(x k )=y k (k=0,1,…n); (3)在区间[x k x k+1 ](k=0,1…n-1)上S(x)是三次多项式。 3.三次样条函数的计算 由二阶导数连续,设s″(x k )=m k ,(k=0,1,…,n),m k 是未知待定的数。因S(x)是分段 三次多项式,则在每个区间[x k x k+1 ]内,S″(x)是分段一次多项式,记h k =x k+1 -x k 则: s″(x k )=11 11 11 kkkkk kkkk kkkkk xxxxxxxx mmmm xxkxxhh 将上式在区间[x k x k+1 ]上积分两次,并且由S(x k )=y k S(x k+1 )=y k+1 ,来确定两个积分 常数。当x∈[x k x k+1 ]时, 3322 ' 11 111 ()() ()()() 6666 kkkkkk kkkkkk kkkk xxxxhxxhxx sxmmymym hhhh , 利用S(x)一阶导数连续的性质,对上式求导,得: 22 ' 1 111 ()() 1 ()()() 226 kkk kkkkkk kkk xxxxh sxmmmmyy hhh 在上式中,令x=x k 得: ' 1 1 (0) 63 kkkk kkk k hhyy sxmm h 将上式中的k换成k-1,得:s'(x)在[x k-1 ,x k ]上的表达式,将x=x k 代入, ' 1 1 (0) 63 kkkk kkk k hhyy sxmm h , 而s'(x k +0)=s'(x k -0)联立上述两式,得到关于m的方程: 1111 11 1 636 kkkkkkkk kkk kk hhhhyyyy mmm hh , 两边乘以 1 6 kk hh 得: 111 11 1111 6 2()kkkkkk kkk kkkkkkkk hhyyyy mmm hhhhhhhh , 上式中,等式左边含未知量m k-1 ,m k ,m k+1 等式右边y k-1 ,y k ,y k+1 是已知的,令 1 1 k k kk h hh , 1 1k kk kk h hh , 11 11 6 ()kkkk k kkkk yyyy c hhhh 11 11 1 [,][,] 66[,,]kkkk kkk kk fxxfxx fxxx hh 则得:λ k m k-1 +2m k +μ k m k+1 =C k (k=12…n-1)。 三次样条插值的整体光滑性有提高,应用广泛,但其误差估计较困难,而且它 的求解代价很大,起精确度受端点条件影响很大。 总结:插值是数值分析领域的一个主要部分,选择插值策略的第一步是了解应用的 需要:你要在表格中查些什么?是否需要反复计算近似值?在条件有限的情况下, 构造固定的阶数的插值多项式可能会是一种更简单的方法有解决方案;当要反复 计算逼近值时,推荐用牛顿多项式插值形式。 对表格数据的常规插值,推荐使用分段线性插值;如果插值的总体平滑很重要,应 该考虑三次样条插值或三次Hermite插值;同时当表格数据构成函数的导数不存 在时,推荐使用三次样条插值。 参考文 1.(美)GeraldRecktenwald,数值方法和MATLAB实现与应用 2.关冶,陆金甫数值分析基础[M]高等教育出版社1995版 3.杨顶辉,谢金星大学数学实验[M]清华大学出版社2005版