《拉格朗日插值、牛顿插值的matlab代码(共6页).doc》由会员分享,可在线阅读,更多相关《拉格朗日插值、牛顿插值的matlab代码(共6页).doc(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上实验五 多项式插值逼近信息与计算科学金融 崔振威 1一、 实验目的:拉格朗日插值和牛顿插值的数值实现二、 实验内容:p171.1、p178.1、龙格现象数值实现三、 实验要求:1、 根据所给题目构造相应的插值多项式,2、 编程实现两类插值多项式的计算3、 试分析多项式插值造成龙格现象的原因主程序1、拉格朗日function c,l=lagran(x,y)%c为多项式函数输出的系数%l为矩阵的系数多项式%x为横坐标上的坐标向量%y为纵坐标上的坐标向量w=length(x);n=w-1;l=zeros(w,w);for k=1:n+1 v=1; for j=1:n+1 i
2、f k=j v=conv(v,poly(x(j)/(x(k)-x(j) %对多项式做卷积运算 end end l(k,:)=v;endc=y*l;牛顿插值多项式主程序function p2,z=newTon(x,y,t) %输入参数中x,y为元素个数相等的向量%t为插入的定点%p2为所求得的牛顿插值多项式%z为利用多项式所得的t的函数值。n=length(x); chaS(1)=y(1);for i=2:n x1=x;y1=y; x1(i+1:n)=; y1(i+1:n)=; n1=length(x1); s1=0; for j=1:n1 t1=1; for k=1:n1 if k=j %如果
3、相等则跳出循环 continue; else t1=t1*(x1(j)-x1(k); end end s1=s1+y1(j)/t1; end chaS(i)=s1;endb(1,:)=zeros(1,n-1) chaS(1);cl=cell(1,n-1); %cell定义了一个矩阵for i=2:n u1=1; for j=1:i-1 u1=conv(u1,1 -x(j); %conv()用于多项式乘法、矩阵乘法 cli-1=u1; end cli-1=chaS(i)*cli-1; b(i,:)=zeros(1,n-i),cli-1;endp2=b(1,:);for j=2:n p2=p2+b
4、(j,:);endif length(t)=1 rm=0; for i=1:n rm=rm+p2(i)*t(n-i); end z=rm;else k1=length(t); rm=zeros(1,k1); for j=1:k1 for i=1:n rm(j)=rm(j)+p2(i)*t(j)(n-i); end z=rm; endendplot(t,z,y,x,y,*r) %输出牛顿插值多项式的函数图p171.1(a) 、f(x)=ex解:在matlab窗口中输入: x=0 0.2 0.4 0.6 0.8 1; y=exp(0) exp(0.2) exp(0.4) exp(0.6) exp(
5、0.8) exp(1)y = 1.0000 1.2214 1.4918 1.8221 2.2255 2.7183 c,l=lagran(x,y)可以得出输出结果为:c = 0.0139 0.0349 0.1704 0.4991 1.0001 1.0000l = -26.0417 78.1250 -88.5417 46.8750 -11.4167 1.0000 130.2083 -364.5833 369.7917 -160.4167 25.0000 0 -260.4167 677.0833 -614.5833 222.9167 -25.0000 0 260.4167 -625.0000 510
6、.4167 -162.5000 16.6667 0 -130.2083 286.4583 -213.5417 63.5417 -6.2500 0 26.0417 -52.0833 36.4583 -10.4167 1.0000 0由输出结果可以的出:P(x)的系数分别为:a0=0.0139 a1=0.0349 a2=0.1704 a3=0.4991 a4=1.0001 a5=1.0000(b) 、f(x)=sin(x)解:在matlab窗口中输入: x=0 0.2 0.4 0.6 0.8 1; y=sin(0) sin(0.2) sin(0.4) sin(0.6) sin(0.8) sin(1
7、); c,l=lagran(x,y)可以得出输出结果为:c = 0.0073 0.0016 -0.1676 0.0002 1.0000 0l = -26.0417 78.1250 -88.5417 46.8750 -11.4167 1.0000 130.2083 -364.5833 369.7917 -160.4167 25.0000 0 -260.4167 677.0833 -614.5833 222.9167 -25.0000 0 260.4167 -625.0000 510.4167 -162.5000 16.6667 0 -130.2083 286.4583 -213.5417 63.
8、5417 -6.2500 0 26.0417 -52.0833 36.4583 -10.4167 1.0000 0由输出结果可以的出:P(x)的系数分别为:a0=0.0073 a1=0.0016 a2=-0.1676 a3=0.0002 a4=1.0000 a5=0(c) 、f(x)=(x+1)x+1解:在matlab窗口中输入: x=0 0.2 0.4 0.6 0.8 1; y=1 1.21.2 1.41.4 1.61.6 1.81.8 22; c,l=lagran(x,y)可以得出输出结果为:c = 0.3945 -0.0717 0.7304 0.9415 1.0052 1.0000l =
9、 -26.0417 78.1250 -88.5417 46.8750 -11.4167 1.0000 130.2083 -364.5833 369.7917 -160.4167 25.0000 0 -260.4167 677.0833 -614.5833 222.9167 -25.0000 0 260.4167 -625.0000 510.4167 -162.5000 16.6667 0 -130.2083 286.4583 -213.5417 63.5417 -6.2500 0 26.0417 -52.0833 36.4583 -10.4167 1.0000 0由输出结果可以的出:P(x)的
10、系数分别为:a0=0.3945 a1=-0.0717 a2=0.7304 a3=0.9415 a4=1.0052 a5=1.0000P178.12、 a0=5 a1=-2 a2=0.5 a3=-0.1 a4=0.003 x0=0 x1=1 x2=2 x3=3 c=2.5解:在matlab窗口中输入: x=5 -2 0.5 -0.1; y=0 1 2 3; t=0:0.1:2.5; u,v=newTon(x,y,t)可得出输出结果:u = 0.1896 -0.7843 -1.3928 2.8688v =2.8688 2.7218 2.5603 2.3855 2.1983 2.0000 1.791
11、7 1.5745 1.3497 1.1182 0.8813 0.6401 0.3957 0.1493 -0.0980 -0.3451 -0.5908 -0.8340 -1.0735 -1.3082 -1.5370 -1.7588 -1.9723 -2.1765-2.3702 -2.5523由此可以求出牛顿多项式为: f(x)=0.1896x3-0.7843x2-1.3928x+2.8688输出的图为:结果分析:利用牛顿插值多项式的函数,通过调用函数可以求得牛顿多项式与给定的点的值,并通过matlab做出函数图像。对输出结果v的值和图像进行分析,不难发现函数的输出值没有很明显的偏离函数原图像,即出现龙格现象。因此利用牛顿插值多项式求该函数,其结果是逼近的。专心-专注-专业