拉格朗日插值法课程设计

发布时间:2024-11-25

摘要

插值法是函数逼近的一种重要方法,是数值计算的基本课题.数学上来说,拉格朗日插值法可以给出一个恰好穿过二维平面上若干个已知点的多项式函数.Lagrange插值是n次多项式插值,其成功地用构造插值基函数的方法,解决了求n次多项式插值函数问题.Lagrange插值的基本思想是将待求的n次多项式插值函数改写成另一种表示方式,再利用插值条件确定其中的待定函数,从而求出插值多项式.

拉格朗日插值法是一种很实用的插值方法,可以应用在渔业资源评估中、化学中、工程中、工业中、机械设计与制造领域,以及计算机方面.本课题意在将拉格朗日插值法应用到实际中,主要通过程序的编写(有拉格朗日插值法的Matlab和C语言实现)将算法在计算机中实现,求得相应的解.进一步体现拉格朗日插值法在解决问题时的实际意义.

关键词 插值基函数;插值多项式;Lagrange插值;算法

Abstract

Interpolation function approximation is a kind of important method, numerical calculation is the basic subject.Mathematical speaking,Lagrange interpolation method can give a right through the two dimensional plane several known point polynomial http://grange interpolation is n times polynomial interpolation,which succeeded in structure interpolation basis function method,solve the on times polynomial interpolation function problem. Lagrange interpolation basic idea is to will stay for n times polynomial interpolation function rewritten into another means,reuse interpolation condition to determine the required function,so as to find out the interpolation polynomial.

Lagrange interpolation method is a very practical interpolation method, can be used in fishery resources evaluation,chemistry,engineering, industry, mechanical design and manufacturing,and computers to.This topic will be Lagrange interpolation method was used to practice,mainly through the process of writing(with Lagrange interpolation method of Matlab and C language implementation)algorithm is realized in computer,get the corresponding solution.Further reflected Lagrange interpolation method in solving problems of practical significance.

Keywords interpolation basis function;Interpolation polynomial;Lagrange

interpolation;algorithm

目录

引言 ............................................................... 1 第一章 拉格朗日插值法 .............................................. 2 §1.1 基本概念 ................................................. 2 §1.2 拉格朗日插值法 ........................................... 2 §1.2.1 基函数 ............................................. 2 §1.2.2拉格朗日插值公式 .................................... 3 §1.2.3 余项与误差估计 ..................................... 4 第二章 拉格朗日插值法的程序设计及应用 .............................. 8 §2.1拉格朗日插值法的Matlab实现 ............................... 8 §2.2拉格朗日插值法的C语言实现 ................................ 9 §2.2.1 流程图 ............................................. 9 §2.2.2 C语言编程 ......................................... 10 §2.3 拉格朗日插值法的应用 .................................... 11 §2.3.1 在渔业资源评估上的应用 ............................ 11 §2.3.2 利用拉格朗日插值法解决传热过程中的导热系数 ........ 12 参考文献 .......................................................... 14 附录A ............................................................. 15 附录B ............................................................. 16

引言

在数值分析中,拉格朗日插值法是以法国十八世纪数学家约瑟夫·路易斯·拉格朗日命名的一种多项式插值方法.约瑟夫·拉格朗日(Joseph Louis Lagrange),法国数学家、物理学家.他在数学、力学和天文学三个学科领域中都有历史性的贡献,其中尤以数学方面的成就最为突出.拉格朗日对流体运动的理论也有重要贡献,提出了描述流体运动的拉格朗日方法.1795年,拉格朗日在其著作《师范学校数学基础教程》中发表了这个插值方法,从此他的名字就和这个方法联系在一起.数据建模有两大方法:一类是插值方法,另一类是拟合函数,一般的说,插值法比较适合数据准确或数据量小的情形.然而Lagrange插值有很多种,1阶,2阶,…n阶.我们可以利用拉格朗日插值求方程,根据它的程序求原方程的图像.拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值.

