第7章 MATLAB数值积分与数值微分.ppt_第1页
第7章 MATLAB数值积分与数值微分.ppt_第2页
第7章 MATLAB数值积分与数值微分.ppt_第3页
第7章 MATLAB数值积分与数值微分.ppt_第4页
第7章 MATLAB数值积分与数值微分.ppt_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第7章 MATLAB数值积分与数值微分,MATLAB数值积分 MATLAB数值微分,7.1 数值积分 7.1.1 数值积分基本原理 求解定积分的数值方法多种多样,如简单方法:梯形法、辛普生(Simpson)法、牛顿柯特斯(Newton-Cotes)法等方法。它们的基本思想都是将整个积分区间a,b分成n个子区间xi,xi+1,i=1,2,n,其中x1=a,xn+1=b。求定积分问题就分解为求和问题。,7.1.2 数值积分的实现方法 1变步长辛普生法 基于变步长辛普生法,MATLAB给出了quad函数和quadl函数来求定积分。函数的调用格式为: I,n=quad(fname,a,b,tol,tr

2、ace) I,n=quadl(fname,a,b,tol,trace) 其中,fname是被积函数名。a和b分别是定积分的下限和上限。tol用来控制积分精度,默认时取tol=10-6。trace控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,默认时取trace=0。返回参数I即定积分值,n为被积函数的调用次数。,例7-1 求定积分。 (1) 建立被积函数文件fesin.m。 function f=fesin(x) f=exp(-0.5*x).*sin(x+pi/6); (2) 调用数值积分函数quad求定积分。 S,n=quad(fesin,0,3*pi) S = 0.9008 n

3、 = 77,也可不建立关于被积函数的函数文件,而使用语句函数(内联函数)求解,命令如下: g=inline(exp(-0.5*x).*sin(x+pi/6); %定义一个语句函数 S,n=quad(g,0,3*pi) %注意函数名不加号 S = 0.9008 n = 77,例7-2 分别用quad函数和quadl函数求的近似值,并在相同的积分精度下,比较函数的调用次数。 调用函数quad求定积分: format long fx=inline(exp(-x); I,n=quad(fx,1,2.5,1e-10) I = 0.285794442547663 n = 65,调用函数quadl求定积分:

4、 format long fx=inline(exp(-x); I,n=quadl(fx,1,2.5,1e-10) I = 0.285794442548811 n = 18 format short,2高斯-克朗罗德法 MATLAB提供了基于自适应高斯-克朗罗德法的quadgk函数来求振荡函数的定积分。该函数的调用格式为 I,err=quadgk(fname,a,b) 其中,err返回近似误差范围,其他参数的含义和用法与quad函数相同。积分上下限可以是Inf或Inf,也可以是复数。如果积分上下限是复数,则quadgk在复平面上求积分。,例7-3 求定积分。 (1) 被积函数文件fx.m。 f

5、unction f=fx(x) f=x.*sin(x)./(1+cos(x).*cos(x); (2) 调用函数quadgk求定积分。 I=quadgk(fx,0,pi) I = 2.4674,3梯形积分法 在科学实验和工程应用中,函数关系往往是不知道的,只有实验测定的一组样本点和样本值,这时,人们就无法使用quad等函数计算其定积分。在MATLAB中,对由表格形式定义的函数关系的求定积分问题用梯形积分函数trapz。该函数调用格式如下: I=trapz(X,Y) 其中,向量X,Y定义函数关系Y=f(X)。,例7-4 用trapz函数计算定积分。 命令如下: X=1:0.01:2.5; Y=e

6、xp(-X); %生成函数关系数据向量 trapz(X,Y) ans = 0.2858,7.1.3 多重定积分的数值求解 MATLAB提供的dblquad函数用于求二重积分的数值解,triplequad函数用于求三重积分的数值解。函数的调用格式为 dblquad(fun,a,b,c,d,tol) triplequad(fun,a,b,c,d,e,f,tol) 其中,fun为被积函数,a,b为x的积分区域,c,d为y的积分区域,e,f为z的积分区域,参数tol的用法与函数quad完全相同。,例7-5 计算二重定积分(1)建立一个函数文件fxy.m:function f=fxy(x,y)f=exp

7、(-x.2/2).*sin(x.2+y); (2)调用dblquad函数求解。I=dblquad(fxy,-2,2,-1,1)I = 1.5745,如果使用inline函数,则命令如下:f=inline(exp(-x.2/2).*sin(x.2+y),x,y);I=dblquad(f,-2,2,-1,1)I = 1.5745,例7-6 计算三重定积分命令如下:fxyz=inline(4*x.*z.*exp(-z.*z.*y-x.*x),x,y,z);triplequad(fxyz,0,pi,0,pi,0,1,1e-7)ans= 1.7328,7.2 数值微分 7.2.1 数值差分与差商 7.2

8、.2 数值微分的实现 在MATLAB中,没有直接提供求数值导数的函数,只有计算向前差分的函数diff,其调用格式为: DX=diff(X):计算向量X的向前差分,DX(i)=X(i+1)-X(i),i=1,2,n-1。 DX=diff(X,n):计算X的n阶向前差分。例如,diff(X,2)=diff(diff(X)。 DX=diff(A,n,dim):计算矩阵A的n阶差分,dim=1时(缺省状态),按列计算差分;dim=2,按行计算差分。,例7-8 用不同的方法求函数f(x)的数值导数,并在同一个坐标系中做出f(x)的图像。 程序如下: f=inline(sqrt(x.3+2*x.2-x+12)+(x+5).(1/6)+5*x+2); g=inline(3*x.2+4*x-1)./sqrt(x.3+2*x.2-x+12)/2+1/6./(x+5).(5/6)+5); x=-3:0.01:3; p=polyfit(x,f(x),5); %用5次多项式p拟合f(x) dp=polyder(p); %对拟合多项式p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论