好文档 - 专业文书写作范文服务资料分享网站

第5章 实四Lagrange插值多项式

天下 分享 时间: 加入收藏 我要投稿 点赞

第5章 实验四Lagrange插值多项式

实验目的:理解Lagrange插值多项式的基本概念,熟悉Lagrange插值多项

式的公式及源代码,并能根据所给条件求出Lagrange插值多项式,理解龙格现象。

5.1 Lagrange插值多项式 Lagrange插值多项式的表达式: L(x)??yili(x),i?1n?1li(x)??j?1j?in?1(x?xj)(xi?xj),i?1,2,?,n?1。

其中li(x)被称为插值基函数,实际上是一个n次多项式。li(x)的这种表示具有较好的对称性。公式具有两大优点:(1)求插值多项式,不需要求解线性方程组,当已知数据点较多时,此公式更能显示出优越性。(2)函数值可以用符号形式表示,数据点未确定的纵坐标可用多项式表示。

5.2 Lagrange插值多项式源代码I

% 功能: 对一组数据做Lagrange插值 % 调用格式:yi=Lagran_(x,y,xi) % x,y 数组形式的数据表 % xi:待计算y值的横坐标数组 % yi用Lagrange 插值算出的y值数组 function fi=Lagran_(x,f,xi)

fi=zeros(size(xi)); np1=length(f); for i=1:np1

z=ones(size(xi)); for j=1:np1

if i~=j,z=z.*(xi-x(j))/(x(i)-x(j));end end

fi=fi+z*f(i); end return

例5.1 已知4对数据(1.6,3.3),(2.7,1.22),(3.9,5.61),(5.6,2.94)。写出这4个数据点的Lagrange插值公式,并计算出横坐标xi=[2.101,4.234]时对应的纵坐标。

解:4个数据点的Lagrange插值公式为:

L3(x)?3.3*

(x?2.7)*(x?3.9)*(x?5.6)?(1.6?2.7)*(1.6?3.9)*(1.6?5.6)(x?1.6)*(x?3.9)*(x?5.6)4.22*?(2.7?1.6)*(2.7?3.9)*(2.7?5.6)

(x?1.6)*(x?2.7)*(x?5.6)3.9*?(3.9?1.6)*(3.9?2.7)*(3.9?5.6)(x?1.6)(x?2.7)*(x?3.9)2.94*(5.6?1.6)*(5.6?2.7)*(1.6?3.9)清单5.1 clear

x=[1.6, 2.7, 3.9, 5.6]; y=[3.3, 1.22, 5.61, 2.94]; xi=[2.101,4.234]; yi=Lagran_(x,y,xi); xx=1.5:0.05:6.5; yy=Lagran_(x,y,xx); plot(xx,yy,x,y,'o')

其结果为:

yi =

1.0596 6.6457

1086g(x):-, data points:o420-2-41234x567

图5.1 插值多项式曲线图

5.3 Lagrange插值多项式源代码II

% 输入:x是插值节点横坐标向量;y是插值节点对应纵坐标向量。

% 输出:C是拉格朗日插值多项式的系数矩阵;L是插值基函数系数矩阵。

function [C,L]=lagran(x,y) w=length(x); n=w-1; L=zeros(w,w); for k=1:n+1

V=1; for j=1:n+1 if k~=j

V=conv(V,poly(x(j)))/(x(k)-x(j)); end end L(k,:)=V; end C=y*L

程序中使用了命令poly和conv。poly命令创建一个向量,其项为以多项式的系数,该多项式具有给定的根。conv命令生成一个向量,其项为多项式系数,该多项式是另外两个多项式的乘积。例如:找出两个一次多项式p(x)和q(x)的乘积,它们的根为3和5。

>> p=poly(3) p=

1

-3

>> q=poly(5) q=

1

>> conv(p,q) ans=

1 -8 15

-5

例5.2 用Lagrange插值多项式源代码II,对4对数据(1.6,3.3),

(2.7,4.22),(3.9,5.61),(5.6,2.94),写出这4个数据点的Lagrange插值公式,并计算出横坐标组xi=[2.101,4.234]时对

应的纵坐标值。

解:4个数据点的Lagrange插值公式为:

L3(x)?3.3*(x?2.7)*(x?3.9)*(x?5.6)?(1.6?2.7)*(1.6?3.9)*(1.6?5.6)(x?1.6)*(x?3.9)*(x?5.6)4.22*?(2.7?1.6)*(2.7?3.9)*(2.7?5.6)

(x?1.6)*(x?2.7)*(x?5.6)3.9*?(3.9?1.6)*(3.9?2.7)*(3.9?5.6)(x?1.6)(x?2.7)*(x?3.9)2.94*(5.6?1.6)*(5.6?2.7)*(1.6?3.9)清单5.2 clear

x=[1.6, 2.7, 3.9, 5.6]; y=[3.3, 1.22, 5.61, 2.94]; xi=[2.101,4.234]; [C,L]=lagran(x,y); xx=1.5:0.05:6.5; yy= polyval(C,xx); plot(xx,yy, x,y,'o')

数据清单见图5.2,插值曲线图见图5.3。

图5.2 输出插值多项式的系数、插值基函数系数矩阵及yy值

1050-5-10-151.522.533.544.555.566.5

图5.3 插值多项式曲线图形

例5.3 将区间[-5,5]等分5份、10份,求函数y?1多项式,作出函数y?1解:

清单5.3 clear,clf x=-5:2:5; y=1./(1+x.^2); [C,L]=lagran(x,y); xx=-5:0.1:5; yy=polyval(C,xx); hold on

plot(xx,yy,'b',x,y,'.') xp=-5:0.01:5; z=1./(1+xp.^2); plot(xp,z,'r')

清单5.4

(1?x2)的拉格朗日插值

(1?x2)的原图像,观察龙格现象得出什么结果?

clear,clf x=-5:1:5; y=1./(1+x.^2); [C,L]=lagran(x,y); xx=-5:0.1:5; yy=polyval(C,xx); hold on

plot(xx,yy,'b',x,y,'.') xp=-5:0.01:5; z=1./(1+xp.^2); plot(xp,z,'r')

1.2data1data2data3z=1./(1+xp.2)0.810.66个点的插值多项式0.40.20-0.2-5-4-3-2-1012345

图5.4 5等份插值图形

2data1data2data31.510.50-0.5-5-4-3-2-1012345

图5.5 10等份插值图形

通过观察图形可以得出:

(1) 并不是插值节点越多,插值多项式逼近函数效果就越好。 (2) 误差较大地方,是在插值区间两端点附近出现。 练习题

1.设f(x)?x?2/x,(1)用基于点x0?1,x1?2和x2?2.5的二次拉格朗日

多项式,求f(1.5)和f(1.2)的近似值。(2)用基于点x0?0.5,x1?1,

x2?3和x3?5的三次拉格朗日多项式,求f(1.5)和f(1.2)的近似值。

2.用等距插值节点计算区间0?x??/2上函数xsinx的四次拉格朗日多项

式。每隔?/16计算一次插值误差,并画出图形。

第5章 实四Lagrange插值多项式

第5章实验四Lagrange插值多项式实验目的:理解Lagrange插值多项式的基本概念,熟悉Lagrange插值多项式的公式及源代码,并能根据所给条件求出Lagrange插值多项式,理解龙格现象。5.1Lagrange插值多项式Lagrange插值多项式的表达式:L(x)??yili(x),i?1n?1li(x
推荐度:
点击下载文档文档为doc格式
1l6lx2tkur5136q5t3t485bn78ar7y00ciz
领取福利

微信扫码领取福利

微信扫码分享