实际问题中所遇到的许多函数很难找到它的解析表达式.有时通过实验或数值计算所得到的也只是一些离散的(一般是互不相同)点xi(i=0,1,...,n)上的函数值,在实际应用中,一般将这些数据列成数据表格的形式.通常,将这种用数据表格形式给出的函数称为列表函数,其中点x0,x1,...,xn称为结点.根据函数f(x)已有的数据表格来计算函数f(x)在一些新的点x处的函数值,这就是插值法所要解决掉问题.插值法的基本思想是,首先设法根据表格中已有的函数值值来构造一个简单的函数y(x)作为f(x)的近似表达式,然后再用y(x)来计算新的点上的函数值作为f(x)的近似值.通常可以选多项式函数作为近似函数y(x),因为多项式具有各阶导数,求值也比较方便.

本课题研究的是拉格朗日插值法的程序设计,计算机实现,以及拉格朗日插值法的应用.

第一章 拉格朗日插值法

§1.1 基本概念

下面介绍有关拉格朗日插值法的相关概念. 定义1.1 设函数y f(x)在区间[a,b]上有定义,且已知在点

a x0 x1 ... xn b上的值y0,y1,...,yn,若存在一简单函数,使

P(xi) yi,i 0,1,...,n (1.1)

成立,就称P(x)为f(x)的插值函数,点x0,x1,...,xn称为插值节点,包含插值节点的区间[a,b]称为插值区间,求插值函数P(x)的方法称为插值法. 若P(x)是次数不超过n的代数多项式,即

P(x) a0 a1x ... anxn,

其中ai为实数,就称P(x)为插值多项式,相P(x) a12 a a应的插值法称为多项式插值.

定义1.2 设给定数据点(xi,yi),i 0,1,...,n(互异),欲找二者的近似关系P(x),满足

(1)P(x) Pn(x), (2)P(xi) yi,i 0,1,...,n

则称P(x)为n次代数插值多项式. 定理1.1 满足条件(1.1)的插值多项式P(x)是存在唯一的.

直接求解方程组就可以得到插值多项式P(x),但这是求插值多项式最繁杂的方法,一般是不用的,下面将给出构造插值多项式更简单的方法.

§1.2 拉格朗日插值法

§1.2.1 基函数

为了构造插值多项式,我们先定义插值基函数.

定义1.3 设x0,x1,...,xn是给定的彼此互异的n 1个插值结点,

yi f(xi),i 0,1,...,n为给出的函数值,则Pn(x) y0l0(x) y1l1(x) ... ynln(x)是唯一的

次数不超过n的,满足Pn(xi) yi,i 0,1,2,...,n的多项式.其中

为拉格朗日插值基函数,Pn(x)为拉格朗日插值函数. 下面介绍基函数li(x)的性质.

1,i j,

性质1.1 li(xj)

0,i j, 性质1.2 li(x) Pn(x),i 0,1,...,n

性质1.3 li(x) 1

i 0n

§1.2.2 拉格朗日插值公式

定理1.2 n次代数插值问题的解为

P(x) yili(x) Ln(x)

i 0n

称为拉格朗日插值多项式. 特殊化,得到如下插值公式. (1)线性插值L1(x)

设已知x0,x1及y0=f(x0) ,y1=f(x1),L1(x)为不超过一次多项式,且满足

L1(x0)=y0,L1(x1)=y1, 几何上,L1(x)为过(x0,y0),(x1,y1)的直线,从而得到

. L1(x) y0

y1 y0

(x x0) (1.2)

x1 x0

为了推广到高阶问题,我们将式(1.2)变成对称式 L1(x)=l0(x)y0+l1(x)y1. 其中,

l0(x)=

x x0x x1

,l1(x)=.均为1次多项式且满足 x0 x1x1 x0

l0(x)=1且l1(x)=0.或l0(x)=0且l1(x)=1.

1,i j,

两关系式可统一写成. li(xj) (1.3)

0,i j,

