第10章 数值积分计算_第1页
第10章 数值积分计算_第2页
第10章 数值积分计算_第3页
第10章 数值积分计算_第4页
第10章 数值积分计算_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、数值积分计算数值积分计算 吴鹏吴鹏, MATLAB从零到进阶从零到进阶. 2022-4-29数值积分计算吴鹏(rocwoods)MATLAB从零到进阶从零到进阶数值积分计算数值积分计算 吴鹏吴鹏, MATLAB从零到进阶从零到进阶. 2022-4-29主要内容主要内容矩形区域积分以及离散数据积分矩形区域积分以及离散数据积分 含参数的积分含参数的积分一般区域二重、三重积分一般区域二重、三重积分一般区域一般区域n重积分重积分 蒙特卡洛法计算蒙特卡洛法计算n重积分重积分 数值积分计算数值积分计算 吴鹏吴鹏, MATLAB从零到进阶从零到进阶. 2022-4-29第一节矩形区域积分以及离散数第一节矩形

2、区域积分以及离散数据积分据积分 数值积分计算数值积分计算 吴鹏吴鹏, MATLAB从零到进阶从零到进阶. 2022-4-29一、一、 矩形区域积分矩形区域积分积分上下限是常数,分单重、二重、三重三种情况积分上下限是常数,分单重、二重、三重三种情况1. 单重单重quad (自适应自适应Simpson 积分积分)quadl (自适应自适应Gauss-Lobatto积分,最常用积分,最常用 )quadgk (自适应自适应 Gauss-Kronrod积分,尤其适合震荡积分、含奇点的积分,尤其适合震荡积分、含奇点的积分;从积分;从R2007b开始支持开始支持) 具体用法参见书中具体用法参见书中【例例10

3、.1-1】 2.二重情形二重情形一般二重积分可以用下面两个函数解决:一般二重积分可以用下面两个函数解决:dblquadquad2d (R2009a开始支持,不仅可以求矩形区域二重积分,还可以开始支持,不仅可以求矩形区域二重积分,还可以求一般区域二重积分求一般区域二重积分)具体用法参见书中具体用法参见书中【例例10.1-2】 数值积分计算数值积分计算 吴鹏吴鹏, MATLAB从零到进阶从零到进阶. 2022-4-29一一 、矩形区域积分、矩形区域积分3. 三重情形三重情形MATLAB中可以利用中可以利用triplequad函数求解长方体区域的三重函数求解长方体区域的三重积分。积分。具体用法参见书

4、中具体用法参见书中【例例10.1-3】4. 向量化积分向量化积分所谓向量化积分,是指被积函数含有参数,需要对参数的一所谓向量化积分,是指被积函数含有参数,需要对参数的一系列值求出相应的积分。向量话积分可以用系列值求出相应的积分。向量话积分可以用quadv函数函数 。具体用法参见书中具体用法参见书中【例例10.1-4】数值积分计算数值积分计算 吴鹏吴鹏, MATLAB从零到进阶从零到进阶. 2022-4-29二、二、 离散数据积分离散数据积分离散数据积分的函数离散数据积分的函数MATLAB只有只有trapz函数,是针对一重情形的,函数,是针对一重情形的,如果是二重情形,需要自己编写,其中会用到如

5、果是二重情形,需要自己编写,其中会用到trapz函数函数 。用法示例参见书中用法示例参见书中【例例10.1-5】 以及以及【例例10.1-6】 数值积分计算数值积分计算 吴鹏吴鹏, MATLAB从零到进阶从零到进阶. 2022-4-29第二节第二节 含参数的积分含参数的积分 数值积分计算数值积分计算 吴鹏吴鹏, MATLAB从零到进阶从零到进阶. 2022-4-29在解决实际问题的时候我们常要求解一些带参数的积分问题,在解决实际问题的时候我们常要求解一些带参数的积分问题,这涉及到参数的传递,总的说来有以下几种方法可以求解:这涉及到参数的传递,总的说来有以下几种方法可以求解:用用inline+n

6、um2str方法方法(MATLAB7.0以前版本使用,以前版本使用,7.0以后不以后不推荐使用推荐使用)利用匿名函数实现利用匿名函数实现利用嵌套函数实现利用嵌套函数实现利用积分函数本身传递参数利用积分函数本身传递参数这几种方法的具体实现办法可以参见这几种方法的具体实现办法可以参见【例例10.2-1】 。数值积分计算数值积分计算 吴鹏吴鹏, MATLAB从零到进阶从零到进阶. 2022-4-29第三节第三节 一般区域二重、三重积分一般区域二重、三重积分 数值积分计算数值积分计算 吴鹏吴鹏, MATLAB从零到进阶从零到进阶. 2022-4-29一、一、 概要概要一般区域上的二重积分,低版本的一般

