《matlab实验报告_4.docx》由会员分享,可在线阅读,更多相关《matlab实验报告_4.docx(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、matlab实验报告Matlab实验报告定积分的近似计算学生姓名:学号:专业:数学与应用数学专业数学实验报告实验序号:1001114030日期:2021年10月20日班级应一姓名陈璐学号1001114030实验名称:定积分的近似运算问题背景描绘:利用牛顿莱布尼茨公式固然能够准确地计算定积分的值,但它仅合适于被积分函数的原函数能用初等函数表达出来的情形。假如这点办不到或不容易办到,这就有必要考虑近似计算的方法。在定积分的很多应用问题中,被积函数甚至没有解析表达式,可能只是一条实验记录曲线,或者是一组离散的采样值,这时只能应用近似方法去计算相应的定积分。实验目的:本实验将主要研究定积分的三种近似计
2、算算法:矩形法、梯形法、抛物线发。对于定积分的近似数值计算,Matlab有专门函数可用。实验原理与数学模型:1.suma:求数组a的和。2.formatlong:长格式,即屏幕显示15位有效数字。3.double:若输入的是字符则转化为相应的ASCII码;若输入的是整型数之则转化为相应的实型数值。4.quad:抛物线法求数值积分。格式:quadfun,a,b。此处的fun是函数,并且为数值形式,所以使用*、/、等运算时要在其前加上小数点。5.trapz():梯形法求数值积分。格式:trapzx,y。其中x为带有步长的积分区间;y为数值形式的运算。6.fprintf文件地址,格式,写入的变量:把
3、数据写入指定文件。7.syms变量1变量2:定义变量为符号。8.sym表达式:将表达式定义为符号。9.intf,v,a,b:求f关于v积分,积分区间由a到b。10.subsf,x,a:将a的值赋给符号表达式f中的x,并计算出值。若简单地使用subsf,则将f的所有符号变量用可能的数值代入,并计算出值。实验所用软件及版本:Matlab7.0.1主要内容要点:1.矩形法:ibaniixfdxxf?=?=1)()(?1左点法:对等分区间bxinabaxxaxni=xj=a+(i-1)*(b-a)/n;xi=a+i*(b-a)/n;fxj=subs(fx,x,xj);fxi=subs(fx,x,xi)
4、;inum=inum+(fxj+fxi)*(b-a)/(2*n);endinumintegrate=int(fx,1,2)integrate=double(integrate)fprintf(Therelativeerrorbetweeninumandreal-valueisabout:%gnn,.abs(inum-integrate)/integrate)运行结果:inum=0.69315152080005integrate=log(2)integrate=0.69314718055995Therelativeerrorbetweeninumandreal-valueisabout:6.26
5、164e-006(2)抛物线法:formatlong%2*n=240;n=120;a=1;b=2;symsxfxfx=1/x;fori=1:nx0=a+(2*i-2)*(b-a)/(2*n);x1=a+(2*i-1)*(b-a)/(2*n);x2=a+(2*i-0)*(b-a)/(2*n);fx0=subs(fx,x,x0);fx1=subs(fx,x,x1);fx2=subs(fx,x,x2);Si=(fx0+4*fx1+fx2)*(b-a)/(6*n);inum=inum+Si;endinumintegrate=int(fx,1,2);integrate=double(integrate)
6、fprintf(抛物线法的相对误差为:%en,abs(inum-integrate)/integrate)%将inum输入成了abs导致运行出错运行结果:inum=0.69314718056936integrate=0.69314718055995抛物线法的相对误差为:1.358861e-011 (3)Trapz法:x=1:1/120:2;y=1./x;trapz(x,y)运行结果:ans=0.69315152080005 (4)quad()法:quad(1./x,1,2)运行结果:ans=0.693147199862972、试计算定积分?+0sindxxx.注意:能够运用trapz、quad
7、或附录程序求解吗?为何?)symsxf=sin(x)/x;I=int(f,0,inf)%该题积分上限为正无穷,故只能用符号运算,而不能用trapz()、quad()或附录程序运行结果:I=1/2*pi3、学习fuluBsum.m的程序设计方法,尝试用函数sum改写矩阵方法和抛物线法的程序,避免for循环.formatlongn=120;a=1;b=2;symsxfxfx=1/x;%第一次操作将fx的值当作了1,运算出错i=1:n;xj=a+(i-1)*(b-a)/n;xi=a+i*(b-a)/n;fxj=subs(fx,x,xj);fxi=subs(fx,x,xi);f=(fxj+fxi)/2
8、*(b-a)/n;inum=sum(f)integrate=int(fx,1,2)integrate=double(integrate)fprintf(Therelativeerrorbetweeninumandreal-valueisabout:%gnn,.abs(inum-integrate)/integrate)%第二个连接符号打成了下划线运行结果:inum=0.69315152080005integrate=log(2)integrate=0.69314718055995Therelativeerrorbetweeninumandreal-valueisabout:6.26164e-006考虑与深化:这几个题其实都不算难,但是由于是第一次运用所学Matlab知识,很多地方只能照着书本才能写出来程序,对各种方法都很陌生,需要加强运用。另外,有些程序编译较简单,但是出现了些低级错误,比方拼写出错,或是符号打成了中文符号。总的来讲还需加强温习这方面的内容,最好能运用Matlab中近似计算积分的知识解决积分中碰到的难题。