(2)抛物线插值L2(x)

假定插值结点为xi 1,xi,xi 1,要求抛物线插值(即二次插值)多项式L2(x),使它满足

L2(xj) yi,j i 1,i,i 1.

我们知道在几何上就是通过三点(xi 1,yi 1),(xi,yi),(xi 1,yi 1)的抛物线.为了求出L2(x)的表达式,可采用基函数法,此时基函数li 1(x),li(x)及li 1(x)是二次函数,且在节点上分别满足条件

li 1(xi 1) 1,li 1(xj) 0,j i,i 1;

li(xi) 1,li(xj) 0,j i 1,i 1; (1.4)

li 1(xi 1) 1,li 1(xj) 0,j i 1,i.

满足条件(1.4)的插值基函数是很容易求出的,例如求li 1(x),因它有两个零点xi及

xi 1,故可表示为

li 1(x) A(x xi)(x xi 1),

其中A为待定系数,可由条件li 1(xi 1) 1定出

A

1

(xi 1 xi)(xi 1 xi 1)

于是

li 1(x)

(x xi)(x xi 1)

.

(xi 1 xi)(xi 1 xi 1)

同理可得

li(x)

(x xi 1)(x xi 1)

(xi xi 1)(xi xi 1)(x xi 1)(x xi)

.

(xi 1 xi 1)(xi 1 xi)

li 1(x)

利用二次插值基函数li 1(x),li(x),li 1(x),立即得到二次插值多项式

L2(x) yi 1li 1(x) yili(x) yi 1li 1(x), (1.5)

显然,它满足条件L2(xj) yj(j i 1,i,i 1).将上面求得的li 1(x),li(x),li 1(x)代入(1.5)式,得

L2(x) yi 1

(x xi)(x xi 1)(x xi 1)(x xi 1)(x xi 1)(x xi)

. yi yi 1

(xi 1 xi)(xi 1 xi 1)(xi xi 1)(xi xi 1)(xi 1 xi 1)(xi 1 xi)

§1.2.3余项与误差估计

拉格朗日插值用来求n个节点的(n-1)次插值多项式,它就是线性插值和抛物线插值的推广和延伸.我们设有n个节点,则拉格朗日插值的表达式表示为:

nnx xj(x x1)(x x2) (x xk 1)(x xk 1) (x xn)

g(x) yk ( )yk

k 1(xk x1)(xk x2) (xk xk 1)(xk xk 1) (xk xn)k 1j 1,j kxk xj

n

若在[a,b]上用Ln(x)近似f(x),则其截断误差为Rn(x) f(x) Ln(x),也称为插值多项式的余项.关于插值余项估计有以下定理.下面的定理说明了用插值多项式

Ln(x)近似代替函数f(x)时的余项.

定理1.3 (余项定理) 设f(n)(x)在[a,b]上连续,f(n 1)(x)在(a,b)内存在,节点则a x0 x1 ... xn b,Ln(x)是满足条件Ln(xj) yj,j 0,1,...,n.的插值多项式,对任何x [a,b],插值余项

f(n 1)( )

Rn(x) f(x) Ln(x) n 1(x), (1.6)

(n 1)!

这里 (a,b)且依赖于x, n 1(x) (x x0)(x x1)...(x xn).

这里需要说明如下两点.

(1)在插值多项式的余项公式中,包含有f(n 1)( ),其中, 一般与插值结点

xj(j 0,1,...,n)以及插值点x有关,因此, 一般是无法知道的,这就对余项的估计带来了困难.

(2)由插值多项式的余项公式可以看出,当被插值的函数f(x)为次数不高于n的多项式时,其n次插值多项式就是它本身,因为此时f(n 1)( ) 0,即余项为0. 应当指出,余项表达式只有在f(x)的高阶导数存在时才能应用. 在(a,b)内的具体位置通常不可能给出,如果我们可以求出maxf(n 1)(x) Mn 1,那么插值多项式

a x b

