Class RombergMatrixIntegrator<T extends MatrixQuadrature>
java.lang.Object
com.irurueta.numerical.integration.MatrixIntegrator
com.irurueta.numerical.integration.RombergMatrixIntegrator<T>
- Type Parameters:
T
- instance of a quadrature to be used for Romberg's method integration.
- Direct Known Subclasses:
RombergDoubleExponentialRuleQuadratureMatrixIntegrator
,RombergExponentialMidPointQuadratureMatrixIntegrator
,RombergInfinityMidPointQuadratureMatrixIntegrator
,RombergLowerSquareRootMidPointQuadratureMatrixIntegrator
,RombergMidPointQuadratureMatrixIntegrator
,RombergTrapezoidalQuadratureMatrixIntegrator
,RombergUpperSquareRootMidPointQuadratureMatrixIntegrator
Base integrator for implementations based on Romberg's method.
Romberg's method is a generalization of Simpson's method for higher order integration schemes.
This can be used to computed integration with less function evaluations for the same level of
accuracy when more assumptions of function "smoothness" can be made.
Implementations of Romberg's method are quite powerful for sufficiently smooth (e.g., analytic)
integrands, integrated over intervals that contain no singularities, and where the endpoints are
also non-singular. In such circumstances, Romberg's method, takes many, many fewer function
evaluations than other method's such as Simpson's.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final double
Required accuracy.static final double
Default accuracy.private final double[]
Successive trapezoidal step sizes.private static final int
Maximum number of allowed steps.private static final int
Maximum number of allowed steps + 1.private static final int
Minimum required number of steps.protected final T
Quadrature used for integration.private final com.irurueta.algebra.Matrix[]
Successive trapezoidal approximations.Fields inherited from class com.irurueta.numerical.integration.MatrixIntegrator
DEFAULT_INTEGRATOR_TYPE, DEFAULT_QUADRATURE_TYPE
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate static RombergMatrixIntegrator<MatrixQuadrature>
cast
(RombergMatrixIntegrator<?> integrator) Casts integrator to a quadrature integrator without wildcard parameter.create
(double a, double b, MatrixSingleDimensionFunctionEvaluatorListener listener) Creates an integrator using Romberg's method and having default accuracy and quadrature type.create
(double a, double b, MatrixSingleDimensionFunctionEvaluatorListener listener, double eps) Creates an integrator using Romberg's method and default quadrature type.create
(double a, double b, MatrixSingleDimensionFunctionEvaluatorListener listener, double eps, QuadratureType quadratureType) Creates an integrator using Romberg's method.create
(double a, double b, MatrixSingleDimensionFunctionEvaluatorListener listener, QuadratureType quadratureType) Creates an integrator using Romberg's method and having default accuracy.Gets type of integrator.void
integrate
(com.irurueta.algebra.Matrix result) Integrates function between provided lower and upper limits.Methods inherited from class com.irurueta.numerical.integration.MatrixIntegrator
create, create, create, create, getQuadratureType
-
Field Details
-
EPS
public static final double EPSDefault accuracy.- See Also:
-
JMAX
private static final int JMAXMaximum number of allowed steps.- See Also:
-
JMAXP
private static final int JMAXPMaximum number of allowed steps + 1.- See Also:
-
K
private static final int KMinimum required number of steps.- See Also:
-
q
Quadrature used for integration. -
eps
protected final double epsRequired accuracy. -
s
private final com.irurueta.algebra.Matrix[] sSuccessive trapezoidal approximations. -
h
private final double[] hSuccessive trapezoidal step sizes.
-
-
Constructor Details
-
RombergMatrixIntegrator
Constructor.- Parameters:
q
- Quadrature used for integration.eps
- Required accuracy.
-
-
Method Details
-
integrate
Integrates function between provided lower and upper limits.- Specified by:
integrate
in classMatrixIntegrator
- Parameters:
result
- instance where result of integration will be stored.- Throws:
IntegrationException
- if integration fails for numerical reasons.
-
getIntegratorType
Gets type of integrator.- Specified by:
getIntegratorType
in classMatrixIntegrator
- Returns:
- type of integrator.
-
create
public static RombergMatrixIntegrator<MatrixQuadrature> create(double a, double b, MatrixSingleDimensionFunctionEvaluatorListener listener, double eps, QuadratureType quadratureType) throws com.irurueta.algebra.WrongSizeException Creates an integrator using Romberg's method. It must be noticed that upper limit of integration is ignored when using exponential mid-point quadrature type.- Parameters:
a
- Lower limit of integration.b
- Upper limit of integration.listener
- listener to evaluate a single dimension function at required points.eps
- required accuracy.quadratureType
- quadrature type.- Returns:
- created integrator.
- Throws:
IllegalArgumentException
- if provided quadrature type is not supported.com.irurueta.algebra.WrongSizeException
- if size notified by provided listener is invalid.
-
create
public static RombergMatrixIntegrator<MatrixQuadrature> create(double a, double b, MatrixSingleDimensionFunctionEvaluatorListener listener, QuadratureType quadratureType) throws com.irurueta.algebra.WrongSizeException Creates an integrator using Romberg's method and having default accuracy. It must be noticed that upper limit of integration is ignored when using exponential mid-point quadrature type.- Parameters:
a
- Lower limit of integration.b
- Upper limit of integration.listener
- listener to evaluate a single dimension function at required points.quadratureType
- quadrature type.- Returns:
- created integrator.
- Throws:
IllegalArgumentException
- if provided quadrature type is not supported.com.irurueta.algebra.WrongSizeException
- if size notified by provided listener is invalid.
-
create
public static RombergMatrixIntegrator<MatrixQuadrature> create(double a, double b, MatrixSingleDimensionFunctionEvaluatorListener listener, double eps) throws com.irurueta.algebra.WrongSizeException Creates an integrator using Romberg's method and default quadrature type. It must be noticed that upper limit of integration is ignored when using exponential mid-point quadrature type.- Parameters:
a
- Lower limit of integration.b
- Upper limit of integration.listener
- listener to evaluate a single dimension function at required points.eps
- required accuracy.- Returns:
- created integrator.
- Throws:
com.irurueta.algebra.WrongSizeException
- if size notified by provided listener is invalid.
-
create
public static RombergMatrixIntegrator<MatrixQuadrature> create(double a, double b, MatrixSingleDimensionFunctionEvaluatorListener listener) throws com.irurueta.algebra.WrongSizeException Creates an integrator using Romberg's method and having default accuracy and quadrature type. It must be noticed that upper limit of integration is ignored when using exponential mid-point quadrature type.- Parameters:
a
- Lower limit of integration.b
- Upper limit of integration.listener
- listener to evaluate a single dimension function at required points.- Returns:
- created integrator.
- Throws:
com.irurueta.algebra.WrongSizeException
- if size notified by provided listener is invalid.
-
cast
private static RombergMatrixIntegrator<MatrixQuadrature> cast(RombergMatrixIntegrator<?> integrator) Casts integrator to a quadrature integrator without wildcard parameter.- Parameters:
integrator
- integrator to be cast.- Returns:
- cast integrator.
-