当前位置:文档之家› 几种常用的插值方法

几种常用的插值方法

几种常用的插值方法
几种常用的插值方法

数学系 信息与计算科学1班 李平

指导老师:唐振先

摘要:插值在诸如机械加工等工程技术和数据处理等科学研究中有许多直接的应用,在很多领域都要用插值的办法找出表格和中间值,插值还是数值积分微分方程数值解等数值计算的基础。本文归纳了几种常用的插值方法,并简单分析了其各自的优缺点。 关键词:任意阶多项式插值,分段多项式插值。

引言:所谓插值,通俗地说就是在若干以知的函数值之间插入一些未知函数值,而插值函数的类型最简单的选取是代数多项式。用多项式建立插值函数的方法主要用两种:一种是任意阶的插值多项式,它主要有三种基本的插值公式:单项式,拉格朗日和牛顿插值;另一种是分段多项式插值,它有Hermite 和spine 插值和分段线性插值。

一.任意阶多项式插值:

1.用单项式基本插值公式进行多项式插值:

多项式插值是求通过几个已知数据点的那个n-1阶多项式,即P n-1(X)=A 1+A 2X+…A n X n-1,它是一个单项式基本函数X 0,X 1…X n-1的集合来定义多项式,由已知n 个点(X,Y )构成的集合,可以使多项式通过没数据点,并为n 个未知系数Ai 写出n 个方程,这n 个方程组成的方程组的系数矩阵为Vandermonde 矩阵。

虽然这个过程直观易懂,但它都不是建立插值多项式最好的办法,因为Vandermonde 方程组有可能是病态的,这样会导致单项式系数不确定。另外,单项式中的各项可能在大小上有很大的差异,这就导致了多项式计算中的舍入误差。 2.拉格朗日基本插值公式进行插值: 先构造一组插值函数L i (x )

=011011()()()()

()()()()

i i n i i i i i i n x x x x x x x x x x x x x x x x -+-+--------,其中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

i i i y l x =∑这就是拉格朗日插值多项式。与单项式基本

函数插值多项式相比,拉格朗日插值有2个重要优点:首先,建立插值多项式不需要求解方程组;其次,它的估计值受舍入误差要小得多。拉格朗日插值公式结构

紧凑,在理论分析中很方便,但是,当插值节点增加、减少或其位置变化时全部插值函数均要随之变化,从而整个插值公式的结构也将发生变化,这在实际计算是非常不利的。

3.使用牛顿均差插值公式进行多项式进行插值:

首先,定义均差,f在xi,xj上的一阶均差

()()

[,]j i

i j

j i

f x f x

f x x

x x

-

=

-

,其中(i≠j)。

f在x

i ,x

j

,x

k

的二阶均差f[x

i

,x

j

,x

k

]=

[,][,]

i j j k

j k

f x x f x x

x x

-

-

,k阶均

f[x

i (x)

k

]=01

[][]

k i k

k

f x x f x x

x x

-

-

-

由此得出牛顿均值插值多项式的公式为Pn(x)=f[x

0]+f[x

-x

1

](x-x

)+…+f[x

x n ](x-x

)…(x-x

n-1

)。实际计算中经常利用下表给出的均差表直接构造牛顿插

值公式

,,

凡是拉格朗日插值解决的问题牛顿插值多项式都可以解决,不仅如此,更重要的是牛顿均值克服了拉格朗日插值多项式的缺点,当需要提高近似值的精确度而增加结点时,它不必重新计算,只要在后面再计算一项均插即可,减少了计算量,不用计算全部系数,节约了大量人力,物力,财力。

增加插值多项式的阶数并不一定能增加插值的精度,据定义,插值式,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

i i i y l x =∑其中l 0(x)=

1

01

x x x x --,[0,1]x x x ∈

其他,l 0(x)=0 l j (x)=

11

j j j x x x x ----,1[,]j j x x x -∈;n l ()x =

11

j j j x x x x ++--1,[,];j j x x x +∈其他,l j (x)=0

l n (x)=

1

1

n n n x x x x ----1,[,];n n x x x -∈其他,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 H x =m k , '31()k H x +=m k+1

相应的插值基函数为

2

1112

11

11()12,

()12,k k k k k k k k k k k k k k x x x x x x x x x x x x x x x x x x αα+++++++?????--?=+ ???--??

????????

?--=+ ????--?????

2

112

1

11()(),()().k k k k k k k k k k x x x x x x x x x x x x x x ββ+++++???-?=- ?-???

????

-=- ??-???

于是有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) Ψ∈C 1[a,b]

