Fplot Limit
Next: Orthogonal Collocation, Up: Numerical Integration [Contents][Index]
Fplot(fun, limits). fplot is used to plot a function between specified limits. fun is a function handle to the function to be plotted. limits is a vector specifying the x-axis limits (xmin,xmax) or the x and y axes limits (xmin,xmax,ymin,ymax). fplot is an alternative to plot where, instead of having to generate the x and y coordinates first and passing them as arguments to.
- Fplotplots a function between specified limits. The function must be of the form y = f(x), where x is a vector whose range specifies the limits, and yis a vector the same size as xand contains the function's value at the points in x (see the first example).
- MATLAB: Function plot limits produces errors error fplot limits fplot (@(x) was used to generate a figure the resulting curve shape is wrong and errors are produced.
23.1 Functions of One Variable
Octave supports five different adaptive quadrature algorithms for computingthe integralof a function f over the interval from a to b. These are
quad
Numerical integration based on Gaussian quadrature.
quadv
Numerical integration using an adaptive vectorized Simpson’s rule.
quadl
Numerical integration using an adaptive Lobatto rule.
quadgk
Numerical integration using an adaptive Gauss-Konrod rule.
quadcc
Numerical integration using adaptive Clenshaw-Curtis rules.
In addition, the following functions are also provided:
integral
A compatibility wrapper function that will choose between quadv
andquadgk
depending on the integrand and options chosen.
trapz, cumtrapz
Numerical integration of data using the trapezoidal method.
The best quadrature algorithm to use depends on the integrand. If you haveempirical data, rather than a function, the choice is trapz
orcumtrapz
. If you are uncertain about the characteristics of theintegrand, quadcc
will be the most robust as it can handlediscontinuities, singularities, oscillatory functions, and infinite intervals.When the integrand is smooth quadgk
may be the fastest of thealgorithms.
Function | Characteristics |
---|---|
quad | Low accuracy with nonsmooth integrands |
quadv | Medium accuracy with smooth integrands |
quadl | Medium accuracy with smooth integrands. Slower than quadgk. |
quadgk | Medium accuracy (1e-6 – 1e-9) with smooth integrands. |
Handles oscillatory functions and infinite bounds | |
quadcc | Low to High accuracy with nonsmooth/smooth integrands |
Handles oscillatory functions, singularities, and infinite bounds |
Here is an example of using quad
to integrate the function
from x = 0 to x = 3.
This is a fairly difficult integration (plot the function over the rangeof integration to see why).
The first step is to define the function:
Note the use of the ‘dot’ forms of the operators. This is not necessary forthe quad
integrator, but is required by the other integrators. In anycase, it makes it much easier to generate a set of points for plotting becauseit is possible to call the function with a vector argument to produce a vectorresult.
The second step is to call quad with the limits of integration:
Although quad
returns a nonzero value for ier, the resultis reasonably accurate (to see why, examine what happens to the resultif you move the lower bound to 0.1, then 0.01, then 0.001, etc.).
The function 'f'
can be the string name of a function, a functionhandle, or an inline function. These options make it quite easy to dointegration without having to fully define a function in an m-file. Forexample:
Numerically evaluate the integral of f from a to b usingFortran routines from QUADPACK.
f is a function handle, inline function, or a string containing thename of the function to evaluate. The function must have the form y =f (x)
where y and x are scalars.
a and b are the lower and upper limits of integration. Eitheror both may be infinite.
The optional argument tol is a vector that specifies the desiredaccuracy of the result. The first element of the vector is the desiredabsolute tolerance, and the second element is the desired relativetolerance. To choose a relative test only, set the absolutetolerance to zero. To choose an absolute test only, set the relativetolerance to zero. Both tolerances default to sqrt (eps)
orapproximately 1.5e-8.
The optional argument sing is a vector of values at which theintegrand is known to be singular.
The result of the integration is returned in q.
ier contains an integer error code (0 indicates a successfulintegration).
nfun indicates the number of function evaluations that weremade.
err contains an estimate of the error in the solution.
The function quad_options
can set other optional parameters forquad
.
Note: because quad
is written in Fortran it cannot be calledrecursively. This prevents its use in integrating over more than onevariable by routines dblquad
and triplequad
.
See also:quad_options, quadv, quadl, quadgk, quadcc, trapz, dblquad, triplequad.
Query or set options for the function quad
.
When called with no arguments, the names of all available options andtheir current values are displayed.
Given one argument, return the value of the option opt.
When called with two arguments, quad_options
sets the optionopt to value val.
Options include
'absolute tolerance'
Absolute tolerance; may be zero for pure relative error test.
'relative tolerance'
Non-negative relative tolerance. If the absolute tolerance is zero,the relative tolerance must be greater than or equal tomax (50*eps, 0.5e-28)
.
'single precision absolute tolerance'
Absolute tolerance for single precision; may be zero for pure relativeerror test.
'single precision relative tolerance'
Non-negative relative tolerance for single precision. If the absolutetolerance is zero, the relative tolerance must be greater than or equal tomax (50*eps, 0.5e-28)
.
How To Plot Limits On Mathematica
Numerically evaluate the integral of f from a to busing an adaptive Simpson’s rule.
f is a function handle, inline function, or string containing the nameof the function to evaluate. quadv
is a vectorized version ofquad
and the function defined by f must accept a scalar orvector as input and return a scalar, vector, or array as output.
a and b are the lower and upper limits of integration. Bothlimits must be finite.
The optional argument tol defines the absolute tolerance used to stopthe adaptation procedure. The default value is 1e-6.
The algorithm used by quadv
involves recursively subdividing theintegration interval and applying Simpson’s rule on each subinterval.If trace is true then after computing each of these partialintegrals display: (1) the total number of function evaluations,(2) the left end of the subinterval, (3) the length of the subinterval,(4) the approximation of the integral over the subinterval.
Additional arguments p1, etc., are passed directly to the functionf. To use default values for tol and trace, one may passempty matrices ([]).
The result of the integration is returned in q.
The optional output nfun indicates the total number of functionevaluations performed.
Note: quadv
is written in Octave’s scripting language and can beused recursively in dblquad
and triplequad
, unlike thequad
function.
See also:quad, quadl, quadgk, quadcc, trapz, dblquad, triplequad, integral, integral2, integral3.
Numerically evaluate the integral of f from a to b usingan adaptive Lobatto rule.
f is a function handle, inline function, or string containing the nameof the function to evaluate. The function f must be vectorized andreturn a vector of output values when given a vector of input values.
a and b are the lower and upper limits of integration. Bothlimits must be finite.
The optional argument tol defines the absolute tolerance with whichto perform the integration. The default value is 1e-6.
The algorithm used by quadl
involves recursively subdividing theintegration interval. If trace is defined then for each subintervaldisplay: (1) the total number of function evaluations, (2) the left end ofthe subinterval, (3) the length of the subinterval, (4) the approximation ofthe integral over the subinterval.
Additional arguments p1, etc., are passed directly to the functionf. To use default values for tol and trace, one may passempty matrices ([]).
The result of the integration is returned in q.
The optional output nfun indicates the total number of functionevaluations performed.
Reference: W. Gander and W. Gautschi, Adaptive Quadrature -Revisited, BIT Vol. 40, No. 1, March 2000, pp. 84–101.https://www.inf.ethz.ch/personal/gander/
See also:quad, quadv, quadgk, quadcc, trapz, dblquad, triplequad, integral, integral2, integral3.
Python 2d Plot Limit Cycle
Numerically evaluate the integral of f from a to busing adaptive Gauss-Konrod quadrature.
f is a function handle, inline function, or string containing the nameof the function to evaluate. The function f must be vectorized andreturn a vector of output values when given a vector of input values.
a and b are the lower and upper limits of integration. Eitheror both limits may be infinite or contain weak end singularities. Variabletransformation will be used to treat any infinite intervals and weaken thesingularities. For example:
Note that the formulation of the integrand uses the element-by-elementoperator ./
and all user functions to quadgk
should do thesame.
The optional argument tol defines the absolute tolerance used to stopthe integration procedure. The default value is 1e-10 (1e-5 for single).
The algorithm used by quadgk
involves subdividing the integrationinterval and evaluating each subinterval. If trace is true then aftercomputing each of these partial integrals display: (1) the number ofsubintervals at this step, (2) the current estimate of the error err,(3) the current estimate for the integral q.
Alternatively, properties of quadgk
can be passed to the function aspairs 'prop', val
. Valid properties are
AbsTol
Define the absolute error tolerance for the quadrature. The defaultabsolute tolerance is 1e-10 (1e-5 for single).
RelTol
Define the relative error tolerance for the quadrature. The defaultrelative tolerance is 1e-6 (1e-4 for single).
MaxIntervalCount
quadgk
initially subdivides the interval on which to perform thequadrature into 10 intervals. Subintervals that have an unacceptable errorare subdivided and re-evaluated. If the number of subintervals exceeds 650subintervals at any point then a poor convergence is signaled and thecurrent estimate of the integral is returned. The property'MaxIntervalCount'
can be used to alter the number of subintervalsthat can exist before exiting.
Matlab Plot Limit Y Axis
WayPoints
Discontinuities in the first derivative of the function to integrate can beflagged with the 'WayPoints'
property. This forces the ends of asubinterval to fall on the breakpoints of the function and can result insignificantly improved estimation of the error in the integral, fastercomputation, or both. For example,
signals the breakpoint in the integrand at x = 1
.
Trace
If logically true quadgk
prints information on the convergence of thequadrature at each iteration.
If any of a, b, or waypoints is complex then thequadrature is treated as a contour integral along a piecewise continuouspath defined by the above. In this case the integral is assumed to have noedge singularities. For example,
integrates log (z)
along the square defined by[1+1i, 1-1i, -1-1i, -1+1i]
.
The result of the integration is returned in q.
err is an approximate bound on the error in the integralabs (q - I)
, where I is the exact value of theintegral.
Reference: L.F. Shampine,'Vectorized adaptive quadrature in MATLAB', Journal ofComputational and Applied Mathematics, pp. 131–140, Vol 211, Issue 2,Feb 2008.
See also:quad, quadv, quadl, quadcc, trapz, dblquad, triplequad, integral, integral2, integral3.
Numerically evaluate the integral of f from a to b usingdoubly-adaptive Clenshaw-Curtis quadrature.
f is a function handle, inline function, or string containing the nameof the function to evaluate. The function f must be vectorized andmust return a vector of output values if given a vector of input values.For example,
which uses the element-by-element “dot” form for all operators.
a and b are the lower and upper limits of integration. Either orboth limits may be infinite. quadcc
handles an infinite limit bysubstituting the variable of integration with x = tan (pi/2*u)
.
The optional argument tol is a 1- or 2-element vector that specifies thedesired accuracy of the result. The first element of the vector is the desiredabsolute tolerance, and the second element is the desired relative tolerance.To choose a relative test only, set the absolute tolerance to zero. To choosean absolute test only, set the relative tolerance to zero. The defaultabsolute tolerance is 1e-10 (1e-5 for single), and the default relativetolerance is 1e-6 (1e-4 for single).
The optional argument sing contains a list of points where the integrandhas known singularities, or discontinuities in any of its derivatives, insidethe integration interval. For the example above, which has a discontinuity atx=1, the call to quadcc
would be as follows
The result of the integration is returned in q.
err is an estimate of the absolute integration error.
nr_points is the number of points at which the integrand was evaluated.
If the adaptive integration did not converge, the value of err will belarger than the requested tolerance. Therefore, it is recommended to verifythis value for difficult integrands.
quadcc
is capable of dealing with non-numeric values of the integrandsuch as NaN
or Inf
. If the integral diverges, and quadcc
detects this, then a warning is issued and Inf
or -Inf
isreturned.
Note: quadcc
is a general purpose quadrature algorithm and, as such,may be less efficient for a smooth or otherwise well-behaved integrand thanother methods such as quadgk
.
The algorithm uses Clenshaw-Curtis quadrature rules of increasingdegree in each interval and bisects the interval if either the function doesnot appear to be smooth or a rule of maximum degree has been reached. Theerror estimate is computed from the L2-norm of the difference between twosuccessive interpolations of the integrand over the nodes of the respectivequadrature rules.
Implementation Note: For Octave versions ≤ 4.2, quadcc
accepted asingle tolerance argument which specified the relative tolerance. Forversions 4.4 and 5, quadcc
will issue a warning when called with asingle tolerance argument indicating that the meaning of this input haschanged from relative tolerance to absolute tolerance. The warning ID for thismessage is 'Octave:quadcc:RelTol-conversion'
. The warning may bedisabled with warning ('off', 'Octave:quadcc:RelTol-conversion')
.
Reference: P. Gonnet, Increasing the Reliability of AdaptiveQuadrature Using Explicit Interpolants, ACM Transactions onMathematical Software, Vol. 37, Issue 3, Article No. 3, 2010.
See also:quad, quadv, quadl, quadgk, trapz, dblquad, triplequad.
Numerically evaluate the integral of f from a to b usingadaptive quadrature.
integral
is a wrapper for quadcc
(general scalar integrands),quadgk
(integrals with specified integration paths), and quadv
(array-valued integrands) that is intended to provide MATLABcompatibility. More control of the numerical integration may be achievableby calling the various quadrature functions directly.
f is a function handle, inline function, or string containing the nameof the function to evaluate. The function f must be vectorized andreturn a vector of output values when given a vector of input values.
a and b are the lower and upper limits of integration. Eitheror both limits may be infinite or contain weak end singularities. If eitheror both limits are complex, integral
will perform a straight linepath integral. Alternatively, a complex domain path can be specified usingthe 'Waypoints'
option (see below).
Additional optional parameters can be specified using'property', value
pairs. Valid properties are:
Waypoints
Specifies points to be used in defining subintervals of the quadraturealgorithm, or if a, b, or waypoints are complex thenthe quadrature is calculated as a contour integral along a piecewisecontinuous path. For more detail see quadgk
.
ArrayValued
integral
expects f to return a scalar value unlessarrayvalued is specified as true. This option will causeintegral
to perform the integration over the entire array and returnq with the same dimensions as returned by f. For more detailsee quadv
.
AbsTol
Define the absolute error tolerance for the quadrature. The defaultabsolute tolerance is 1e-10 (1e-5 for single).
RelTol
Define the relative error tolerance for the quadrature. The defaultrelative tolerance is 1e-6 (1e-4 for single).
Adaptive quadrature is used to minimize the estimate of error until thefollowing is satisfied:
Known MATLAB incompatibilities:
- If tolerances are left unspecified, and any integration limits or waypointsare of type
single
, then Octave’s integral functions automaticallyreduce the default absolute and relative error tolerances as specifiedabove. If tighter tolerances are desired they must be specified.MATLAB leaves the tighter tolerances appropriate fordouble
inputs in place regardless of the class of the integration limits. - As a consequence of using
quadcc
,quadgk
, andquadv
,certain option combinations are not supported. Currently,'ArrayValued'
cannot be combined with'RelTol'
or'Waypoints'
.
See also:integral2, integral3, quad, quadgk, quadv, quadl, quadcc, trapz, dblquad, triplequad.
Sometimes one does not have the function, but only the raw (x, y) points fromwhich to perform an integration. This can occur when collecting data in anexperiment. The trapz
function can integrate these values as shown inthe following example where 'data' has been collected on the cosine functionover the range [0, pi/2).
The answer is reasonably close to the exact value of 1. Ordinary quadratureis sensitive to the characteristics of the integrand. Empirical integrationdepends not just on the integrand, but also on the particular points chosen torepresent the function. Repeating the example above with the sine functionover the range [0, pi/2) produces far inferior results.
However, a slightly different choice of data points can change the resultsignificantly. The same integration, with the same number of points, butspaced differently produces a more accurate answer.
In general there may be no way of knowing the best distribution of points aheadof time. Or the points may come from an experiment where there is no freedomto select the best distribution. In any case, one must remain aware of thisissue when using trapz
.
Numerically evaluate the integral of points y using the trapezoidalmethod.
trapz (y)
computes the integral of y along the firstnon-singleton dimension. When the argument x is omitted an equallyspaced x vector with unit spacing (1) is assumed.trapz (x, y)
evaluates the integral with respect to thespacing in x and the values in y. This is useful if the pointsin y have been sampled unevenly.
If the optional dim argument is given, operate along this dimension.
Application Note: If x is not specified then unit spacing will beused. To scale the integral to the correct value you must multiply by theactual spacing value (deltaX). As an example, the integral of x^3over the range [0, 1] is x^4/4 or 0.25. The following code usestrapz
to calculate the integral in three different ways.
See also:cumtrapz.
Cumulative numerical integration of points y using the trapezoidalmethod.
cumtrapz (y)
computes the cumulative integral of yalong the first non-singleton dimension. Where trapz
reports onlythe overall integral sum, cumtrapz
reports the current partial sumvalue at each point of y.
When the argument x is omitted an equally spaced x vector withunit spacing (1) is assumed. cumtrapz (x, y)
evaluatesthe integral with respect to the spacing in x and the values iny. This is useful if the points in y have been sampledunevenly.
If the optional dim argument is given, operate along this dimension.
Application Note: If x is not specified then unit spacing will beused. To scale the integral to the correct value you must multiply by theactual spacing value (deltaX).
See also:trapz, cumsum.
Next: Orthogonal Collocation, Up: Numerical Integration [Contents][Index]