7、区域上的二重积分,低版本的MATLAB向来支持不好,向来支持不好,7.X版本之前不能通过简单的形式直接求取一般区域上的的二重积版本之前不能通过简单的形式直接求取一般区域上的的二重积分,往往要借助广泛流传的分,往往要借助广泛流传的NIT工具箱(数值积分工具箱)来实工具箱(数值积分工具箱)来实现。后来到了现。后来到了7.X版本,版本,MATLAB引入了匿名函数结构,引入了匿名函数结构,dblquad的的被积函数可以是匿名函数的形式,利用匿名函数结构,通过适当改被积函数可以是匿名函数的形式,利用匿名函数结构,通过适当改写被积函数。写被积函数。dblquad可以求解一般区域上的二重积分。但这种改可以求

8、解一般区域上的二重积分。但这种改写就是将积分区域表示成逻辑表达式形式并与被积函数相乘,本质写就是将积分区域表示成逻辑表达式形式并与被积函数相乘,本质上还是上还是 计算的矩形区域的积分。计算的矩形区域的积分。仔细分析仔细分析dblquad的帮助文档中求一般区域二重积分的例子就的帮助文档中求一般区域二重积分的例子就会发现,这种办法是把原被积函数外推到了一个矩形区域上来实现会发现,这种办法是把原被积函数外推到了一个矩形区域上来实现的,该矩形区域包含了被积区域,在被积区域上,外推函数取值和的,该矩形区域包含了被积区域,在被积区域上,外推函数取值和原函数一样,而在矩形区域内被积区域外的那部分,外推函数取

9、值原函数一样,而在矩形区域内被积区域外的那部分,外推函数取值都为都为0.这样外推函数在矩形区域上积分的结果就等于原被积函数在这样外推函数在矩形区域上积分的结果就等于原被积函数在被积区域的结果。这种数学上简单的变换导致的结果就是,按这种被积区域的结果。这种数学上简单的变换导致的结果就是,按这种办法,计算量大增,特别是被积区域非常不规则并布满整个矩形区办法,计算量大增,特别是被积区域非常不规则并布满整个矩形区域的时候。域的时候。 数值积分计算数值积分计算 吴鹏吴鹏, MATLAB从零到进阶从零到进阶. 2022-4-29一、一、 概要概要从从MATLAB R2009a版本起,版本起,MATLAB终

10、于有了专门求解一般区终于有了专门求解一般区域域二重积分的函数二重积分的函数quad2d,该函数采用的自适应积分算法基于,该函数采用的自适应积分算法基于L.F. Shampine 的文章:的文章:Vectorized Adaptive Quadrature in MATLAB, Journal of Computational and Applied Mathematics, 211, 2008。该函数。该函数求解一般区域二重积分的效率要远高于上面提到的求解一般区域二重积分的效率要远高于上面提到的dblquad的方法。的方法。虽然虽然quad2d可以求解一般区域二重积分,但还是不能直接求解一可以

11、求解一般区域二重积分,但还是不能直接求解一般般区域三重积分,而区域三重积分,而NIT工具箱也没有一般区域三重积分的计算函数工具箱也没有一般区域三重积分的计算函数 。这些需要灵活运用这些需要灵活运用MATLAB相关函数来构建。相关函数来构建。 数值积分计算数值积分计算 吴鹏吴鹏, MATLAB从零到进阶从零到进阶. 2022-4-29二、一般区域二重积分的计算二、一般区域二重积分的计算 dblquad求解一般区域二重三重积分的思路方法,就是将被积函数求解一般区域二重三重积分的思路方法,就是将被积函数“延延拓拓”到矩形或者长方体区域,但是这种方法不可避免引入很多乘到矩形或者长方体区域,但是这种方法

12、不可避免引入很多乘0运算浪运算浪费时间。而费时间。而quad2d虽然效率很高,但是虽然效率很高,但是R2009a之前没有这个函数。因之前没有这个函数。因此,要想在此,要想在2009a之前的之前的MATLAB7版里里计算一般区域二重三重积版里里计算一般区域二重三重积分,需要开辟新的方法。新的方法是调用已有的分,需要开辟新的方法。新的方法是调用已有的MATLAB函数求解,函数求解,在求一般区域二重积分时,效率和在求一般区域二重积分时,效率和quad2d相比有一些差距,但是相对相比有一些差距,但是相对于于“延拓延拓”函数的做法,效率大大提高了函数的做法,效率大大提高了 。【例例10.3-2】和和【例