(2) 满足插值条件:Ψ(x k )=f(x k ), ''()()k k x f x ?=,k=0,1,2,…,n. (3) 在每个小区间[x k-1, x k ],k=1,2, …,n 上Ψ是三次多项式。 则称Ψ为f 的分段三次Hermite 插值多项式。

根据分段线性插值和三次Hermite 插值公式可得到Ψ的表达式 Ψ(x)= '0[()()()()]n

k k k k k f x x f x x αβ=+∑

其中

2

0101010010112,[,]()0,[,]x x x x x x x x x x x x x x x α?????--?+∈ ???=--??????

?? 2

11112111111

12,[,]

()12,[,]0,[,]

k k k k k k k k k k k k k k k k k k k x x x x x x x x x x x x x x x x x x x x x x x x x x α----++++-+?????--?+∈ ???--??????????--?

=+∈? ???--?

?????????

2

1111112,[,]()0,[,]k k n n n k k k k n n x x x x x x x x x x x x x x x α-----?????--?+∈ ???=--??

????

??

2

100100101(),[,]()0,[,]x x x x x x x x x x x x x β???-?-∈ ?=-???

?

??

2

1112

11111

(),[,]()(),[,]

0,[,]

k k k k k k k k k k k k k k k x x x x x x x x x x x x x x x x x x x x x x β---+++-+???-?-∈ ?-??????-?=-∈? ?-???

?????

2

1111(),[,]()0,[,]

n n n n n n n n n x x x x x x x x x x x x x β----???-?-∈ ?=-???

?

??

α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

(3)在区间[x k ,x k+1](k=0 1 …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=0 1…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 )=

111111k k k k k

k k k k k k k k k

x x x x x x x x m m m m x xk x x h h ++++++----+=+--

将上式在区间[x k x k+1]上积分两次,并且由S(x k )=y k S(x k+1)=y k+1,来确定两个积分常数。当x ∈[x k x k+1]时,

3322'

11111()()()()()

6666k k k k k k

k k k k k k k k k k

x x x x h x x h x x s x m m y m y m h h h h +++++----=+--+-,

利用S(x)一阶导数连续的性质,对上式求导,得:

22'

1111()()1

()()()226k k k k k k k k k k k k

x x x x h s x m m m m y y h h h ++++--=+--+-

在上式中,令x=x k 得:

'11(0)63k k k k

k k k k

h h y y s x m m h ++-+=-

-+ 将上式中的k 换成k-1,得:s '(x)在[x k-1,x k ]上的表达式,将x=x k 代入,

'11(0)63k k k k

k k k k

h h y y s x m m h ++-+=-

-+, 而s '(x k +0)=s '(x k -0)联立上述两式,得到关于m 的方程:

1111

111

636k k k k k k k k k k k k k h h h h y y y y m m m h h --+--+-+--++=-, 两边乘以

1

6

k k h h -+得:

111111111

6

2()k k k k k k k k k k k k k k k k k h h y y y y m m m h h h h h h h h -+--+------++=-+++,

上式中,等式左边含未知量m k-1,m k ,m k+1等式右边y k-1,y k ,y k+1是已知的,令

11k k k k h h h λ--=

+,1

1k

k k k k h h h μλ-=

=-+, 11116

()k k k k k k k k k y y y y c h h h h +-----=

-+11111[,][,]66[,,]k k k k k k k k k

f x x f x x f x x x h h +--+--==+

则得:λk m k-1+2m k +μk m k+1=C k (k=1 2…n-1)。

三次样条插值的整体光滑性有提高,应用广泛,但其误差估计较困难,而且它的求解代价很大,起精确度受端点条件影响很大。

总结:插值是数值分析领域的一个主要部分,选择插值策略的第一步是了解应用的需要:你要在表格中查些什么是否需要反复计算近似值在条件有限的情况下,构造固定的阶数的插值多项式可能会是一种更简单的方法有解决方案;当要反复计算逼近值时,推荐用牛顿多项式插值形式。

对表格数据的常规插值,推荐使用分段线性插值;如果插值的总体平滑很重要,应该考虑三次样条插值或三次Hermite 插值;同时当表格数据构成函数的导数不存在时,推荐使用三次样条插值。

参考文

1.(美)Gerald Recktenwald, 数值方法和MATLAB 实现与应用

2.关冶,陆金甫 数值分析基础[M] 高等教育出版社 1995版

3.杨顶辉 ,谢金星 大学数学实验[M] 清华大学出版社 2005版

相关主题
文本预览
相关文档 最新文档