防灾数学分享 http://blog.sciencenet.cn/u/fzmath 防灾科技学院数学教研室

博文

MATLAB中的数值积分方法

已有 55329 次阅读 2016-11-1 21:33 |个人分类:教学辅导|系统分类:教学心得

   实际应用中在MATLAB里面都有开发好的命令可以使用,如  quad(), quadl(),quad2d(),triplequad() 。需要掌握这些命令的用法。

1. 定积分 trapz(),quad(),quadl()

trapz() 函数采用复化梯形公式求积分,其使用格式为

   I = trapz(x,y)

参数x为自变量,y为节点处的值,返回值为积分的近似值。

quad() 函数采用自适应步长是Simpson 求积法,其格式为

     I = quad(fun,a,b,tol)

参数 fun 为被积函数 $f(x)$;a,b 分别为变量~$x$ 的积分下限和上限; tol 为积分精度要求,默认为1e-6($10^{-6}$)

计算定积分 $\displaystyle{\int_0^1\dfrac{d x}{1+x^2}}.$

>> I = quad(@(x)1./(1+x.^2),0,1)

I =

   0.7854

精确解为 $\dfrac{\,\pi\,}{4}$.


计算二重积分  

$$\iint\limits_D\sqrt{|y-x^2|}dxdy,D =\{(x,y)|-1\leqslant x \leqslant 1, 0\leqslant y\leqslant 2\}.$$

>> fun = @(x,y)(sqrt(abs(y-x.^2)))

>> I = dblquad(fun,-1,1,0,2)

I =

3.2375

精确解为 $\dfrac{\,5\,}{3}+\dfrac{\,\pi\,}{2}$.


对于非矩形积分区域,也可以用矩形区域积分来处理,但是需要令超出边界的部分函数值为0.

计算二重积分

$\iint\limits_D\sqrt{1-x^2-y^2}dxdy,D =\{(x,y)|x^2+y^2\leqslant 1\}.$

$$\iint\limits_D\sqrt{1-x^2-y^2}dxdy,D =\{(x,y)|x^2+y^2\leqslant 1\}.$$

>> fun = @(x,y)(sqrt(1-x.^2-y.^2).*(x.^2+y.^2<=1));% 或 fun = @(x,y)(sqrt(max(1-x.^2-y.^2,0)));

>>  I = dblquad(fun,-1,1,-1,1)

I =

2.0944

精确解为 $\dfrac{\,2\,}{3}\pi$.

3. 三重积分 triplequad

    triplequad() 是在立方体区域上求三重积分的函数,其格式为

       I = triplequad(fun,a,b,c,d,e,f,tol,method)  

参数 fun 为三元被积函数 $f(x,y,z)$;a,b 分别为变量 $x$ 的积分下限和上限; c,d 分别为变量 $y$ 的积分下限和上限;e,f 分别为变量~$z$ 的积分下限和上限;tol 为积分精度要求,默认为1e-6($10^{-6}$);method 为求积分的方法,有两种,一种是@quad,另一种是@quadl,默认是@quadl。

  计算三重积分$$\iiint\limits_\Omega \bigg[y\sin  x + z\cos x\bigg] d v,\Omega=\{(x,y,z)|0\leqslant x \leqslant\pi, 0\leqslant y\leqslant 1,-1\leqslant z\leqslant 1\}.$$

 >> fun = @(x,y,z)(y.*sin(x)+z.*cos(x));

>> I = triplequad(fun,0,pi,0,1,-1,1)

I =

2.0000

  对于非立方体的积分区域,可以采用令边界外的函数值为 0 的方法。

  计算三重积分$$\iiint\limits_\Omega \bigg|\sqrt{x^2+y^2+z^2-1} \bigg|d v,\quad \Omega=\{(x,y,z)|\sqrt{x^2+y^2}\leqslant z\leqslant 1\}.$$

>> fun = @(x,y,z)(abs(sqrt(x.^2+y.^2+z.^2)-1).*((z<=1)&(z>=sqrt(x.^2+y.^2))));

 >> I = triplequad(fun,-1,1,-1,1,0,1)

   

 I =

 0.2169

精确解是 $\dfrac{\pi(\sqrt{2}-1)}{6}$,计算误差为 $4.5220\times 10^{-6}$.




https://blog.sciencenet.cn/blog-292361-1012198.html

上一篇:《高等工程数学》第三版 “第八章 数值积分和数值微分公式”
下一篇:《高等工程数学》第三版 “第九章 方程求根” 的幻灯片
收藏 IP: 124.238.133.*| 热度|

3 张学文 杨正瓴 yangb919

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-26 01:04

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部