Ln(x)逼近f(x)的截断误差限是

Rn(x)

Mn 1

n 1(x). (n 1)!

当n 1时,线性插值余项为

11

R1(x) f''( ) 2(x) f''( )(x x0)(x x1), [x0,x1];

22

当n 2时,抛物线插值的余项为

1

R2(x) f'''( )(x x0)(x x1)(x x2), [x0,x2].

6

利用余项表达式(1.6),当f(x) xk(k n)时,由于f(n 1)(x 0),于是有

Rn(x) x xikli(x) 0,

k

i 0n

由此得

xl(x) x

kiii 0

n

k

,k 0,1,...,n. (1.7)

特别当k 0时,有

li(x) 1. (1.8)

i 0n

(1.7)式和(1.8)式也是插值基函数的性质,利用它们还可求一些和式的值.

例1 已知函数表sin=0.5000,sin=0.7071,sin=0.8660,分别由线性插值与

643

2

抛物插值求sin的数值解,并由余项公式估计计算结果的精度.

9

解(1)这里有三个节点,线性插值需要两个节点,根据余项公式,我们选取前两个节点,易知:

2 2 0.7071 0.50002 sin)=0.5000+(-) L1(

9996 462

=0.5000+0.2071 =0.6381

3

截断误差,

R1(

2 1 (sinx) 2 2 )=( ) 7.615 10 3, 92183629694

得 7.615 10 3 0.5 10 1.知结果至少有1位有效数字. (2)易知

2 2 3 2 2 -)(-)( )

2 2 0.7071+ sin L2() 0.5000 99(-)(-)( )64634643

2 2 ( )( )

128 0.866= 0.7071 0.8660=0.6434 .

99 0.50009( )( )3634

截断误差为:

(

R2(

1 2 (sinx) 2 2 2

) ( )( ) 0..861 10 2 96969494x 618369

得 8.861 10 4 0.5 10 2.知结果至少有两位数字. 比较本题精确解sin

2

0.642787609...,实际误差限分别为0.0047和0.00062. 9

第二章 拉格朗日插值法的程序设计及应用

§2.1 拉格朗日插值法的Matlab实现

实现Lagrange插值的步骤如下:

Step1 定义函数f = 1./(25*x^2+1)将其保存在f.m 文件中,具体程序如下: function y = f1(x) y = 1./(25x.^2+1);

Step2 定义拉格朗日插值函数,将其保存在lagrange.m 文件中,具体实现程序

编程见附录A.

在Matlab中,利用Lagrange插值方法进行多项式插值,并将图形显式出来.

Step3 建立测试程序,保存在text.M文件中,实现画图: x=-1:0.001:1; y=(1+25.*x.^2).^-1; p=polyfit(x,y,n); py=vpa(poly2sym(p),10); plot_x=-1:0.001:1; f1=polyval(p,plot_x); figure

plot(x,y,'r',plot_x,f1) 输入n=6时,出现如下面的图2.1所示.

图2.1 Largange插值图像

通过图2.1可以看出当n=6时,被插图像与插值图像没有很好的模拟,于是重新运行text.M,并选择n=15,运行,显示如图2.2所示.

图2.2 Largange插值图像

综合图2.1和图2.2的Lagrange插值图像可以看出,n=15时的被插图像与插值图像实现了很好的模拟. 结果分析:

由图2.1和图2.2可以看出n的次数越高,越能实现较好的模拟,从而模拟的效果越好,从图2.2就可以看出两条曲线接近重合,而图一两条直线却分开很多,误差较大,精度也不高.因此在实际的应用中应该尽量在给定的条件下增加n的次数,才能实现与原函数较好的重合,才能使计算的结果更加的准确,从而减小了误差.

§2.2 拉格朗日插值法的C语言实现

在Visual C++中,用C语言实现拉格朗日插值.

§2.2.1 流程图

要用C语言实现拉格朗日插值,先画出流程图. 程序流程图:

图2.3 流程图

§2.2.2 C语言编程 用C语言编程的步骤如下:

Step1定义拉格朗日插值算法;

Step2 int n;{如果n>=20或n<=0,则输出"Error!The value of n must in

(0,20)."}

for i:=0 to n-1{输入x和y的值}

Step3输出根据给定的点求出其对应的拉格朗日插值多项式的值 . 举例如下:

已知当x=1,-1,2时f(x)=0,-3,4,求f(1.5)的值.源程序见附录B. 运行结果如下:

图2.4 截屏

§2.3 拉格朗日插值法的应用

拉格朗日插值法可以应用在各个方面.

§2.3.1 在渔业资源评估上的应用:

应用拉格朗日插值法拟合鱼类体长与体重之间的关系,使用计算机VB语言进行编写程序,与常用的线性回归法、Ricker法进行比较,得出体长与体重的关系式为

nnnx xj

Pn(x) yklk(x) ( )yk

x xk 0k 0j 0kj

j k

在资源评估过程中,当测量次数确定为j 0,1,...,n时,将测量到同一种不同大小的鱼类样品对应的体长与体重数据(xj,yj),其中xj表示第j条鱼的体长,yj表示第j条鱼的体重,即求作n次多项式Pn(x),使满足条件

Pn(Xj) Yj,j 0,1,...,n, (2.1) 点Xj(它们互不相同,若在测量中有相同的体长值归为一组数值)称为插值节点.用几何的语言来表达这类插值,就是通过体长与体重关系曲线y f(x)上给定的n 1个点

(xj,yj),j 0,1,..,n,求作一条n次代数曲线y Pn(x)作为y f(x)的近似.解决这个问

题时先从构造插值基函数入手,这里的插值基函数lk(x)(k 0,1,...,n)是n次多项式,且满足条件

0,j k

lk(xj) kj 1,j k,

(2.2)

这表明除xk以外的所有节点都是lk(x)的零点,故

lk(x) c (x xj), (2.3)

j 0j kn

按(2.2)式中的第2个条件lk(xk) 1确定其中的系数c,结果有 lk(x)

j 0j kn

x xjxk xj

. (2.4)

利用插值基函数容易得出方程(2.1)的解 Pn(x) yklk(x) (

k 0

k 0

j 0j k

n

n

n

x xjxk xj

)yy (2.5)

通过这个方程,我们可以从同一种鱼类对应体长求得相应较为精确的近似体重.

§2.3.2 利用拉格朗日插值法解决传热过程中的导热系数

化学工程手册中通常给出的导热系数是离散数据,而此数据误差较大1为了减小导热系数的误差,我们可采用拉格朗日插值法求得准确度较高的导热系数. 以苯为例,求160℃下的 值.

根据表2-1中所给出的值,可确定为共有5个节点,能构造4次插值函数 4(t). 首先构造L0(t):L0(t) A(t t1)(t t2)(t t3)(t t4), 而L0(t0) 1,故L0(t)

. 则,L0(160) 0.0476

;L2(160) 0.4481;L3(160) 同理可构造L1(t),L2(t),L3(t),L4(t),求得L1(160) 0.2105

(t t1)(t t2)(t t3)(t t4)

(t0 t1)(t0 t2)(t0 t3)(t0 t4)

0.9592;L4(160) 0.2380.

这样,4次插值函数 4(t)为

4(160) .0235.

L(160) L(160) L(160) L(160) L(160) L(160)=0

i

4

0011223344

i 0

也就是说用拉格朗日插值法求得苯在160 C下的导热系数为0.0235(w/m C). 拉格朗日插值法还可以应用在基于拉格朗日插值法修正地形影响的分布式降水模型研究中,基于质心拉格朗日插值的GPS轨道标准化方法,基于高维拉格朗日插值法的三坐标测量机测量误差建模,基于拉格朗日插值的射线图像增强技术,基于拉格朗日插值的参数曲线隐式化等方面.

拉格朗日插值法课程设计.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219