Class GaussIntegratorFactory

java.lang.Object
org.apache.commons.math3.analysis.integration.gauss.GaussIntegratorFactory

public class GaussIntegratorFactory extends Object
Class that provides different ways to compute the nodes and weights to be used by the Gaussian integration rule.
Since:
3.1
  • Field Details

  • Constructor Details

    • GaussIntegratorFactory

      public GaussIntegratorFactory()
  • Method Details

    • legendre

      public GaussIntegrator legendre(int numberOfPoints)
      Creates a Gauss-Legendre integrator of the given order. The call to the integrate method will perform an integration on the natural interval [-1 , 1].
      Parameters:
      numberOfPoints - Order of the integration rule.
      Returns:
      a Gauss-Legendre integrator.
    • legendre

      public GaussIntegrator legendre(int numberOfPoints, double lowerBound, double upperBound) throws NotStrictlyPositiveException
      Creates a Gauss-Legendre integrator of the given order. The call to the integrate method will perform an integration on the given interval.
      Parameters:
      numberOfPoints - Order of the integration rule.
      lowerBound - Lower bound of the integration interval.
      upperBound - Upper bound of the integration interval.
      Returns:
      a Gauss-Legendre integrator.
      Throws:
      NotStrictlyPositiveException - if number of points is not positive
    • legendreHighPrecision

      public GaussIntegrator legendreHighPrecision(int numberOfPoints) throws NotStrictlyPositiveException
      Creates a Gauss-Legendre integrator of the given order. The call to the integrate method will perform an integration on the natural interval [-1 , 1].
      Parameters:
      numberOfPoints - Order of the integration rule.
      Returns:
      a Gauss-Legendre integrator.
      Throws:
      NotStrictlyPositiveException - if number of points is not positive
    • legendreHighPrecision

      public GaussIntegrator legendreHighPrecision(int numberOfPoints, double lowerBound, double upperBound) throws NotStrictlyPositiveException
      Creates an integrator of the given order, and whose call to the integrate method will perform an integration on the given interval.
      Parameters:
      numberOfPoints - Order of the integration rule.
      lowerBound - Lower bound of the integration interval.
      upperBound - Upper bound of the integration interval.
      Returns:
      a Gauss-Legendre integrator.
      Throws:
      NotStrictlyPositiveException - if number of points is not positive
    • hermite

      public SymmetricGaussIntegrator hermite(int numberOfPoints)
      Creates a Gauss-Hermite integrator of the given order. The call to the integrate method will perform a weighted integration on the interval \([-\infty, +\infty]\): the computed value is the improper integral of \(e^{-x^2}f(x)\) where \(f(x)\) is the function passed to the integrate method.
      Parameters:
      numberOfPoints - Order of the integration rule.
      Returns:
      a Gauss-Hermite integrator.
    • getRule

      private static Pair<double[],double[]> getRule(BaseRuleFactory<? extends Number> factory, int numberOfPoints) throws NotStrictlyPositiveException, DimensionMismatchException
      Parameters:
      factory - Integration rule factory.
      numberOfPoints - Order of the integration rule.
      Returns:
      the integration nodes and weights.
      Throws:
      NotStrictlyPositiveException - if number of points is not positive
      DimensionMismatchException - if the elements of the rule pair do not have the same length.
    • transform

      private static Pair<double[],double[]> transform(Pair<double[],double[]> rule, double a, double b)
      Performs a change of variable so that the integration can be performed on an arbitrary interval [a, b]. It is assumed that the natural interval is [-1, 1].
      Parameters:
      rule - Original points and weights.
      a - Lower bound of the integration interval.
      b - Lower bound of the integration interval.
      Returns:
      the points and weights adapted to the new interval.