(Not recommended) Numerically evaluate integral, adaptive Simpson quadrature
quad is not recommended. Use
q = quad(fun,a,b)
q = quad(fun,a,b,tol)
q = quad(fun,a,b,tol,trace)
[q,fcnt] = quad(...)
Quadrature is a numerical method used to find the area under the graph of a function, that is, to compute a definite integral.
q = quad(fun,a,b) tries to approximate the
integral of function
b to within an error of
1e-6 using recursive
adaptive Simpson quadrature.
fun is a function handle. Limits
b must be finite. The function
fun(x) should accept a vector argument
x and return a
y, the integrand evaluated at each element of
Parameterizing Functions explains how to
provide additional parameters to the function
fun, if necessary.
q = quad(fun,a,b,tol) uses an absolute error
tol instead of the default which is
Larger values of
tol result in fewer function evaluations and faster
computation, but less accurate results. In MATLAB® version 5.3 and earlier, the
quad function used a less
reliable algorithm and a default relative tolerance of
q = quad(fun,a,b,tol,trace) with non-zero
trace shows the values of
[fcnt a b-a Q] during the recursion.
[q,fcnt] = quad(...) returns the number of
quadl may be more efficient with high accuracies and
The list below contains information to help you determine which quadrature function in MATLAB to use:
quad function may be most efficient for low accuracies
with nonsmooth integrands.
quadl function may be more efficient than
quad at higher accuracies with smooth integrands.
quadgk function may be most efficient for high accuracies
and oscillatory integrands. It supports infinite intervals and can handle moderate
singularities at the endpoints. It also supports contour integration along piecewise
quadv function vectorizes
If the interval is infinite, , then for the integral of
fun(x) to exist,
fun(x) must decay as
x approaches infinity,
quadgk requires it to decay rapidly. Special methods should
be used for oscillatory functions on infinite intervals, but
quadgk can be used if
fun(x) decays fast
quadgk function will integrate functions that are
singular at finite endpoints if the singularities are not too strong. For example, it
will integrate functions that behave at an endpoint
-1/2. If the function is singular at points inside
(a,b), write the integral as a sum of integrals over
subintervals with the singular points as endpoints, compute them with
quadgk, and add the results.
To compute the integral
write a function
myfun that computes the integrand:
function y = myfun(x) y = 1./(x.^3-2*x-5);
@myfun, a function handle to
quad, along with the limits of integration,
Q = quad(@myfun,0,2) Q = -0.4605
Alternatively, you can pass the integrand to
quad as an anonymous
F = @(x)1./(x.^3-2*x-5); Q = quad(F,0,2);
quad may issue one of the following warnings:
'Minimum step size reached' indicates that the recursive interval
subdivision has produced a subinterval whose length is on the order of roundoff error in
the length of the original interval. A nonintegrable singularity is possible.
'Maximum function count exceeded' indicates that the integrand has
been evaluated more than 10,000 times. A nonintegrable singularity is likely.
'Infinite or Not-a-Number function value encountered' indicates a
floating point overflow or division by zero during the evaluation of the integrand in the
interior of the interval.
 Gander, W. and W. Gautschi, “Adaptive Quadrature –
Revisited,” BIT, Vol. 40, 2000, pp. 84-101. This document is also available at