org.apache.commons.math.ode.nonstiff
public class DormandPrince54Integrator extends EmbeddedRungeKuttaIntegrator
This integrator is an embedded Runge-Kutta integrator of order 5(4) used in local extrapolation mode (i.e. the solution is computed using the high order formula) with stepsize control (and automatic step initialization) and continuous output. This method uses 7 functions evaluations per step. However, since this is an fsal, the last evaluation of one step is the same as the first evaluation of the next step and hence can be avoided. So the cost is really 6 functions evaluations per step.
This method has been published (whithout the continuous output that was added by Shampine in 1986) in the following article :
A family of embedded Runge-Kutta formulae J. R. Dormand and P. J. Prince Journal of Computational and Applied Mathematics volume 6, no 1, 1980, pp. 19-26
Modifier and Type | Field and Description |
---|---|
private static double |
E1
Error array, element 1.
|
private static double |
E3
Error array, element 3.
|
private static double |
E4
Error array, element 4.
|
private static double |
E5
Error array, element 5.
|
private static double |
E6
Error array, element 6.
|
private static double |
E7
Error array, element 7.
|
private static java.lang.String |
METHOD_NAME
Integrator method name.
|
private static double[][] |
STATIC_A
Internal weights Butcher array.
|
private static double[] |
STATIC_B
Propagation weights Butcher array.
|
private static double[] |
STATIC_C
Time steps Butcher array.
|
mainSetDimension, scalAbsoluteTolerance, scalRelativeTolerance, vecAbsoluteTolerance, vecRelativeTolerance
isLastStep, resetOccurred, stepHandlers, stepSize, stepStart
Constructor and Description |
---|
DormandPrince54Integrator(double minStep,
double maxStep,
double[] vecAbsoluteTolerance,
double[] vecRelativeTolerance)
Simple constructor.
|
DormandPrince54Integrator(double minStep,
double maxStep,
double scalAbsoluteTolerance,
double scalRelativeTolerance)
Simple constructor.
|
Modifier and Type | Method and Description |
---|---|
protected double |
estimateError(double[][] yDotK,
double[] y0,
double[] y1,
double h)
Compute the error ratio.
|
int |
getOrder()
Get the order of the method.
|
getMaxGrowth, getMinReduction, getSafety, integrate, setMaxGrowth, setMinReduction, setSafety
filterStep, getCurrentStepStart, getMaxStep, getMinStep, initializeStep, resetInternalState, sanityChecks, setInitialStepSize
acceptStep, addEndTimeChecker, addEventHandler, addStepHandler, clearEventHandlers, clearStepHandlers, computeDerivatives, getCurrentSignedStepsize, getEvaluations, getEventHandlers, getMaxEvaluations, getName, getStepHandlers, requiresDenseOutput, resetEvaluations, setEquations, setMaxEvaluations, setStateInitialized
private static final java.lang.String METHOD_NAME
private static final double[] STATIC_C
private static final double[][] STATIC_A
private static final double[] STATIC_B
private static final double E1
private static final double E3
private static final double E4
private static final double E5
private static final double E6
private static final double E7
public DormandPrince54Integrator(double minStep, double maxStep, double scalAbsoluteTolerance, double scalRelativeTolerance)
minStep
- minimal step (must be positive even for backward
integration), the last step can be smaller than thismaxStep
- maximal step (must be positive even for backward
integration)scalAbsoluteTolerance
- allowed absolute errorscalRelativeTolerance
- allowed relative errorpublic DormandPrince54Integrator(double minStep, double maxStep, double[] vecAbsoluteTolerance, double[] vecRelativeTolerance)
minStep
- minimal step (must be positive even for backward
integration), the last step can be smaller than thismaxStep
- maximal step (must be positive even for backward
integration)vecAbsoluteTolerance
- allowed absolute errorvecRelativeTolerance
- allowed relative errorpublic int getOrder()
getOrder
in class EmbeddedRungeKuttaIntegrator
protected double estimateError(double[][] yDotK, double[] y0, double[] y1, double h)
estimateError
in class EmbeddedRungeKuttaIntegrator
yDotK
- derivatives computed during the first stagesy0
- estimate of the step at the start of the stepy1
- estimate of the step at the end of the steph
- current stepCopyright (c) 2003-2016 Apache Software Foundation