Class SimpsonMatrixIntegrator<T extends MatrixQuadrature>
java.lang.Object
com.irurueta.numerical.integration.MatrixIntegrator
com.irurueta.numerical.integration.SimpsonMatrixIntegrator<T>
- Type Parameters:
T
- a quadrature.
- Direct Known Subclasses:
SimpsonDoubleExponentialRuleQuadratureMatrixIntegrator
,SimpsonInfinityMidPointQuadratureMatrixIntegrator
,SimpsonLowerSquareRootMidPointQuadratureMatrixIntegrator
,SimpsonMidPointQuadratureMatrixIntegrator
,SimpsonTrapezoidalQuadratureMatrixIntegrator
,SimpsonUpperSquareRootMidPointQuadratureMatrixIntegrator
Base integrator for implementations based on Simpson's method.
Simpson's method is an optimization of Trapezoidal quadrature integrator.
Implementations of this class will in general be more efficient than
Trapezoidal quadrature matrix integrators (i.e., require fewer function evaluations) when the
matrix function to be integrated has a finite fourth derivative (i.e., a continuous third
derivative).
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final double
Required accuracy.static final double
Default accuracy.private static final int
Maximum number of allowed steps.private static final int
Minimum required number of steps.private final T
Quadrature used for integration.Fields inherited from class com.irurueta.numerical.integration.MatrixIntegrator
DEFAULT_INTEGRATOR_TYPE, DEFAULT_QUADRATURE_TYPE
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate static SimpsonMatrixIntegrator<MatrixQuadrature>
cast
(SimpsonMatrixIntegrator<?> integrator) Casts integrator to a quadrature integrator without wildcard parameter.create
(double a, double b, MatrixSingleDimensionFunctionEvaluatorListener listener) Creates an integrator using Simpson's method and having default accuracy and quadrature type.create
(double a, double b, MatrixSingleDimensionFunctionEvaluatorListener listener, double eps) Creates an integrator using Simpson's method and default quadrature type.create
(double a, double b, MatrixSingleDimensionFunctionEvaluatorListener listener, double eps, QuadratureType quadratureType) Creates an integrator using Simpson's method.create
(double a, double b, MatrixSingleDimensionFunctionEvaluatorListener listener, QuadratureType quadratureType) Creates an integrator using Simpson'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.private static double
normMin
(com.irurueta.algebra.Matrix a) Estimates smallest norm of provided matrix.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:
-
JMIN
private static final int JMINMinimum required number of steps.- See Also:
-
JMAX
private static final int JMAXMaximum number of allowed steps.- See Also:
-
q
Quadrature used for integration. -
eps
private final double epsRequired accuracy.
-
-
Constructor Details
-
SimpsonMatrixIntegrator
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 SimpsonMatrixIntegrator<MatrixQuadrature> create(double a, double b, MatrixSingleDimensionFunctionEvaluatorListener listener, double eps, QuadratureType quadratureType) throws com.irurueta.algebra.WrongSizeException Creates an integrator using Simpson's method.- 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 SimpsonMatrixIntegrator<MatrixQuadrature> create(double a, double b, MatrixSingleDimensionFunctionEvaluatorListener listener, QuadratureType quadratureType) throws com.irurueta.algebra.WrongSizeException Creates an integrator using Simpson's method and having default accuracy.- 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 SimpsonMatrixIntegrator<MatrixQuadrature> create(double a, double b, MatrixSingleDimensionFunctionEvaluatorListener listener, double eps) throws com.irurueta.algebra.WrongSizeException Creates an integrator using Simpson's method and default 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 SimpsonMatrixIntegrator<MatrixQuadrature> create(double a, double b, MatrixSingleDimensionFunctionEvaluatorListener listener) throws com.irurueta.algebra.WrongSizeException Creates an integrator using Simpson's method and having default accuracy and 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.
-
normMin
private static double normMin(com.irurueta.algebra.Matrix a) Estimates smallest norm of provided matrix. Smallest norm is used to ensure convergence of all elements in matrix.- Parameters:
a
- matrix to compute min norm for.- Returns:
- estimated min norm.
-
cast
private static SimpsonMatrixIntegrator<MatrixQuadrature> cast(SimpsonMatrixIntegrator<?> integrator) Casts integrator to a quadrature integrator without wildcard parameter.- Parameters:
integrator
- integrator to be cast.- Returns:
- cast integrator.
-