org.apache.commons.math.analysis.integration

## Class LegendreGaussIntegrator

- java.lang.Object
- - org.apache.commons.math.ConvergingAlgorithmImpl
  - - org.apache.commons.math.analysis.integration.UnivariateRealIntegratorImpl
    - - org.apache.commons.math.analysis.integration.LegendreGaussIntegrator

- All Implemented Interfaces:
    UnivariateRealIntegrator, ConvergingAlgorithm

      public class LegendreGaussIntegrator
      extends UnivariateRealIntegratorImpl

  Implements the Legendre-Gauss quadrature formula.

  Legendre-Gauss integrators are efficient integrators that can accurately integrate functions with few functions evaluations. A Legendre-Gauss integrator using an n-points quadrature formula can integrate exactly 2n-1 degree polynomials.

  These integrators evaluate the function on n carefully chosen abscissas in each step interval (mapped to the canonical [-1 1] interval). The evaluation abscissas are not evenly spaced and none of them are at the interval endpoints. This implies the function integrated can be undefined at integration interval endpoints.

  The evaluation abscissas xi are the roots of the degree n Legendre polynomial. The weights ai of the quadrature formula integrals from -1 to +1 ∫ Li2 where Li (x) = ∏ (x-xk)/(xi-xk) for k != i.

  Since:
    1.2
  Version:
    $Revision: 1070725 $ $Date: 2011-02-15 02:31:12 +0100 (mar. 15 févr. 2011) $

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private double[]` | `abscissas` Abscissas for the current method.
    `private static double[]` | `ABSCISSAS_2` Abscissas for the 2 points method.
    `private static double[]` | `ABSCISSAS_3` Abscissas for the 3 points method.
    `private static double[]` | `ABSCISSAS_4` Abscissas for the 4 points method.
    `private static double[]` | `ABSCISSAS_5` Abscissas for the 5 points method.
    `private double[]` | `weights` Weights for the current method.
    `private static double[]` | `WEIGHTS_2` Weights for the 2 points method.
    `private static double[]` | `WEIGHTS_3` Weights for the 3 points method.
    `private static double[]` | `WEIGHTS_4` Weights for the 4 points method.
    `private static double[]` | `WEIGHTS_5` Weights for the 5 points method.

    - ### Fields inherited from class org.apache.commons.math.analysis.integration.UnivariateRealIntegratorImpl

      `defaultMinimalIterationCount, f, minimalIterationCount, result, resultComputed`

    - ### Fields inherited from class org.apache.commons.math.ConvergingAlgorithmImpl

      `absoluteAccuracy, defaultAbsoluteAccuracy, defaultMaximalIterationCount, defaultRelativeAccuracy, iterationCount, maximalIterationCount, relativeAccuracy`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `LegendreGaussIntegrator(int n, int defaultMaximalIterationCount)` Build a Legendre-Gauss integrator.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `double` | `integrate(double min, double max)` Deprecated.
    `double` | `integrate(UnivariateRealFunction f, double min, double max)` Integrate the function in the given interval.
    `private double` | `stage(UnivariateRealFunction f, double min, double max, int n)` Compute the n-th stage integral.

    - ### Methods inherited from class org.apache.commons.math.analysis.integration.UnivariateRealIntegratorImpl

      `clearResult, getMinimalIterationCount, getResult, resetMinimalIterationCount, setMinimalIterationCount, setResult, verifyInterval, verifyIterationCount`

    - ### Methods inherited from class org.apache.commons.math.ConvergingAlgorithmImpl

      `getAbsoluteAccuracy, getIterationCount, getMaximalIterationCount, getRelativeAccuracy, incrementIterationsCounter, resetAbsoluteAccuracy, resetIterationsCounter, resetMaximalIterationCount, resetRelativeAccuracy, setAbsoluteAccuracy, setMaximalIterationCount, setRelativeAccuracy`

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

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

    - ### Methods inherited from interface org.apache.commons.math.ConvergingAlgorithm

      `getAbsoluteAccuracy, getIterationCount, getMaximalIterationCount, getRelativeAccuracy, resetAbsoluteAccuracy, resetMaximalIterationCount, resetRelativeAccuracy, setAbsoluteAccuracy, setMaximalIterationCount, setRelativeAccuracy`

- - ### Field Detail

    - #### ABSCISSAS_2

          private static final double[] ABSCISSAS_2

      Abscissas for the 2 points method.

    - #### WEIGHTS_2

          private static final double[] WEIGHTS_2

      Weights for the 2 points method.

    - #### ABSCISSAS_3

          private static final double[] ABSCISSAS_3

      Abscissas for the 3 points method.

    - #### WEIGHTS_3

          private static final double[] WEIGHTS_3

      Weights for the 3 points method.

    - #### ABSCISSAS_4

          private static final double[] ABSCISSAS_4

      Abscissas for the 4 points method.

    - #### WEIGHTS_4

          private static final double[] WEIGHTS_4

      Weights for the 4 points method.

    - #### ABSCISSAS_5

          private static final double[] ABSCISSAS_5

      Abscissas for the 5 points method.

    - #### WEIGHTS_5

          private static final double[] WEIGHTS_5

      Weights for the 5 points method.

    - #### abscissas

          private final double[] abscissas

      Abscissas for the current method.

    - #### weights

          private final double[] weights

      Weights for the current method.

  - ### Constructor Detail

    - #### LegendreGaussIntegrator

          public LegendreGaussIntegrator(int n,
                                 int defaultMaximalIterationCount)
                                  throws IllegalArgumentException

      Build a Legendre-Gauss integrator.
      Parameters:
        `n` - number of points desired (must be between 2 and 5 inclusive)
        `defaultMaximalIterationCount` - maximum number of iterations
      Throws:
        `IllegalArgumentException` - if the number of points is not in the supported range

  - ### Method Detail

    - #### integrate

          @Deprecated
          public double integrate(double min,
                                    double max)
                           throws ConvergenceException,
                                  FunctionEvaluationException,
                                  IllegalArgumentException

      Deprecated.
      Integrate the function in the given interval.
      Parameters:
        `min` - the lower bound for the interval
        `max` - the upper bound for the interval
      Returns:
        the value of integral
      Throws:
        `ConvergenceException` - if the maximum iteration count is exceeded or the integrator detects convergence problems otherwise
        `FunctionEvaluationException` - if an error occurs evaluating the function
        `IllegalArgumentException` - if min > max or the endpoints do not satisfy the requirements specified by the integrator

    - #### integrate

          public double integrate(UnivariateRealFunction f,
                         double min,
                         double max)
                           throws ConvergenceException,
                                  FunctionEvaluationException,
                                  IllegalArgumentException

      Integrate the function in the given interval.
      Parameters:
        `f` - the integrand function
        `min` - the lower bound for the interval
        `max` - the upper bound for the interval
      Returns:
        the value of integral
      Throws:
        `ConvergenceException` - if the maximum iteration count is exceeded or the integrator detects convergence problems otherwise
        `FunctionEvaluationException` - if an error occurs evaluating the function
        `IllegalArgumentException` - if min > max or the endpoints do not satisfy the requirements specified by the integrator

    - #### stage

          private double stage(UnivariateRealFunction f,
                     double min,
                     double max,
                     int n)
                        throws FunctionEvaluationException

      Compute the n-th stage integral.
      Parameters:
        `f` - the integrand function
        `min` - the lower bound for the interval
        `max` - the upper bound for the interval
        `n` - number of steps
      Returns:
        the value of n-th stage integral
      Throws:
        `FunctionEvaluationException` - if an error occurs evaluating the function

Copyright (c) 2003-2013 Apache Software Foundation