Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

quad

(不推荐)以自适应 Simpson 积分法计算数值积分

不推荐使用 quad。请改用 integral

说明

示例

q = quad(fun,a,b) 使用递归自适应 Simpson 积分法逼近函数 funab 的积分:

q=abf(x) dx

q = quad(fun,a,b,tol) 为每个子区间指定绝对误差容限 tol,而不是使用默认值 1e-6

(可选)q = quad(fun,a,b,tol,trace) 打开诊断信息的显示。当 trace 为非零值时,quad 显示递归期间值 [fcnEvals, a, b-a, Q] 的向量。

[q,fcnEvals] = quad(___) 还返回函数计算次数 fcnEvals。您可以指定以上的任何输入参数组合。

示例

全部折叠

计算积分

021x3-2x-5dx.

首先,创建一个计算被积函数的匿名函数 myfun

myfun = @(x) 1./(x.^3-2*x-5);

现在使用 quad 计算积分。使用第二个和第三个输入参数指定积分范围。

q = quad(myfun,0,2)
q = -0.4605

您也可以通过创建函数文件将被积函数传递给 quad

function y = myfun(x) 
  y = 1./(x.^3-2*x-5);
end

使用此方法时,对 quad 的调用变为 quad(@myfun,0,2)

输入参数

全部折叠

被积函数,指定为函数句柄,用于定义求 ab 的积分的函数。

对于标量值问题,函数 y = fun(x) 必须接受向量参数 x 并返回向量结果 y,其中 y 是被积函数在 x 的每个元素处的计算结果。此要求通常意味着 fun 必须使用数组运算符(.^.* 等)而不是矩阵运算符(^* 等)。

参数化函数解释了如何为函数 fun 提供其他参数(如果需要)。

示例: q = quad(@(x) exp(1-x.^2),a,b) 对匿名函数句柄进行积分。

示例: q = quad(@myFun,a,b) 对函数 myFun 进行积分,并保存为文件。

数据类型: function_handle

积分范围,指定为单独的标量参数。范围 ab 必须是有限的。

示例: quad(fun,0,1)01fun 进行积分。

数据类型: single | double

绝对误差容限,指定为标量。quad 对积分中每个子区间使用绝对误差容限。随着 tol 量级的增大,quad 执行的函数计算越来越少,完成计算的速度越来越快,但产生的结果越来越不精确。

示例: quad(fun,a,b,1e-12) 将绝对误差容限设置为 1e-12

数据类型: single | double

切换诊断信息,指定为非零标量。当 trace 为非零值时,quad 显示递归中每个子区间的值 [fcnEvals, a, b-a, Q] 组成的向量:

  • fcnEvals 给出函数计算的次数

  • ab 是积分的范围

  • Q 是子区间的计算面积

示例: quad(fun,a,b,1e-8,1) 计算 funab 的积分,容差为 1e-8,并且启用诊断信息。

输出参数

全部折叠

积分的值,以标量形式返回。

函数计算次数,以标量形式返回。

算法

quad 使用自适应递归 Simpson 积分法则实现低阶求积方法。

参考

[1] Gander, W., and W. Gautschi. “Adaptive Quadrature—Revisited.” BIT Numerical Mathematics 40 (2000): 84–101. https://doi.org/10.1023/A:1022318402393

版本历史记录

在 R2006a 之前推出