13、例10.3-3】给出了这一方法的应用实例,可以看出该方给出了这一方法的应用实例,可以看出该方法在法在R2009a以前的版本中不失为一种方法,效率要明显高于以前的版本中不失为一种方法,效率要明显高于dblquad帮帮助文档里推荐的做法。更重要的是,这给我们求解一般区域三重积分提助文档里推荐的做法。更重要的是,这给我们求解一般区域三重积分提供了一种途径。供了一种途径。数值积分计算数值积分计算 吴鹏吴鹏, MATLAB从零到进阶从零到进阶. 2022-4-29三、一般区域三重积分的计算三、一般区域三重积分的计算模板模板1:quadl(x) arrayfun(xx) quad2d(被积函数被积函数f(

14、xx,y,z)关于关于y,z变量的函数句变量的函数句柄柄,y积分下限积分下限y1(xx),y积分上限积分上限y2(xx),z积分下限积分下限z1(xx,y),z积分上限积分上限z2(xx,y),x),x积分下限值积分下限值,x积分上限值积分上限值)模板模板2:quad2d(x,y) arrayfun(xx,yy) quadl(被积函数被积函数f(xx,yy,z)关于关于z变量的函数变量的函数句柄句柄,z积分下限积分下限z1(xx,yy),z积分上限积分上限z2(xx,yy),x,y),x积分下限值积分下限值,x积分上限值积分上限值,y积分下限积分下限y1(x),y积分上限积分上限y2(x) 模

15、板模板3:quadl(x) arrayfun(xx) quadl(y) arrayfun(yy) quadl(被积函数被积函数f(xx,yy,z)关于关于z变量的函数句柄变量的函数句柄,z积分下限积分下限z1(xx,yy),z积分上限积分上限z2(xx,yy),y),y积积分下限分下限y1(xx),y积分上限积分上限y2(xx),x),x积分下限值积分下限值,x积分上限值积分上限值)模板使用说明:模板使用说明:x,y,z是积分变量,模板中除了用语言描述的参量用相应表达式是积分变量,模板中除了用语言描述的参量用相应表达式替换掉外,其余结构保持不变。替换掉外,其余结构保持不变。 具体使用示例可以参

16、考具体使用示例可以参考【例例10.3-4】 数值积分计算数值积分计算 吴鹏吴鹏, MATLAB从零到进阶从零到进阶. 2022-4-29第四节第四节 一般区域一般区域n重积分的计算重积分的计算数值积分计算数值积分计算 吴鹏吴鹏, MATLAB从零到进阶从零到进阶. 2022-4-29介绍求解一般区域介绍求解一般区域n重积分的函数重积分的函数nIntegrate f = nIntegrate(fun,low,up) f为函数的返回值是为函数的返回值是n重积分积分结果。重积分积分结果。 fun是被积函数字符串形式,不同的变量依次以是被积函数字符串形式,不同的变量依次以x1,x2,.xn表示,(需要

17、注意的表示,(需要注意的是,必须以是,必须以x1,x2,.xn这种形式表示,其余像这种形式表示,其余像y1,y2,.yn或是其他表示方法都不或是其他表示方法都不行)。行)。 low和和up都是长度为都是长度为n的的cell数组,数组,low存储从外到内各重积分的积分下限函数,存储从外到内各重积分的积分下限函数,up存储从外到内各重积分的积分上限函数(都是字符串形式)。存储从外到内各重积分的积分上限函数(都是字符串形式)。low和和up内的函内的函数表示都要遵循一些原则,这些原则在程序注释里进行了说明数表示都要遵循一些原则,这些原则在程序注释里进行了说明 .nIntegrate函数源代码以及使用

18、示例参考书中相关内容以及函数源代码以及使用示例参考书中相关内容以及【例例10.4-1】至至【例例10.4-4】数值积分计算数值积分计算 吴鹏吴鹏, MATLAB从零到进阶从零到进阶. 2022-4-29第五节第五节 蒙特卡洛法计算蒙特卡洛法计算n重积分重积分数值积分计算数值积分计算 吴鹏吴鹏, MATLAB从零到进阶从零到进阶. 2022-4-29一些积分重数比较高的积分,按照传统方法进行计算的话,运算量会非一些积分重数比较高的积分,按照传统方法进行计算的话,运算量会非常大,求解时间随着重数的增加而迅速增加。在常大,求解时间随着重数的增加而迅速增加。在10.4节虽然给出了一般区域节虽然给出了一般区域n重积分的通用程序,但是在实际计算中,重积分的通用程序,但是在实际计算中,n不会很大,一般不会很大,一般n超过超过5后,求解时后,求解时间就会长到无法接受。对于更高维的积分,一个非常有效的求解方法就是蒙间就会长到无法接受。对于更高维的积分,一个非常有效的求解方法就是蒙特卡洛积分法特卡洛积分法 。蒙特卡洛方法又称随机抽样法或统计试验方法,它用于求积分时,与积蒙特卡洛方法又称随机抽样法或统计试验方法,它用于求积分时,与积分重数无关,这点非常重要。虽然四维以下的积分用蒙特

温馨提示

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

评论

0/150

提交评论