一、数值积分问题的数学表达
称为积分节点,称为求积系数。右端公式称为左端定积分的某个数值积分。MATLAB支持三重以下的积分运算。分别为:
在计算积分时,要求积分区间是确定的。
二、一元函数的数值积分
1、quad函数:采用遍历的自适应辛普森法计算函数的数值积分。
适用于精度要求低,被积函数平滑性差的数值积分。
- Q = quad(FUN,A,B)
- Q = quad(FUN,A,B,TOL)
- Q = quad(FUN,A,B,TOL,TRACE)
- [Q,FCNT] = quad(...)
FUN为被积函数的句柄,FUN应该接收向量输入,并输出相同长度的向量。
A,B分别是积分的起始值和结束值。
TOL用于控制自适应辛普森法的误差,增大TOL可以加快计算速度,但是计算精度下降。
FCNT为函数计算的次数。
2、quadl函数:采用遍历的自适应Lobatto法计算函数的数值积分。
适用于精度要求高,被积函数曲线比较平滑的数值积分。
用法与quad相同。
- Q = quadl(FUN,A,B)
- Q = quadl(FUN,A,B,TOL)
- Q = quadl(FUN,A,B,TOL,TRACE)
- [Q,FCNT] = quadl(...)
quad有较快的计算速度,但是准确性较差;而quadl函数需要更多的计算时间,但具有较高的准确性。
三、quadv函数:一次可以计算多个一元函数的数值积分。k取不同的值,积分结果不尽相同。
- Q = quadv(FUN,A,B)
- Q = quadv(FUN,A,B,TOL)
- Q = quadv(FUN,A,B,TOL,TRACE)
- [Q,FCNT] = quadv(...)
quad ,quadl,quadv三个函数都要求被积函数FUN必须是函数句柄,同时积分限必须是有限的。
例题:计算
clear all;clc;
F = @(x) 1./(x.^3-2*x-5);
Q = quadl(F,0,2)
Q =
-0.4605
二、二重数值积分
二重数值积分计算函数dblquad
dbquad函数可以用来计算被积函数在积分区域 内的积分数值。该函数先计算内积分值,然后利用内积分的中间结果来计算二重积分。
dxdy:所以x为内积分变量,y为外积分变量。
dblquad函数的调用格式:
- Q=dblquad(FUN,XMIN,XMAX,YMIN,YMAX)
- Q=dblquad(FUN,XMIN,XMAX,YMIN,YMAX,TOL)
- Q=dblquad(FUN,XMIN,XMAX,YMIN,YMAX,TOL,@QUADL)
- Q=dblquad(FUN,XMIN,XMAX,YMIN,YMAX,TOL,MYQUADF)
FUN是被积函数的句柄。
XMIN,XMAX,YMIN,YMAX分别为x,y两个方向上的积分限。
TOL是绝对计算精度。
@QUADL和MYQUADF指定计算以为积分时使用的函数。
例题:计算积分
clear all;clc;
F = @(x,y) y*sin(x)+3*cos(y)-1;
xmin=pi;
xmax=2*pi;
ymin=0;
ymax=pi;
q=dblquad(F,xmin,xmax,ymin,ymax)
q =
-19.7392
三、三重数值积分
triplequad函数可以用来计算被积函数在空间区域 内的数值积分。
其调用格式如下:
- Q=triplequad(FUN,XMIN,XMAX,YMIN,YMAX,ZMIN,ZMAX)
- Q=triplequad(FUN,XMIN,XMAX,YMIN,YMAX,ZMIN,ZMAX,TOL)
- Q=triplequad(FUN,XMIN,XMAX,YMIN,YMAX,ZMIN,ZMAX,TOL,MYQUADF)
- Q=triplequad(FUN,XMIN,XMAX,YMIN,YMAX,ZMIN,ZMAX,TOL,@QUADL)
上式中相关参数的含义同dblquad函数。