org.apache.commons.math.analysis.integration
Class UnivariateRealIntegratorImpl

java.lang.Object
  extended by org.apache.commons.math.analysis.integration.UnivariateRealIntegratorImpl
All Implemented Interfaces:
UnivariateRealIntegrator
Direct Known Subclasses:
LegendreGaussIntegrator, RombergIntegrator, SimpsonIntegrator, TrapezoidIntegrator

public abstract class UnivariateRealIntegratorImpl
extends java.lang.Object
implements UnivariateRealIntegrator

Provide a default implementation for several generic functions.

Since:
1.2
Version:
$Id: UnivariateRealIntegratorImpl.java 1179926 2011-10-07 03:18:05Z psteitz $

Field Summary
protected  double absoluteAccuracy
          Maximum absolute error.
static double DEFAULT_ABSOLUTE_ACCURACY
          Default absolute accuracy.
static int DEFAULT_MAX_ITERATIONS_COUNT
          Default maximal iteration count.
static int DEFAULT_MIN_ITERATIONS_COUNT
          Default minimal iteration count.
static double DEFAULT_RELATIVE_ACCURACY
          Default relative accuracy.
protected  Incrementor evaluations
          The functions evaluation count.
protected  UnivariateRealFunction function
          Function to integrate.
protected  Incrementor iterations
          The iteration count.
protected  double max
          Upper bound for the interval.
protected  double min
          Lower bound for the interval.
protected  int minimalIterationCount
          minimum number of iterations
protected  double relativeAccuracy
          Maximum relative error.
 
Constructor Summary
protected UnivariateRealIntegratorImpl(double relativeAccuracy, double absoluteAccuracy)
          Construct an integrator with given accuracies.
protected UnivariateRealIntegratorImpl(double relativeAccuracy, double absoluteAccuracy, int minimalIterationCount, int maximalIterationCount)
          Construct an integrator with given accuracies and iteration counts.
protected UnivariateRealIntegratorImpl(int minimalIterationCount, int maximalIterationCount)
          Construct an integrator with given iteration counts.
 
Method Summary
protected  double computeObjectiveValue(double point)
          Compute the objective function value.
protected abstract  double doIntegrate()
          Method for implementing actual integration algorithms in derived classes.
 double getAbsoluteAccuracy()
          Get the actual absolute accuracy.
 int getEvaluations()
          Get the number of function evaluations of the last run of the integrator.
 int getIterations()
          Get the number of iterations of the last run of the integrator.
 int getMaximalIterationCount()
          Get the upper limit for the number of iterations.
 int getMinimalIterationCount()
          Get the min limit for the number of iterations.
 double getRelativeAccuracy()
          Get the actual relative accuracy.
 double integrate(int maxEval, UnivariateRealFunction f, double lower, double upper)
          Integrate the function in the given interval.
protected  void setup(int maxEval, UnivariateRealFunction f, double lower, double upper)
          Prepare for computation.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_ABSOLUTE_ACCURACY

public static final double DEFAULT_ABSOLUTE_ACCURACY
Default absolute accuracy.

See Also:
Constant Field Values

DEFAULT_RELATIVE_ACCURACY

public static final double DEFAULT_RELATIVE_ACCURACY
Default relative accuracy.

See Also:
Constant Field Values

DEFAULT_MIN_ITERATIONS_COUNT

public static final int DEFAULT_MIN_ITERATIONS_COUNT
Default minimal iteration count.

See Also:
Constant Field Values

DEFAULT_MAX_ITERATIONS_COUNT

public static final int DEFAULT_MAX_ITERATIONS_COUNT
Default maximal iteration count.

See Also:
Constant Field Values

absoluteAccuracy

protected double absoluteAccuracy
Maximum absolute error.


relativeAccuracy

protected double relativeAccuracy
Maximum relative error.


minimalIterationCount

protected int minimalIterationCount
minimum number of iterations


iterations

protected Incrementor iterations
The iteration count.


evaluations

protected Incrementor evaluations
The functions evaluation count.


function

protected UnivariateRealFunction function
Function to integrate.


min

protected double min
Lower bound for the interval.


max

protected double max
Upper bound for the interval.

Constructor Detail

UnivariateRealIntegratorImpl

protected UnivariateRealIntegratorImpl(double relativeAccuracy,
                                       double absoluteAccuracy,
                                       int minimalIterationCount,
                                       int maximalIterationCount)
                                throws NotStrictlyPositiveException,
                                       NumberIsTooSmallException
Construct an integrator with given accuracies and iteration counts.

The meanings of the various parameters are:

