资源描述:
《数值分析实验二:代数插值》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、毕节学院实验报告实验名称:代数插值实验报告序号:2组别姓名同组实验者实验项目代数插值实验日期2012年9月26日实验类别1、验证性实验或基础性实验;□2、综合性实验□3、设计性实验;□4、创新性实验和研究性实验;教师评语实验成绩指导教师(签名)赖志柱年月日实验目的:进一步熟练掌握代数插值法,提高编程能力和解决插值问题的实践技能,观察代数插值的龙格现象。实验任务与要求:(1)对函数在上进行等距插值编程实现,要求画出该函数图像和插值函数图像、节点个数依次从3到11进行取值、简要分析它们的误差,必要时可以
2、输出相关数据表格进行对比分析。(2)选择对数函数或根式函数进行插值研究,要求分别编程实现Lagrange插值、Newton插值和分段线性插值并画图对比分析。小组分工合作说明:实验过程及内容:第一题:分段线性插值适用于计算简单、光滑性要求不高的插值问题,且其整体逼近的效果较好.从几何意义上看,分段线性插值就是用折线近似代替曲线.设在区间[a,b]上取n+1个点函数在上述节点处的函数值为于是得到n+1个点连接相邻两点和,得一折线函数,若满足:(1)在[a,b]上连续;(2);(3)在每个小区间上是线性函
3、数,则称折线函数为分段线性插值函数,所以第一题我们用分段线性插值的方法编程过程:1.原函数图象:functiony=fd1(x)x=-5:5y=1./(1+x.^2);plot(x,y)2.插值效果比较函数,选取插值节点数为奇数.上图为不同节点数插值函数图像与原函数图像,下图为误差图像.functionv=fd22(x,y,u)delta=diff(y)./diff(x);n=length(x);k=ones(size(u));forj=2:n-1k(x(j)<=u)=j;ends=u-x(k);v
4、=y(k)+s.*delta(k);clearcloset=[-5:0.01:5];a=['k''g''r''c''m'];fori=1:5n=2*i+1;x=linspace(-5,5,n);y=fd1(x);p=fd22(x,y,t);p=p';y1=fd1(t);y1=y1';e=p-y1;subplot(2,1,1);plot(x,y,a(i));holdon;subplot(2,1,2);plot(t,e,a(i));holdon;endsubplot(2,1,1);legend('n=3
5、','n=5','n=7','n=9','n=11')subplot(2,1,2);legend('n=3','n=5','n=7','n=9','n=11')subplot(2,1,1);fplot(@fd1,[-55],'k');holdoff3.结果分析:不同插值节点数所得的分段线性插值函数,在节点处与原函数的函数值一定相同,所得的分段线性插值函数在原函数斜率绝对值变化大的地方,与原函数的误差比较大.由误差平方和e,插值节点个数越多,e有减小的趋势,最后趋于0.只考虑奇数或偶数个节点,则随节点
6、数增加e严格减小,随机生成的节点不如等距节点使插值效果好.第二题:1.(1)Lagrange插值clearclcn=10;lb=0;ub=10;step=0.01;x0=lb:step:ub;y0=log(x0);plot(x0,y0,'r-');holdonfori=1:n+1xi(i)=lb+(ub-lb)*(i-1)/n;yi(i)=log(xi(i));endcount=1;forx=lb:step:ubfl=0;fork=1:n+1up=1;dn=1;fori=1:n+1ifk~=iup=
7、up*(x-xi(i));dn=dn*(xi(k)-xi(i));endendfl=fl+yi(k)*up/dn;endpn(count)=fl;fi(count)=log(x);count=count+1;end(2)Newton插值x=a:(b-a)/n:b;y=log(x);plot(x,y,'b')holdonz=a:(b-a)/(2*n):b;n=length(x);forj=2:nfori=n:-1:jy(i)=(y(i)-y(i-1))/(x(i)-x(i-j+1));endendu=
8、y(n);m=length(z);forj=1:mfori=n-1:-1:1u=y(i)+u*(z(j)-x(i));v(j)=u;endu=y(n);endplot(z,v,'*')(2)分段线性插functiony=fd1(x)y=log(x)functionyi=fd2(x,y,xi)n=length(x);m=length(y);ifn~=merror('X和Y的长度必须相同');return;endfork=1:n-1ifabs(x(k)-x(k+1))