实验3插值与数值积分实验报告一、实验目的1、掌握用Matlab计算拉格朗日、分段线性、三次样条三种插值的方法,改变节点的数目,对三种插值结果进行初步分析;2、掌握用Matlab及梯形公式、辛普森公式计算数值积分;3、通过实例学习用插值和数值积分解决实际问题。二、实验内容10、表3.7给出的x,y数据位于机翼剖面的轮廓线上,y1和y2分别对应轮廓的上下线。假设需要得到x坐标每改变0.1时的y坐标。试完成加工所需数据,画出曲线,求机翼剖面的面积。表3.7机翼剖面轮廓线数据x035791112131415y101.82.22.73.03.12.92.52.01.6y201.21.72.02.12.01.81.21.01.6曲线绘制利用Matlab编程画出机翼轮廓线,内容如下:(1)三次样条插值x=[035791112131415];y1=[01.82.22.73.03.12.92.52.01.6];y2=[01.21.72.02.12.01.81.21.01.6];u=0:0.1:15;v1=spline(x,y1,u);v2=spline(x,y2,u);plot(u,v1,u,v2);grid;xlabel('x');ylabel('y1或y2');gtext('y1(x)');gtext('y2(x)');其中,u为插值设置了步长和范围,grid命令可以为曲线图添加网格线,xlabel、ylabel分别为横坐标、纵坐标添加标签,gtext命令可以实现曲线名称的添加。得到的结果如下:(2)分段线性插值将v1、v2部分代码改为v1=interp1(x,y1,u);v2=interp1(x,y2,u);得到的图形如下:可见,用分段线性插值会使得曲线不够光滑(特别是区间[10,15]的部分)。(3)拉格朗日插值根据教材内容,用Matlab编程,内容如下:functiony=lagr(x0,y0,x)n=length(x0);m=length(x);fori=1:mz=x(i);s=0;fork=1:np=1;forj=1:nifj~=kp=p*(z-x0(j))/(x0(k)-x0(j));endends=p*y0(k)+s;endy(i)=s;end并相应地改变v1、v2,输出的结果如下:可见,曲线出现了严重的振荡,对于此题,拉格朗日插值法已不适用。面积计算利用梯形公式计算图形面积,相关代码如下:v=v1-v2;trapz(u,v)对于三次样条插值法,输出的结果为:ans=11.3444对于分段线性插值法,输出的结果为:ans=10.7500由于三次样条插值法得到的图形更接近实际图形,用它算得的面积应更准确。11、图3.13是欧洲一个国家的地图(图参考教材),为了算出它的国土面积,首先对地图作如下测量,以由西向东方向为x轴,由南向北方向为y轴,选择方便的原点,并将从最西边界点到最东边界点在x轴上的区间适当地划分为若干段,在每个分点的y方向测出南边界点和北边界点的y坐标y1和y2,这样就得到了表3.8的数据(单位:mm)。根据地图的比例我们知道18mm相当于40km,试由测量数据计算该国国土的近似面积,与它的精确值41288km2做比较。表3.8地图边界点数据x7.010.513.017.534.040.544.548.056.061.068.576.580.591.0y14445475050383030343634414546y24459707293100110110110117118116118118x96101104106.5111.5118123.5136.5142146150157158y143373328326555545250666668y2121124121121121122116838182868568曲线绘制相关代码如下:x=[7.010.513.017.534.040.544.548.056.061.068.576.580.591.096.0101.0104.0106.5111.5118.0123.5136.5142.0146.0150.0157.0158.0];y1=[444547505038303034363441454643373328326555545250666668];y2=[4459707293100110110110117118116118118121124121121121122116838182868568];u=7:0.1:158;v1=interp1(x,y1,u);v2=interp1(x,y2,u);plot(u,v1,u,v2);grid;xlabel('x');ylabel('y1或y2');输出的结果如下:与教材的原图十分相似。若用三次样条插值,得到的结果如下:由于曲线变得光滑,得到的图形反而与实际图形相差较远,所以此题分段线性插值更为适用。面积计算相关代码如下:v=v2-v1;S=40^2*trapz(u,v)/18^2其中,面积进行了单位换算。对于分段线性插值法,结果如下:S=4.2414e+04即42414km2。对于三次样条插值法,结果如下:S=4.2468e+04即42468km2。可见,分段线性插值法得到的结果更接近实际值,这与画图中的分析是相符的。12、桥梁的一端每隔一段时间记录1min有几辆车过桥,得到表3.9的过桥车辆数据:表3.9过桥车辆数据时间车辆数/辆时间车辆数/辆时间车辆数/辆0:0029:001218:00222:00210:00519:00104:00011:301020:0095:00212:301221:00116:00514:00722:0087:00816:00923:0098:002517:002824:003试估计一天通过桥梁的车流量。Matlab编程内容如下:x=[0245678910.511.512.514161718192021222324];y=[22025825125101279282210911893];u=0:1/60:24;v=interp1(x,y,u);n=sum(v)其中,10.5表示时间10:30,u中步长为1/60的意思是1/60小时,即1分钟,sum命令的作用是对每个节点的v值进行求和,得到的结果即估计的一天的通过桥梁的车流量。对于分段线性插值法,结果如下:n=1.2993e+04对于三次样条插值法,结果如下:n=1.2671e+04需要注意的是,这两种方法的准确性没有办法比较,因为我们不知道实际的车流量曲线是更光滑还是更接近折线的形状,因此最终结果可以取一个平均值。三、实验收获通过本次实验,我对Matlab软件的应用更加熟悉,对利用Matlab绘制曲线、求图形面积、解决实际问题有了更深入的认识。同时,我也体会到三次样条插值法和分段线性插值法的各自的优点,并对利用梯形公式、求和命令解决问题的操作步骤更加熟悉。总的来说,本次实验增强了我使用Matlab解决问题的能力,加深了我对数学实验这门课程的理解。