数值分析实验二

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

内江师范学院数值分析实验报告册编制张莉审定牟廉明专业:班级:级班学号:姓名:数学与信息科学学院2013年9月说明一、学生在做实验之前必须要准备实验,主要包括预习与本次实验相关的理论知识,熟练与本次实验相关的软件操作,收集整理相关的实验参考资料,要求学生在做实验时能带上充足的参考资料;若准备不充分,则学生不得参加本次实验,不得书写实验报告;二、要求学生要认真做实验,主要是指不得迟到、早退和旷课,在做实验过程中要严格遵守实验室规章制度,认真完成实验内容,极积主动地向实验教师提问等;三、各个实验按照学生水平分别设置了A、B、C、D四个等级,其中对应的难度系数为1、0.8、0.7、0.6,也可根据实际完成情况制定相应地的难度系数,但总体保证难度排序为A级难度最大,B级次之,C级较易,D级最简单。四、学生可以根据自己对各个实验涉及到的知识点掌握的程度自由选取A、B、C、D等级的实验题目。五、学生要认真工整地书写实验报告,实验报告的内容要紧扣实验的要求和目的,不得抄袭他人的实验报告;四、根据实验准备、实验态度、实验报告的书写、实验报告的内容进行综合评定,并给出实验成绩评定分。1实验名称:实验二插值与拟合指导教师:吴开腾张莉实验时数:4实验设备:安装了Matlab、C++、VF软件的计算机实验日期:2013年10月23、30日实验地点:第五教学楼北902实验目的:1.掌握插值方法的基本思想和基本步骤,能够根据实际问题选用适当地插值方法进行数值实验,并从实验过程中理解各类插值方法之间的联系与区别。2.理解各类插值方法优缺点,并能自行编程求解。3.理解插值方法与数据拟合的区别,掌握数据拟合方法解决实际问题的基本步骤和求解理论,并能通过数值实验进行验证。实验准备:1.在开始本实验之前,请回顾教科书的相关内容;2.需要一台准备安装WindowsXPProfessional操作系统和装有数学软件的计算机。实验内容及要求A题在某海域测得一些点(,)xy处的水深z由表1给出,在矩形区域(75,200)(50,150)内画出海底曲面的图形;若船的吃水深度为5英尺,请问在矩形区域(75,200)(50,150)里的哪些地方船要避免进入。表1海域数据表x129140103.588185.5195105y7.5141.52314722.5137.585.5z4868688x157.5107.57781162162117.5y-6.5-81356.5-66.584-33.5z9988949B题设从某一实验中测得2个变量x和y的一组数据表2所示。表2变量关系数据表i123456789ix1345678910iy1054211234求一代数多项式曲线,使其最好地拟合这组给定数据。要求:请用多项式和指数模型进行曲线拟合,观察其结果的精度,再直接调用polyfit命令进行比较。C题考察函数21(),[5,5]1fxxx(1)设计插值方案,构造龙格(Runge)现象。2(2)设计插值方法消除龙格(Runge)现象,要求至少用分段线性插值和分段三次插值两种算法进行设计,并比较两种算法的精度。D题已知数据(表3)表3数据表ix0.561600.562800.564010.56521iy0.827410.826590.825770.81495要求:试用Lagrange插值多项式求0.5626,0.5635,0.5645x时的函数近似值.说明:实验过程应包括对问题的简要分析、求解方法、求解步骤、程序及其必要的图表等内容。实验过程:A题的实验过程1、实验中问题的重述在某海域测得一些点(,)xy处的水深由表1给出,在矩形区域(75,200)(50,150)内画出海底曲面的图形;若船的吃水深度为5英尺,请问在矩形区域(75,200)(50,150)里的哪些地方船要避免进入。2、对实验的分析2.1对软件的选择对于此题来说,利用Matlab10.0软件编程计算。2.2对“如何画海底曲面图形”的分析要画出海底曲面图形,首先就应该有该海域海底是平滑的假设;然后,由于测量点是散乱分布的,所以在平面上先作出测量点的分布图;其次,利用二维插值方法griddadt函数补充一些点的水深;最后,再利用surf函数作出海底曲面图。2.3对“哪些地方需避免进入”的分析由于船只的吃水深度为5,所以在水深为5以下的区域都是危险区域,船只都需避免。于是,先作出等高线图,再通过等高线图得到水深小于5的区域。2.4对结果呈现的分析由于题中明确要求画出海底曲面,所以利用插值,以曲面图显示结果。题目中还要求给出哪些地方需要避免进入,所以可以利用图形显示出那一部分区域,也可以给出该危险区域中点的坐标范围。3、实验求解过程(程序见附录)3首先,利用plot函数,画出所给14个点的位置分布图,分布图见下图1;然后,利用meshgrid函数,生成一些采样点,便于接下来根据这些采样点绘制出整个海底曲面图形;其次,利用griddadt函数进行插值;再次,利用surf函数,画出经过插值后的海底曲面图形,见下图2。6080100120140160180200-100-50050100150xy原始14个散点数据的平面图图1测量点的分布图50100150200-1000100200-12-10-8-6-4-2x插值后的海底曲面(*为原始数据散点位置)yz高度-10-9-8-7-6-5-4图2海底曲面图最后,利用contour函数,画出海水的等高线图,见下图3。并且,利用clabel函数标记出各个等高线的水深高度。4-10-9-9-9-9-8-8-8-8-8-8-8-8-7-7-7-7-7-7-7-6-6-6-6-6-6-5-5-5-5-5-4-4-4-4等高线图(-5至0的区域为危险区域)80100120140160180200-50050100150图3等高线图于是得到该危险区域为:图3中水深为-5的等高线区域内部所有的位置。B题的实验过程一、用多项式拟合曲线观察这一实验中测得的变量x、y的数据并进行分析,当i=[1,5]时y随x的增大而减小,当i=[6,9]时,y随x的增大呈线性增大。那么我们就可以采取n=2次多项式进行曲线拟合,然后观察图像的变化及其精度,并分析。用matlab多项式拟合曲线图像如下:图4二次多项式拟合图像图5三次多项式拟合图像5图6四次多项式拟合图像图7五次多项式拟合图像图8六次多项式拟合图像图9七次多项式拟合图像通过上面六个拟合图像我们可以观察到当拟合多项式的次数越高,我们就猜想:拟合多项式的次数越高那么拟合曲线的精度就越高,这一结论是否正确呢?如果一直这样下去会产生什么样的情况?图10八次多项式拟合图像从上一图像我们可以看出,在x=[1,3]这个区间时,图像幅度变化的非常大。但是我们可以观察到下图是当n=12时的图像,可以看出当x=[910]范围内时变化幅度大。6图11次多项式拟合图像尽管曲线会因n的取值的增大,会不同程度的发生变化。但是通过上面的图像我们可以总结出当多项式的次数越高时,曲线穿过点的个数是越多的,当n=8时,基本上曲线能穿过每一个点,当n=12时也一样。二、用polyfit命令拟合曲线我们直接调用命令进行作图:p=polyfit(x,y,2)和p=polyfit(x,y,8),分别得到以下结果:图12polyfit(x,y,2)拟合图像图13polyfit(x,y,8)拟合图像我们发现直接用polyfit命令非常方便,只需要改变维数就行了,结果和多项式拟合的图像一样,因此我们可以用这个命令来判断上述的结论,当n=100时拟合图像如下:7图14polyfit(x,y,100)拟合图像结论:并非多项式拟合的次数越高越好,比如当n=13时图像就如下图:图15polyfit(x,y,13)拟合图像三、用指数模型拟合曲线同样的道理,指数模型拟合也是一样,得到以下拟合图像:8C题的实验过程一、实验分析(1)、要求构造龙格现象,则采用多项式插值的方法呈现。(2)、针对于(1)中的龙格现象,采用分段线性插值和分段三次插值的两种算法进行改进。二、实验求解过程(代码见附录)(1)、利用多项式插值的方法对函数21()(55)1fxxx进行插值,分别取5、10个点进行插值进而构造出Runge现象,并呈现图像。(2)、分别采用分段线性插值和分段三次插值的两种算法对(1)中的Runge现象进行改进计算。并呈现图像作比较。三、实验结果(1)MATLAB编程实现Runge现象的呈现如下图:-5-4-3-2-1012345-0.500.511.52Runge现象图(2)分别采用分段线性插值和分段三次插值的两种算法对(1)中的Runge现象进行改进计算。并呈现图像如下图:-5-4-3-2-101234500.10.20.30.40.50.60.70.80.91分段线性图红色:插值蓝色:原值-5-4-3-2-101234500.10.20.30.40.50.60.70.80.91分段三次插值图红色:插值蓝色:原值由图像中的关系可以看出,分段三次插值方法的误差相对低些。9D题的实验过程一、实验分析针对问题试用Lagrange插值多项式求0.56260.56350.5645x、、时的函数近似值。首先求出Lagrange插值基函数的值,然后输入表格的数据及插值点,最后计算插值点所对应的函数值。二、实验求解过程用Matlab编程可以求出插值点的函数值。Step1:在M文件中编写程序,求出ix和iy的字符长度;Step2:判断m与n是否相等,如果不等,程序结束,反之继续编写;Step3:用for循环求插值基函数的值;Step4:在命令窗口中调用函数求出插值点对应的函数值;具体求解的流程图如下:三、实验求解结果0.5626,0.5635,0.5645x时的函数近似值分别为:0.8265,0.8268,0.8231。开始求出x,y的长度m,n判断m与n是否相等,如果相等用for循环求插值基函数的值在命令窗口中调用M文件,求出插值点对应的函数值结束10附录A题实验程序clcclearx0=[129140103.588185.5195105157.5107.57781162162117.5];y0=[7.5141.52314722.5137.585.5-6.5-81356.5-66.584-33.5];z0=-[48686889988949];%原始数据x0、y0、z0[x,y]=meshgrid(75:5:200,-50:5:150);z=griddata(x0,y0,z0,x,y,'v4');%散点数据的插值函数griddata()figure(1)plot(x0,y0,'r*')figure(2)plot3(x0,y0,z0,'r*');%已知节点的三维散点图holdonsurf(x,y,z)%画出经插值的图形figure(3)[c,h]=contour(x,y,z);%画等高线clabel(c,h)%标明等高线的高程,高程为5的区域避免进入B题实验程序clcclear%%数据文件(data)的读取[vd]=xlsread('data.xls');x=v(2,:);y=v(3,:);n=length(x);%读取文件中的点的个数%%最小二乘法symsaby1=a*n+b*sum(x)-sum(y);y2=a*sum(x)+b*sum(x.^2)-sum(x.*y);[ab]=solve(y1,y2,'a','b')%误差的计算y1=a+b.*x;formatlongw1=sum(abs(y1-y))/sum(y)%%指数模型的拟合%y=A*exp(B/x)%%matlab内部函数的命令a1=polyfit(x,y,1);%误差的计算y2=a1(1).*x+a1(2);w2=sum(abs(y2-y))/sum(y)C题实验程序function[]=Runge(a1,a2,n)%%(1)构造龙格现象%n:构造n次的多项式插值x1=a1:(a2-a1)/n:a2;y1=1./(1+x1.^2)

1 / 14
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功