【MATLAB】数据分析之函数数值积分

一、数值积分问题的数学表达

\int_{1}^{2}f(x)dx\approx \sum_{k=0}^{n}A_{k}f(x_{k}))

x_{k}称为积分节点,A_{k}称为求积系数。右端公式称为左端定积分的某个数值积分。MATLAB支持三重以下的积分运算。分别为:

\int_{x_{min}}^{x_{max}}f(x)dx     

 \int_{x_{min}}^{x_{max}}\int_{y_{min}}^{y_{max}}f(x,y)dxdy   

 \int_{x_{min}}^{x_{max}}\int_{y_{min}}^{y_{max}}\int_{z_{min}}^{z_{max}}f(x,y,z)dxdydz

在计算积分时,要求积分区间是确定的。

二、一元函数的数值积分

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取不同的值,积分结果不尽相同。

\int_{0}^{1}x^{_k} dx,k=1,2,\cdot \cdot \cdot ,n

  • 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必须是函数句柄,同时积分限必须是有限的。

例题:计算\int_{0}^{2}\frac{1}{x^{3}-2x-5}dx

clear all;clc;
F = @(x) 1./(x.^3-2*x-5);
Q = quadl(F,0,2)

Q =

   -0.4605

二、二重数值积分

二重数值积分计算函数dblquad

dbquad函数可以用来计算被积函数在积分区域 x\in \begin{bmatrix}x_{min}, &x_{max} \end{bmatrix},y\in \begin{bmatrix}y_{min}, &y_{max} \end{bmatrix} 内的积分数值。该函数先计算内积分值,然后利用内积分的中间结果来计算二重积分。

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指定计算以为积分时使用的函数。

例题:计算积分\int_{0}^{\pi }\int_{\pi}^{2\pi}(ysinx+3cosy-1)dxdy

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函数可以用来计算被积函数在空间区域x\in \begin{bmatrix}x_{min}, &x_{max} \end{bmatrix},y\in \begin{bmatrix}y_{min}, &y_{max} \end{bmatrix},z\in \begin{bmatrix}z_{min}, &z_{max} \end{bmatrix} 内的数值积分。

其调用格式如下:

  • 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函数。 

你可能感兴趣的:(MATLAB2014a)