GNU Octave Manual Version 3 by John W. Eaton, David Bateman, Søren Hauberg Paperback (6"x9"), 568 pages ISBN 095461206X RRP £24.95 ($39.95) |
21.1 Functions of One Variable
Octave supports three different algorithms for computing the integral of a function f over the interval from a to b. These are
quad
- Numerical integration based on Gaussian quadrature.
quadl
- Numerical integration using an adaptive Lobatto rule.
trapz
- Numerical integration using the trapezoidal method.
Besides these functions Octave also allows you to perform cumulative
numerical integration using the trapezoidal method through the
cumtrapz
function.
- Loadable Function: [v, ier, nfun, err] = quad (f, a, b, tol, sing)
- Integrate a nonlinear function of one variable using Quadpack.
The first argument is the name of the function, the function handle or
the inline function to call to compute the value of the integrand. It
must have the form
y = f (x)
where y and x are scalars.
The second and third arguments are limits of integration. Either or both may be infinite.
The optional argument tol is a vector that specifies the desired accuracy of the result. The first element of the vector is the desired absolute tolerance, and the second element is the desired relative tolerance. To choose a relative test only, set the absolute tolerance to zero. To choose an absolute test only, set the relative tolerance to zero.
The optional argument sing is a vector of values at which the integrand is known to be singular.
The result of the integration is returned in v and ier contains an integer error code (0 indicates a successful integration). The value of nfun indicates how many function evaluations were required, and err contains an estimate of the error in the solution.
You can use the function
quad_options
to set optional parameters forquad
.It should be noted that since
quad
is written in Fortran it cannot be called recursively.
- Loadable Function: quad_options (opt, val)
- When called with two arguments, this function
allows you to set options parameters for the function
quad
. Given one argument,quad_options
returns the value of the corresponding option. If no arguments are supplied, the names of all the available options and their current values are displayed.Options include
"absolute tolerance"
- Absolute tolerance; may be zero for pure relative error test.
"relative tolerance"
-
Nonnegative relative tolerance. If the absolute tolerance is zero,
the relative tolerance must be greater than or equal to
max (50*eps, 0.5e-28)
.
Here is an example of using quad
to integrate the function
f(x) = x * sin (1/x) * sqrt (abs (1 - x))
from x = 0 to x = 3.
This is a fairly difficult integration (plot the function over the range of integration to see why).
The first step is to define the function:
function y = f (x) y = x .* sin (1 ./ x) .* sqrt (abs (1 - x)); endfunction
Note the use of the `dot' forms of the operators. This is not necessary
for the call to quad
, but it makes it much easier to generate a
set of points for plotting (because it makes it possible to call the
function with a vector argument to produce a vector result).
Then we simply call quad:
[v, ier, nfun, err] = quad ("f", 0, 3) => 1.9819 => 1 => 5061 => 1.1522e-07
Although quad
returns a nonzero value for ier, the result
is reasonably accurate (to see why, examine what happens to the result
if you move the lower bound to 0.1, then 0.01, then 0.001, etc.).
- Function File: q = quadl (f, a, b)
- Function File: q = quadl (f, a, b, tol)
- Function File: q = quadl (f, a, b, tol, trace)
- Function File: q = quadl (f, a, b, tol, trace, p1, p2, ...)
-
Numerically evaluate integral using adaptive Lobatto rule.
quadl (f, a, b)
approximates the integral off(x)
to machine precision. f is either a function handle, inline function or string containing the name of the function to evaluate. The function f must return a vector of output values if given a vector of input values.If defined, tol defines the relative tolerance to which to which to integrate
f(x)
. While if trace is defined, displays the left end point of the current interval, the interval length, and the partial integral.Additional arguments p1, etc, are passed directly to f. To use default values for tol and trace, one may pass empty matrices.
Reference: W. Gander and W. Gautschi, Adaptive Quadrature--Revisited, BIT Vol. 40, No. 1, March 2000, pp. 84--101.(22)
- Function File: z = trapz (y)
- Function File: z = trapz (x, y)
- Function File: z = trapz (..., dim)
-
Numerical integration using trapezoidal method.
trapz (y)
computes the integral of the y along the first non-singleton dimension. If the argument x is omitted a equally spaced vector is assumed.trapz (x, y)
evaluates the integral with respect to x.See also cumtrapz
- Function File: z = cumtrapz (y)
- Function File: z = cumtrapz (x, y)
- Function File: z = cumtrapz (..., dim)
-
Cumulative numerical integration using trapezoidal method.
cumtrapz (y)
computes the cumulative integral of the y along the first non-singleton dimension. If the argument x is omitted a equally spaced vector is assumed.cumtrapz (x, y)
evaluates the cumulative integral with respect to x.See also trapz,cumsum
ISBN 095461206X | GNU Octave Manual Version 3 | See the print edition |