资源描述:
《《用matlab编程》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验二定积分的近似计算数学实验问题背景和实验目的实验二、定积分的近似计算定积分计算的基本公式是牛顿-莱布尼兹公式。但当被积函数的原函数不知道时,如何计算?这时就需要利用近似计算。特别是在许多实际应用中,被积函数甚至没有解析表达式,而是一条实验记录曲线,或一组离散的采样值,此时只能用近似方法计算定积分。本实验主要研究定积分的三种近似计算算法:矩形法、梯形法和抛物线法。同时介绍Matlab计算定积分的相关函数。矩形法定积分的定义:实验二、定积分的近似计算矩形法n充分大,x充分小定积分的近似:通常我们取左点法右点法中点法点可以任意
2、选取,常见的取法有:左端点,右端点和中点。步长节点右点法:中点法:左点法:左点法、右点法和中点法相应的Matlab程序见fuluA.m解:矩形法举例==>h=1/100=0.01,xi=i*h,a=0,b=1,n=100例:用不同的矩形法计算下面的定积分(取n=100),并比较这三种方法的相对误差。左点法:右点法:中点法:(i=0,1,2,...,100)理论值:左点法相对误差:误差分析矩形法举例右点法相对误差:中点法相对误差:不同的方法有不同的计算精度有没有更好的近似计算定积分的方法?定积分几何意义曲边小梯形的面积可以由直
3、边小梯形的面积来近似整个曲边梯形的面积:梯形法如果我们n等分区间[a,b],即令:则==>梯形公式梯形法梯形公式与中点公式有什么区别?Matlab程序见fuluB.m解:==>例:用梯形法计算下面定积分(取n=100),并计算相对误差梯形法举例a=0,b=1,n=100,f(x)=1/(1+x2)==>h=1/100=0.01,xi=i*h,yi=f(xi)相对误差:2n等分区间[a,b],得该直线用抛物线代替,计算精度是否会更好?计算每个节点上的函数值:抛物线法在区间[x0,x2]上,用过以下三点的抛物线来近似原函数f(x)
4、。设过以上三点的抛物线方程为:则在区间[x0,x2]上,有y=x2+x+=p1(x)抛物线法同理可得:相加即得:抛物线法整理后可得:或辛卜生(Simpson)公式抛物线法公式抛物线法Matlab程序见fuluC.m==>例:用抛物线法计算下面定积分(取n=100),并计算相对误差解:a=0,b=1,n=100,yi=f(xi)=1/(1+xi2)相对误差:抛物线法梯形法:trapztrapz(x,y)x为分割点(节点)组成的向量,y为被积函数在节点上的函数值组成的向量。Matlab近似计算定积分的相关函数Matlab计算
5、定积分函数介绍前面的做法例:用梯形法计算下面定积分(取n=100解:a=0,b=1,n=100,yi=f(xi)=1/(1+xi2)>>x=0:1/100:1;>>y=1./(1+x.^2);>>trapz(x,y)trapz函数trapz(x,1./(1+x.^2))trapz举例quad(f,a,b,tol)f=f(x)为被积函数,[a,b]为积分区间,tol为计算精度将自变量看成是向量抛物线法:quad不用自己分割积分区间可以指定计算精度,若不指定,缺省精度是10-6精度越高,函数运行的时间越长此处的函数f是数值形式,应
6、该使用数组运算,即点运算:.*,./,.,.^注:抛物线法解:>>quad('1./(1+x.^2)',0,1)>>quad('1./(1+x.^2)',0,1,1e-10)>>quad('1./(1+x.^2)',0,1,1e-16)函数表达式一定要用单引号括起来!涉及的运算一定要用数组运算!例:用quad计算定积分:quad举例抛物线法计算二重积分:dblquaddblquad(f,a,b,c,d,tol)tol为计算精度,若不指定,则缺省精度为10-6f(x,y)可以由inline定义,或通过一个函数句柄传递[a,b
7、]是第一积分变量的积分区间,[c,d]是第二积分变量的积分区间按字母顺序,大写字母排在小写字母的前面二重积分的计算>>f=inline('4*x*y+3*y^2');>>I=dblquad(f,-1,1,0,2)f(x,y)中关于第一自变量的运算是数组运算,即把x看成是向量,y看成是标量。也可以全部采用数组运算例2:计算二重积分>>dblquad(inline('4*x*y+3*x^2'),-1,1,0,2)>>dblquad(inline('4*x*y+3*x.^2'),-1,1,0,2)X例1:计算二重积分dblquad
8、举例例:计算二重积分>>dblquad(@(x,y)4*x*y+3*x.^2,-1,1,0,2)指定x、y分别是第一和第二积分变量>>dblquad(inline('4*x*y+3*x.^2'),-1,1,0,2)被积函数f(x,y)的另一种定义方法:匿名函数>>dblqua