实验一 插值方法实验_第1页
实验一 插值方法实验_第2页
实验一 插值方法实验_第3页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《计算方法》实验报告学院:信息学院专业:计算机科学与技术指导教师:班级学号:姓名:计算机科学与工程系实验一 插值方法一.实验目的的理解。Matlab编程环境,利用Matlab实现具体的插值算法,并进行可视化显示。二.实验要求用Matlab软件实现Lagrange插值、分段线性插值、三次Hermite插值、Aitken逐步插值算法,并用实例在计算机上计算和作图。三.实验内容实验题目y

2 xex的数据表0i0123x0.460470.480.49y0.48465550.49374520.50274980.5116683Lagrangex=0.472时的积分值。将区[-5,5]分为10等份,求作f(x) 1 的分段线性插值函数,输出函数1x2表达式及其图形,并计算x=3.3152时的函数值。x tx0.30.40.50.60.7y0.298500.396460.493110.588130.68122仿照附录C中“1.2逐步插值”程序算法,课本227页)Aitken(xx tx0.30.40.50.60.7y0.298500.396460.493110.588130.68122C中1.3Hermite程序(228页选择实验数据设计思想Lagrange插值:Lagrange循环(j循环)累乘求得系数,然后再通过外循环循环)累加得出插值结果。分段线性插值:分段插值是将被插值函数逐步多项式化。分段插值的处理过程分两步,将区间分成几个子段,据,连接相邻节点得一折线,该折线函数可以视作插值问题的解。Neville插值:Neville插值的基本思想和AitkenNeville上一步相邻节点插值后得到的,而不是新的插值节点,这样得到的插值函数和原函数更加接近。Atiken逐步插值:Aitken有节点为止,最终获得与原函数更加接近的插值函数。Hermite插值:Hermite插值是Lagrange对应程序Lagrange插值function[y0,N]=Lagrange_eval(X,Y,x0)%X,Y是已知的差值点坐标点%x0是插值点%y0是Lagrange多项式在x0处的值%NLagrangem=length(X);N=zeros(m,1);y0=0;fori=1:mN(i)=1;forj=1:mifj~=iN(i)=N(i)*(x0-X(j))/(X(i)-X(j));endendy0=y0+Y(i)*N(i);endsymsfx;f=1/(1+x^2);N=input('请输入插值节点数X=-5:10/N:5;Y=zeros(1,length(X));fori=1:(N+1)end

x=X(i);Y(i)=eval(f);M=-5:0.01:5;y=zeros(1,length(M));n=1;fori=1:Nforx=-5:0.01:5ifx<X(i+1)&&x>=X(i)y(n)=Y(i)*(x-X(i+1))/(X(i)-X(i+1))+Y(i+1)*(x-X(i))/(X(i+1)-X(i));n=n+1;end

end

endezplot(f,[-5,5])holdonx=-5:0.01:5;plot(x,y,'r');Neville逐步插值functiony0=Neville_eval(X,Y,x0)%X,Y是已知的插值点的坐标%x0是插值点%y0是多项式在x0处的值m=length(X);P=zeros(m,1);P1=zeros(m,1);P=Y;fori=1:mP1=P;k=1;forj=i+1:mk=k+1;P(j)=P1(j-1)+(P1(j)-P1(j-1))*(x0-X(k-1))/(X(j)-X(k-1));endifabs(P(m)-P(m-1))<10^-6;y0=P(m);return;endendy0=P(m);Atiken逐步插值functiony0=Aitken_eval(X,Y,x0)%X,Y是已知的插值点的坐标%x0是插值点%y0是多项式在x0处的值m=length(X);P=zeros(m,1);P1=zeros(m,1);P=Y;fori=1:mP1=P;k=1;forj=i+1:mk=k+1;P(j)=P1(j-1)+(P1(j)-P1(1))*(x0-X(k-1))/(X(j)-X(1));endifabs(P(m)-P(m-1))<10^-6;y0=P(m);return;endendy0=P(m);Hermite插值functiony0=Hermite_interp(X,Y,DY,x0)%X,Y是已知插值点向量序列%DY是插值点处的导数值%x0是插值点横坐标%y0是待求的分段三次Hemite插值多项式在x0处的值%N表示向量长度N=length(X);fori=1:Nifx0>=X(i)&x0<=X(i+1)k=i;break;endenda1=x0-X(k+1);a2=x0-X(k);a3=X(k)-X(k+1);y0=(a1/a3)^2*(1-2*a2/a3)*Y(k)+(-a2/a3)^2*(1+2*a1/a3)*Y(k+1)+(a1/a3)^2*a2*DY(k)+(-a2/a3)^2*a1*DY(k+1);实验结果列出相应的运行结果。如果要求可视化,则同时需要给出相应的图形。Lagrange插值一次Lagrange插值:运行结果:>>X=[0.46,0.47];>>Y=[0.4846555,0.4937452];>>x0=0.472;>>[y0,N]=Lagrange_eval(X,Y,x0)y0=0.49556314000000N=-0.200000000000001.20000000000000插值系数与作图:>>x1=0;>>[y1,N]=Lagrange_eval(X,Y,x1);>>x2=1;>>[y2,N]=Lagrange_eval(X,Y,x2);>>k=(y2-y1)/(x2-x1)k=0.90897000000001>>x=[x1,x2];>>y=[y1,y2];>>plot(x,y)二次Lagrange插值差值结果:>>X=[0.46,0.47,0.48];>>Y=[0.4846555,0.4937452,0.5027498];>>x0=0.472;>>[y0,N]=Lagrange_eval(X,Y,x0)y0=0.49555292800000N=-0.080000000000000.960000000000000.12000000000000插值系数与作图:>>x1=0;>>[y1,N]=Lagrange_eval(X,Y,x1);>>x2=1;>>[y2,N]=Lagrange_eval(X,Y,x2);>>k=(y2-y1)/(x2-x1)k=0.87918499999967>>x=[x1,x2];>>y=[y1,y2];>>plot(x,y)三次Lagrange插值差值结果:>>X=[0.46,0.47,0.48,0.49];>>Y=[0.4846555,0.4937452,0.5027498,0.5116683];>>x0=0.472;>>[y0,N]=Lagrange_1(X,Y,x0)>>[y0,N]=Lagrange_eval(X,Y,x0)y0=0.49555296000000N=-0.048000000000000.864000000000000.21600000000000-0.03200000000000插值系数与作图>>x1=0;>>[y1,N]=Lagrange_eval(X,Y,x1);>>x2=1;>>[y2,N]=Lagrange_eval(X,Y,x2);>>k=(y2-y1)/(x2-x1)k=0.83708499999011>>x=[x1,x2];>>y=[y1,y2];>>plot(x,y)分段差值差值结果:>>Y=interp1(x,y,3.3152,'spline')Y=0.08342312935731(原函数:蓝色,插值函数:红色)>>fenduan_eval请输入插值节点数N=6Neville逐步插值>>X=[0.3,0.4,0.5,0.6,0.7];>>Y=[0.29850,0.39646,0.49311,0.58813,0.68122];>>x0=0.462;>>y0=Neville_eval(X,Y,x0)y0=0.45655811276280Aitken逐步插值>>X=[0.3,0.4,0.5,0.6,0.7];>>Y=[0.29850,0.39646,0.49311,0.58813,0.68122];>>x0=0.462;>>y0=Aitken_eval(X,Y,x0)y0=0.77480886915945Hermite插值>>X=[0.3,0.4,0.5,0.6,0.7];>>Y=log(X);>>DY=1./X;>>x0=0.462;>>y0=Hermite_interp(X,Y,DY,x0)y0=-0.7722四.实验体会通过本次课程设计,我初步掌握了MATLAB运用,了解了matlab的基本编程思想,学会了matlab的基本语法与常用操作命令,加深了对于Lagrange插值、分段线性插值、Neville逐步插值、Aitken逐步插值、Hermite插值的理解;培养了独立工作能力和创造力;更加精进了编程的能力;综合运用专业及基础知识,解决实际数学问题的能力;深入的了解和体会了计算方法—算法设计及其matlab下,收益匪浅。同时对数学的研究有了更深入的认识,并对以往所掌握的数学及编程知识有了回顾及更深入的探索。对于各种插值方法的精度分析也有了清晰的认识,并对各种插值算法有了深刻的的理解;Lagrange的插值法。但是由于拉格朗日的插值多项式和每个节点都有关,当改变节点个数时,需要重新计算。且当增大插值阶数时容易出现龙格

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论