Parameters:
relativeAccuracy - relative accuracy of the result
absoluteAccuracy - absolute accuracy of the result
minimalIterationCount - minimum number of iterations
maximalIterationCount - maximum number of iterations
Throws:
NotStrictlyPositiveException - if minimal number of iterations is not strictly positive
NumberIsTooSmallException - if maximal number of iterations is lesser than or equal to the minimal number of iterations

UnivariateRealIntegratorImpl

protected UnivariateRealIntegratorImpl(double relativeAccuracy,
                                       double absoluteAccuracy)
Construct an integrator with given accuracies.

Parameters:
relativeAccuracy - relative accuracy of the result
absoluteAccuracy - absolute accuracy of the result

UnivariateRealIntegratorImpl

protected UnivariateRealIntegratorImpl(int minimalIterationCount,
                                       int maximalIterationCount)
                                throws NotStrictlyPositiveException,
                                       NumberIsTooSmallException
Construct an integrator with given iteration counts.

Parameters:
minimalIterationCount - minimum number of iterations
maximalIterationCount - maximum number of iterations
Throws:
NotStrictlyPositiveException - if minimal number of iterations is not strictly positive
NumberIsTooSmallException - if maximal number of iterations is lesser than or equal to the minimal number of iterations
Method Detail

getRelativeAccuracy

public double getRelativeAccuracy()
Get the actual relative accuracy.

Specified by:
getRelativeAccuracy in interface UnivariateRealIntegrator
Returns:
the accuracy

getAbsoluteAccuracy

public double getAbsoluteAccuracy()
Get the actual absolute accuracy.

Specified by:
getAbsoluteAccuracy in interface UnivariateRealIntegrator
Returns:
the accuracy

getMinimalIterationCount

public int getMinimalIterationCount()
Get the min limit for the number of iterations.

Specified by:
getMinimalIterationCount in interface UnivariateRealIntegrator
Returns:
the actual min limit

getMaximalIterationCount

public int getMaximalIterationCount()
Get the upper limit for the number of iterations.

Specified by:
getMaximalIterationCount in interface UnivariateRealIntegrator
Returns:
the actual upper limit

getEvaluations

public int getEvaluations()
Get the number of function evaluations of the last run of the integrator.

Specified by:
getEvaluations in interface UnivariateRealIntegrator
Returns:
number of function evaluations

getIterations

public int getIterations()
Get the number of iterations of the last run of the integrator.

Specified by:
getIterations in interface UnivariateRealIntegrator
Returns:
number of iterations

computeObjectiveValue

protected double computeObjectiveValue(double point)
                                throws TooManyEvaluationsException
Compute the objective function value.

Parameters:
point - Point at which the objective function must be evaluated.
Returns:
the objective function value at specified point.
Throws:
TooManyEvaluationsException - if the maximal number of function evaluations is exceeded.

setup

protected void setup(int maxEval,
                     UnivariateRealFunction f,
                     double lower,
                     double upper)
              throws NullArgumentException,
                     MathIllegalArgumentException
Prepare for computation. Subclasses must call this method if they override any of the solve methods.

Parameters:
maxEval - Maximum number of evaluations.
f - the integrand function
lower - the min bound for the interval
upper - the upper bound for the interval
Throws:
NullArgumentException - if f is null.
MathIllegalArgumentException - if min >= max.

integrate

public double integrate(int maxEval,
                        UnivariateRealFunction f,
                        double lower,
                        double upper)
                 throws TooManyEvaluationsException,
                        MaxCountExceededException,
                        MathIllegalArgumentException,
                        NullArgumentException
Integrate the function in the given interval.

Specified by:
integrate in interface UnivariateRealIntegrator
Parameters:
maxEval - Maximum number of evaluations.
f - the integrand function
lower - the min bound for the interval
upper - the upper bound for the interval
Returns:
the value of integral
Throws:
TooManyEvaluationsException - if the maximum number of function evaluations is exceeded.
MaxCountExceededException - if the maximum iteration count is exceeded or the integrator detects convergence problems otherwise
MathIllegalArgumentException - if min > max or the endpoints do not satisfy the requirements specified by the integrator
NullArgumentException - if f is null.

doIntegrate

protected abstract double doIntegrate()
                               throws TooManyEvaluationsException,
                                      MaxCountExceededException
Method for implementing actual integration algorithms in derived classes.

Returns:
the root.
Throws:
TooManyEvaluationsException - if the maximal number of evaluations is exceeded.
MaxCountExceededException - if the maximum iteration count is exceeded or the integrator detects convergence problems otherwise


Copyright © 2003-2011 The Apache Software Foundation. All Rights Reserved.