public class Quadrature extends Object implements Serializable, Cloneable
Quadratureis a general-purpose integrator that uses a globally adaptive scheme in order to reduce the absolute error. It subdivides the interval [A, B] and uses a -point Gauss-Kronrod rule to estimate the integral over each subinterval. The error for each subinterval is estimated by comparison with the k-point Gauss quadrature rule. The subinterval with the largest estimated error is then bisected and the same procedure is applied to both halves. The bisection process is continued until either the error criterion is satisfied, roundoff error is detected, the subintervals become too small, or the maximum number of subintervals allowed is reached. The Class
Quadratureis based on the subroutine
QAGby Piessens et al. (1983).
If the function to be integrated has endpoint singularities then
extrapolation should be enabled.
As described above, the integral's value is approximated by applying a quadrature rule to
a series of subdivisions of the interval.
The sequence of approximate values converges to the integral's value.
The -algorithm can be used to extrapolate from
the initial terms of the sequence to its limit.
Without extrapolation, the quadrature approximation sequence converges slowly
if the function being integrated has endpoint singularities.
The -algorithm accelerates convergence of the sequence in this case.
EpsilonAlgorithm implements the -algorithm.
With extrapolation, this class is similar to the subroutine
QAGS by Piessens et al. (1983).
The desired absolute error, , can be set using
The desired relative error, , can be set using
eval computes the approximate integral value
It also computes an error estimate E, which can be retrieved using
These are related by the following equation:
|Modifier and Type||Class and Description|
Public interface function for the Quadrature class.
|Constructor and Description|
Constructs a Quadrature object.
|Modifier and Type||Method and Description|
Returns the value of the integral from a to b.
Returns an estimate of the relative error in the computed result.
Returns the non-fatal error status.
Sets the absolute error tolerance.
If true, the epsilon-algorithm for extrapolation is enabled.
Sets the maximum number of subintervals allowed.
Sets the relative error tolerance.
Set the Gauss-Kronrod rule.
public double eval(Quadrature.Function objectF, double a, double b)
objectF- an implementation of
Functioncontaining the function to be integrated
doublespecifying the lower limit of integration
doublespecifying the upper limit of integration, either or both of a and b can be Double.POSITIVE_INFINITY or Double.NEGATIVE_INFINITY
public double getErrorEstimate()
doublespecifying an estimate of the relative error in the computed result
public int getErrorStatus()
intspecifying the non-fatal error status:
|1||Maximum number of subdivisions allowed has been achieved. One can allow more subdivisions by using setMaxSubintervals. If this yields no improvement it is advised to analyze the integrand in order to determine the integration difficulties. If the position of a local difficulty can be determined (e.g. singularity, discontinuity within the interval) one will probably gain from splitting up the interval at this point and calling the integrator on the subranges. If possible, an appropriate special-purpose integrator should be used, which is designed for handling the type of difficulty involved.|
|2||The occurrence of roundoff error is detected, which prevents the requested tolerance from being achieved. The error may be under-estimated.|
|3||Extremely bad integrand behavior occurs at some points of the integration interval.|
|4||The algorithm does not converge. Roundoff error is detected in the extrapolation table. It is presumed that the requested tolerance cannot be achieved, and that the returned result is the best which can be obtained.|
|5||The algorithm does not converge. Roundoff error is detected in the extrapolation table. It is presumed that the requested tolerance cannot be achieved, and that the returned result is the best that can be obtained.|
|6||The integral is probably divergent, or slowly convergent. It must be noted that divergence can occur with any other status value.|
public void setAbsoluteError(double errorAbsolute)
doublescalar value specifying the absolute error tolerance. The default value is 1.0536712127723714E-8.
public void setExtrapolation(boolean doExtrapolation)
boolean, true if the epsilon-algorithm for extrapolation is to be enabled, false otherwise
public void setMaxSubintervals(int maxSubintervals)
intspecifying the maximum number of subintervals to be allowed. The default is 500.
public void setRelativeError(double errorRelative)
doublescalar value specifying the relative error tolerance. The default value is 1.0536712127723714E-8.
public void setRule(int rule)
|Rule||Data points used|
|1||7 - 15|
|2||10 - 21|
|3||15 - 31|
|4||20 - 41|
|5||25 - 51|
|6||30 - 61|
intspecifying the rule to be used. The default is 3.
Copyright © 1970-2015 Rogue Wave Software
Built October 13 2015.