MATLAB实验三 定积分的近似计算.doc

上传人:飞****9 文档编号:135603951 上传时间:2020-06-17 格式:DOC 页数:9 大小:278.50KB
返回 下载 相关 举报
MATLAB实验三 定积分的近似计算.doc_第1页
第1页 / 共9页
MATLAB实验三 定积分的近似计算.doc_第2页
第2页 / 共9页
MATLAB实验三 定积分的近似计算.doc_第3页
第3页 / 共9页
MATLAB实验三 定积分的近似计算.doc_第4页
第4页 / 共9页
MATLAB实验三 定积分的近似计算.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《MATLAB实验三 定积分的近似计算.doc》由会员分享,可在线阅读,更多相关《MATLAB实验三 定积分的近似计算.doc(9页珍藏版)》请在金锄头文库上搜索。

1、实验三 定积分的近似计算一、问题背景与实验目的利用牛顿莱布尼兹公式虽然可以精确地计算定积分的值,但它仅适用于被积函数的原函数能用初等函数表达出来的情形如果这点办不到或者不容易办到,这就有必要考虑近似计算的方法在定积分的很多应用问题中,被积函数甚至没有解析表达式,可能只是一条实验记录曲线,或者是一组离散的采样值,这时只能应用近似方法去计算相应的定积分本实验将主要研究定积分的三种近似计算算法:矩形法、梯形法、抛物线法对于定积分的近似数值计算,Matlab有专门函数可用二、相关函数(命令)及简介1 sum(a):求数组a的和2 format long:长格式,即屏幕显示15位有效数字(注:由于本实验

2、要比较近似解法和精确求解间的误差,需要更高的精度)3double():若输入的是字符则转化为相应的ASCII码;若输入的是整型数值则转化为相应的实型数值4 quad():抛物线法求数值积分格式: quad(fun,a,b) ,注意此处的fun是函数,并且为数值形式的,所以使用*、/、等运算时要在其前加上小数点,即 .*、./、.等例:Q = quad(1./(x.3-2*x-5),0,2);5 trapz():梯形法求数值积分格式:trapz(x,y)其中x为带有步长的积分区间;y为数值形式的运算(相当于上面介绍的函数fun)例:计算x=0:pi/100:pi;y=sin(x);trapz(x

3、,y)6 dblquad():抛物线法求二重数值积分格式:dblquad(fun,xmin,xmax,ymin,ymax),fun可以用inline定义,也可以通过某个函数文件的句柄传递例1:Q1 = dblquad(inline(y*sin(x), pi, 2*pi, 0, pi)顺便计算下面的Q2,通过计算,比较Q1 与Q2结果(或加上手工验算),找出积分变量x、y的上下限的函数代入方法Q2 = dblquad(inline(y*sin(x), 0, pi, pi, 2*pi)例2:Q3 = dblquad(integrnd, pi, 2*pi, 0, pi)这时必须存在一个函数文件int

4、egrnd.m:function z = integrnd(x, y) z = y*sin(x);7fprintf(文件地址,格式,写入的变量):把数据写入指定文件例:x = 0:.1:1;y = x; exp(x);fid = fopen(exp.txt,w); %打开文件fprintf(fid,%6.2f %12.8fn,y); %写入fclose(fid) %关闭文件8 syms 变量1 变量2 :定义变量为符号9sym(表达式):将表达式定义为符号解释:Matlab中的符号运算事实上是借用了Maple的软件包,所以当在Matlab中要对符号进行运算时,必须先把要用到的变量定义为符号10

5、 int(f,v,a,b):求f关于v积分,积分区间由a到b11 subs(f,x,a):将 a 的值赋给符号表达式 f 中的 x,并计算出值若简单地使用subs(f),则将f的所有符号变量用可能的数值代入,并计算出值三、实验内容1 矩形法根据定积分的定义,每一个积分和都可以看作是定积分的一个近似值,即在几何意义上,这是用一系列小矩形面积近似小曲边梯形的结果,所以把这个近似计算方法称为矩形法不过,只有当积分区间被分割得很细时,矩形法才有一定的精确度针对不同的取法,计算结果会有不同,我们以为例(取),(1) 左点法:对等分区间,在区间上取左端点,即取,0.78789399673078,理论值,此

6、时计算的相对误差(2)右点法:同(1)中划分区间,在区间上取右端点,即取,0.78289399673078,理论值,此时计算的相对误差(3)中点法:同(1)中划分区间,在区间上取中点,即取,0.78540024673078,理论值,此时计算的相对误差如果在分割的每个小区间上采用一次或二次多项式来近似代替被积函数,那么可以期望得到比矩形法效果好得多的近似计算公式下面介绍的梯形法和抛物线法就是这一指导思想的产物2 梯形法等分区间,相应函数值为()曲线上相应的点为()将曲线的每一段弧用过点,的弦(线性函数)来代替,这使得每个上的曲边梯形成为真正的梯形,其面积为,于是各个小梯形面积之和就是曲边梯形面积

7、的近似值,即,称此式为梯形公式仍用的近似计算为例,取,0.78539399673078,理论值,此时计算的相对误差很显然,这个误差要比简单的矩形左点法和右点法的计算误差小得多3 抛物线法由梯形法求近似值,当为凹曲线时,它就偏小;当为凸曲线时,它就偏大若每段改用与它凸性相接近的抛物线来近似时,就可减少上述缺点,这就是抛物线法将积分区间作等分,分点依次为,对应函数值为(),曲线上相应点为()现把区间上的曲线段用通过三点,的抛物线来近似代替,然后求函数从到的定积分:由于,代入上式整理后得同样也有将这个积分相加即得原来所要计算的定积分的近似值:,即这就是抛物线法公式,也称为辛卜生(Simpson)公式

8、仍用的近似计算为例,取,=0.78539816339745,理论值,此时计算的相对误差4. 直接应用Matlab命令计算结果(1) 数值计算方法1:int(1/(1+x2),x,0,1) (符号求积分)方法2:quad(1./(1+x.2),0,1) (抛物线法求数值积分)方法3:x=0:0.001:1; y=1./(1+x.2);trapz(x,y) (梯形法求数值积分)(2)数值计算方法1:int(int(x+y2,y,-1,1),x,0,2) (符号求积分)方法2:dblquad(inline(x+y2),0,2,-1,1) (抛物线法二重数值积分)四、自己动手1 实现实验内容中的例子,

9、即分别采用矩形法、梯形法、抛物线法计算,取,并比较三种方法的精确程度2 分别用梯形法与抛物线法,计算,取并尝试直接使用函数trapz()、quad()进行计算求解,比较结果的差异3 试计算定积分(注意:可以运用trapz()、quad()或附录程序求解吗?为什么?)4 将的近似计算结果与Matlab中各命令的计算结果相比较,试猜测Matlab中的数值积分命令最可能采用了哪一种近似计算方法?并找出其他例子支持你的观点5 通过整个实验内容及练习,你能否作出一些理论上的小结,即针对什么类型的函数(具有某种单调特性或凹凸特性),用某种近似计算方法所得结果更接近于实际值?6 学习fulu2sum.m的程

10、序设计方法,尝试用函数 sum 改写附录1和附录3的程序,避免for 循环五、附录附录1:矩形法(左点法、右点法、中点法)(fulu1.m)format longn=100;a=0;b=1;inum1=0;inum2=0;inum3=0;syms x fxfx=1/(1+x2);for i=1:nxj=a+(i-1)*(b-a)/n; %左点xi=a+i*(b-a)/n; %右点fxj=subs(fx,x,xj); %左点值fxi=subs(fx,x,xi); %右点值fxij=subs(fx,x,(xi+xj)/2); %中点值 inum1=inum1+fxj*(b-a)/n; inum2=

11、inum2+fxi*(b-a)/n; inum3=inum3+fxij*(b-a)/n;endinum1inum2inum3integrate=int(fx,0,1)integrate=double(integrate)fprintf(The relative error between inum1 and real-value is about: %dnn,. abs(inum1-integrate)/integrate)fprintf(The relative error between inum2 and real-value is about: %dnn,.abs(inum2-inte

12、grate)/integrate) fprintf(The relative error between inum3 and real-value is about: %dnn,. abs(inum3-integrate)/integrate)附录2:梯形法(fulu2.m)format longn=100;a=0;b=1;inum=0;syms x fxfx=1/(1+x2);for 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); inum=inum+(fxj+fxi)*(b-a)

13、/(2*n);endinumintegrate=int(fx,0,1)integrate=double(integrate)fprintf(The relative error between inum and real-value is about: %dnn,.abs(inum-integrate)/integrate)附录2sum:梯形法(fulu2sum.m),利用求和函数,避免for 循环format longn=100;a=0;b=1;syms x fxfx=1/(1+x2);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=(fxi+fxj)/2*(b-a)/n; %梯形面积inum=sum(f) %加和梯形面积求解integrate=int(fx,0,1)integrate=double(integrate)fprintf(The relative error between inum and real-value is about: %dnn,. abs(inum-integrate)/integrate)附录3:抛物线法(fulu3.m)format longn=100;a=0;b=1;in

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号