public abstract class AdamsIntegrator extends MultistepIntegrator
Adams-Bashforth
and
Adams-Moulton
integrators.MultistepIntegrator.NordsieckTransformer
nordsieck, scaled
mainSetDimension, scalAbsoluteTolerance, scalRelativeTolerance, vecAbsoluteTolerance, vecRelativeTolerance
isLastStep, resetOccurred, stepHandlers, stepSize, stepStart
Constructor and Description |
---|
AdamsIntegrator(String name,
int nSteps,
int order,
double minStep,
double maxStep,
double[] vecAbsoluteTolerance,
double[] vecRelativeTolerance)
Build an Adams integrator with the given order and step control parameters.
|
AdamsIntegrator(String name,
int nSteps,
int order,
double minStep,
double maxStep,
double scalAbsoluteTolerance,
double scalRelativeTolerance)
Build an Adams integrator with the given order and step control prameters.
|
Modifier and Type | Method and Description |
---|---|
protected Array2DRowRealMatrix |
initializeHighOrderDerivatives(double[] first,
double[][] multistep)
Initialize the high order scaled derivatives at step start.
|
abstract double |
integrate(FirstOrderDifferentialEquations equations,
double t0,
double[] y0,
double t,
double[] y)
Integrate the differential equations up to the given time.
|
Array2DRowRealMatrix |
updateHighOrderDerivativesPhase1(Array2DRowRealMatrix highOrder)
Update the high order scaled derivatives for Adams integrators (phase 1).
|
void |
updateHighOrderDerivativesPhase2(double[] start,
double[] end,
Array2DRowRealMatrix highOrder)
Update the high order scaled derivatives Adams integrators (phase 2).
|
computeStepGrowShrinkFactor, getMaxGrowth, getMinReduction, getSafety, getStarterIntegrator, setMaxGrowth, setMinReduction, setSafety, setStarterIntegrator, start
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
public AdamsIntegrator(String name, int nSteps, int order, double minStep, double maxStep, double scalAbsoluteTolerance, double scalRelativeTolerance) throws IllegalArgumentException
name
- name of the methodnSteps
- number of steps of the method excluding the one being computedorder
- order of the methodminStep
- 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 errorIllegalArgumentException
- if order is 1 or lesspublic AdamsIntegrator(String name, int nSteps, int order, double minStep, double maxStep, double[] vecAbsoluteTolerance, double[] vecRelativeTolerance) throws IllegalArgumentException
name
- name of the methodnSteps
- number of steps of the method excluding the one being computedorder
- order of the methodminStep
- 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 errorIllegalArgumentException
- if order is 1 or lesspublic abstract double integrate(FirstOrderDifferentialEquations equations, double t0, double[] y0, double t, double[] y) throws DerivativeException, IntegratorException
This method solves an Initial Value Problem (IVP).
Since this method stores some internal state variables made
available in its public interface during integration (ODEIntegrator.getCurrentSignedStepsize()
), it is not thread-safe.
integrate
in interface FirstOrderIntegrator
integrate
in class AdaptiveStepsizeIntegrator
equations
- differential equations to integratet0
- initial timey0
- initial value of the state vector at t0t
- target time for the integration
(can be set to a value smaller than t0
for backward integration)y
- placeholder where to put the state vector at each successful
step (and hence at the end of integration), can be the same object as y0EventHandler
stops it at some point.DerivativeException
- this exception is propagated to the caller if
the underlying user function triggers oneIntegratorException
- if the integrator cannot perform integrationprotected Array2DRowRealMatrix initializeHighOrderDerivatives(double[] first, double[][] multistep)
initializeHighOrderDerivatives
in class MultistepIntegrator
first
- first scaled derivative at step startmultistep
- scaled derivatives after step start (hy'1, ..., hy'k-1)
will be modifiedpublic Array2DRowRealMatrix updateHighOrderDerivativesPhase1(Array2DRowRealMatrix highOrder)
The complete update of high order derivatives has a form similar to:
rn+1 = (s1(n) - s1(n+1)) P-1 u + P-1 A P rnthis method computes the P-1 A P rn part.
highOrder
- high order scaled derivatives
(h2/2 y'', ... hk/k! y(k))updateHighOrderDerivativesPhase2(double[], double[], Array2DRowRealMatrix)
public void updateHighOrderDerivativesPhase2(double[] start, double[] end, Array2DRowRealMatrix highOrder)
The complete update of high order derivatives has a form similar to:
rn+1 = (s1(n) - s1(n+1)) P-1 u + P-1 A P rnthis method computes the (s1(n) - s1(n+1)) P-1 u part.
Phase 1 of the update must already have been performed.
start
- first order scaled derivatives at step startend
- first order scaled derivatives at step endhighOrder
- high order scaled derivatives, will be modified
(h2/2 y'', ... hk/k! y(k))updateHighOrderDerivativesPhase1(Array2DRowRealMatrix)
Copyright © 2003–2016. All rights reserved.