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
    Modifier and Type | Field and Description
    --- | ---
    `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
    Modifier and Type | Method and Description
    --- | ---
    `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

Copyright (c) 2003-2013 Apache Software Foundation