|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.commons.math.ode.AbstractIntegrator
org.apache.commons.math.ode.nonstiff.AdaptiveStepsizeIntegrator
org.apache.commons.math.ode.MultistepIntegrator
org.apache.commons.math.ode.nonstiff.AdamsIntegrator
public abstract class AdamsIntegrator
Base class for Adams-Bashforth
and
Adams-Moulton
integrators.
Nested Class Summary |
---|
Nested classes/interfaces inherited from class org.apache.commons.math.ode.MultistepIntegrator |
---|
MultistepIntegrator.NordsieckTransformer |
Field Summary | |
---|---|
private AdamsNordsieckTransformer |
transformer
Transformer. |
Fields inherited from class org.apache.commons.math.ode.MultistepIntegrator |
---|
nordsieck, scaled |
Fields inherited from class org.apache.commons.math.ode.nonstiff.AdaptiveStepsizeIntegrator |
---|
scalAbsoluteTolerance, scalRelativeTolerance, vecAbsoluteTolerance, vecRelativeTolerance |
Fields inherited from class org.apache.commons.math.ode.AbstractIntegrator |
---|
eventsHandlersManager, stepHandlers, stepSize, stepStart |
Constructor Summary | |
---|---|
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. |
Method Summary | |
---|---|
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). |
Methods inherited from class org.apache.commons.math.ode.MultistepIntegrator |
---|
computeStepGrowShrinkFactor, getMaxGrowth, getMinReduction, getSafety, getStarterIntegrator, setMaxGrowth, setMinReduction, setSafety, setStarterIntegrator, start |
Methods inherited from class org.apache.commons.math.ode.nonstiff.AdaptiveStepsizeIntegrator |
---|
filterStep, getCurrentStepStart, getMaxStep, getMinStep, initializeStep, resetInternalState, sanityChecks, setInitialStepSize |
Methods inherited from class org.apache.commons.math.ode.AbstractIntegrator |
---|
addEndTimeChecker, addEventHandler, addStepHandler, clearEventHandlers, clearStepHandlers, computeDerivatives, getCurrentSignedStepsize, getEvaluations, getEventHandlers, getMaxEvaluations, getName, getStepHandlers, requiresDenseOutput, resetEvaluations, setEquations, setMaxEvaluations |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private final AdamsNordsieckTransformer transformer
Constructor Detail |
---|
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 error
IllegalArgumentException
- 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 error
IllegalArgumentException
- if order is 1 or lessMethod Detail |
---|
public 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 y0
EventHandler
stops it at some point.
DerivativeException
- this exception is propagated to the caller if
the underlying user function triggers one
IntegratorException
- 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 modified
public 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)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |