org.apache.commons.math3.analysis.integration

## Class RombergIntegrator

- java.lang.Object
- - org.apache.commons.math3.analysis.integration.BaseAbstractUnivariateIntegrator
  - - org.apache.commons.math3.analysis.integration.RombergIntegrator

All Implemented Interfaces:
  UnivariateIntegrator

    public class RombergIntegrator
    extends BaseAbstractUnivariateIntegrator

Implements the Romberg Algorithm for integration of real univariate functions. For reference, see Introduction to Numerical Analysis, ISBN 038795452X, chapter 3.

Romberg integration employs k successive refinements of the trapezoid rule to remove error terms less than order O(N^(-2k)). Simpson's rule is a special case of k = 2.

Since:
  1.2
Version:
  $Id: RombergIntegrator.java 1364387 2012-07-22 18:14:11Z tn $

### Field Summary

Fields
`static int` `ROMBERG_MAX_ITERATIONS_COUNT` Maximal number of iterations for Romberg.

### Fields inherited from class org.apache.commons.math3.analysis.integration.BaseAbstractUnivariateIntegrator

`DEFAULT_ABSOLUTE_ACCURACY, DEFAULT_MAX_ITERATIONS_COUNT, DEFAULT_MIN_ITERATIONS_COUNT, DEFAULT_RELATIVE_ACCURACY, iterations`

### Constructor Summary

Constructors
Constructor and Description
`RombergIntegrator()` Construct a Romberg integrator with default settings (max iteration count set to `ROMBERG_MAX_ITERATIONS_COUNT`)
`RombergIntegrator(double relativeAccuracy, double absoluteAccuracy, int minimalIterationCount, int maximalIterationCount)` Build a Romberg integrator with given accuracies and iterations counts.
`RombergIntegrator(int minimalIterationCount, int maximalIterationCount)` Build a Romberg integrator with given iteration counts.

### Method Summary

Methods
`protected double` `doIntegrate()` Method for implementing actual integration algorithms in derived classes.

### Methods inherited from class org.apache.commons.math3.analysis.integration.BaseAbstractUnivariateIntegrator

`computeObjectiveValue, getAbsoluteAccuracy, getEvaluations, getIterations, getMax, getMaximalIterationCount, getMin, getMinimalIterationCount, getRelativeAccuracy, integrate, setup`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### ROMBERG_MAX_ITERATIONS_COUNT

    public static final int ROMBERG_MAX_ITERATIONS_COUNT

Maximal number of iterations for Romberg.

See Also:
  Constant Field Values

### Constructor Detail

#### RombergIntegrator

    public RombergIntegrator(double relativeAccuracy,
                     double absoluteAccuracy,
                     int minimalIterationCount,
                     int maximalIterationCount)
                      throws NotStrictlyPositiveException,
                             NumberIsTooSmallException,
                             NumberIsTooLargeException

Build a Romberg integrator with given accuracies and iterations counts.

Parameters:
  `relativeAccuracy` - relative accuracy of the result
  `absoluteAccuracy` - absolute accuracy of the result
  `minimalIterationCount` - minimum number of iterations
  `maximalIterationCount` - maximum number of iterations (must be less than or equal to `ROMBERG_MAX_ITERATIONS_COUNT`)
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
  `NumberIsTooLargeException` - if maximal number of iterations is greater than `ROMBERG_MAX_ITERATIONS_COUNT`

#### RombergIntegrator

    public RombergIntegrator(int minimalIterationCount,
                     int maximalIterationCount)
                      throws NotStrictlyPositiveException,
                             NumberIsTooSmallException,
                             NumberIsTooLargeException

Build a Romberg integrator with given iteration counts.

Parameters:
  `minimalIterationCount` - minimum number of iterations
  `maximalIterationCount` - maximum number of iterations (must be less than or equal to `ROMBERG_MAX_ITERATIONS_COUNT`)
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
  `NumberIsTooLargeException` - if maximal number of iterations is greater than `ROMBERG_MAX_ITERATIONS_COUNT`

#### RombergIntegrator

    public RombergIntegrator()

Construct a Romberg integrator with default settings (max iteration count set to `ROMBERG_MAX_ITERATIONS_COUNT`)

### Method Detail

#### doIntegrate

    protected double doIntegrate()
                          throws TooManyEvaluationsException,
                                 MaxCountExceededException

Method for implementing actual integration algorithms in derived classes.

Specified by:
  `doIntegrate` in class `BaseAbstractUnivariateIntegrator`
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