org.apache.commons.math.ode.nonstiff
Class ThreeEighthesStepInterpolator

java.lang.Object
  extended by org.apache.commons.math.ode.sampling.AbstractStepInterpolator
      extended by org.apache.commons.math.ode.nonstiff.RungeKuttaStepInterpolator
          extended by org.apache.commons.math.ode.nonstiff.ThreeEighthesStepInterpolator
All Implemented Interfaces:
Externalizable, Serializable, StepInterpolator

 class ThreeEighthesStepInterpolator
extends RungeKuttaStepInterpolator

This class implements a step interpolator for the 3/8 fourth order Runge-Kutta integrator.

This interpolator allows to compute dense output inside the last step computed. The interpolation equation is consistent with the integration scheme :

   y(t_n + theta h) = y (t_n + h)
                    - (1 - theta) (h/8) [ (1 - 7 theta + 8 theta^2) y'_1
                                      + 3 (1 +   theta - 4 theta^2) y'_2
                                      + 3 (1 +   theta)             y'_3
                                      +   (1 +   theta + 4 theta^2) y'_4
                                        ]
 
where theta belongs to [0 ; 1] and where y'_1 to y'_4 are the four evaluations of the derivatives already computed during the step.

Since:
1.2
Version:
$Revision: 782432 $ $Date: 2009-06-07 15:08:26 -0400 (Sun, 07 Jun 2009) $
See Also:
ThreeEighthesIntegrator

Field Summary
private static long serialVersionUID
          Serializable version identifier
 
Fields inherited from class org.apache.commons.math.ode.nonstiff.RungeKuttaStepInterpolator
integrator, yDotK
 
Fields inherited from class org.apache.commons.math.ode.sampling.AbstractStepInterpolator
currentState, currentTime, h, interpolatedDerivatives, interpolatedState, interpolatedTime, previousTime
 
Constructor Summary
ThreeEighthesStepInterpolator()
          Simple constructor.
ThreeEighthesStepInterpolator(ThreeEighthesStepInterpolator interpolator)
          Copy constructor.
 
Method Summary
protected  void computeInterpolatedStateAndDerivatives(double theta, double oneMinusThetaH)
          Compute the state and derivatives at the interpolated time.
protected  StepInterpolator doCopy()
          Really copy the finalized instance.
 
Methods inherited from class org.apache.commons.math.ode.nonstiff.RungeKuttaStepInterpolator
readExternal, reinitialize, writeExternal
 
Methods inherited from class org.apache.commons.math.ode.sampling.AbstractStepInterpolator
copy, doFinalize, finalizeStep, getCurrentTime, getInterpolatedDerivatives, getInterpolatedState, getInterpolatedTime, getPreviousTime, isForward, readBaseExternal, reinitialize, setInterpolatedTime, shift, storeTime, writeBaseExternal
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

serialVersionUID

private static final long serialVersionUID
Serializable version identifier

See Also:
Constant Field Values
Constructor Detail

ThreeEighthesStepInterpolator

public ThreeEighthesStepInterpolator()
Simple constructor. This constructor builds an instance that is not usable yet, the AbstractStepInterpolator.reinitialize(double[], boolean) method should be called before using the instance in order to initialize the internal arrays. This constructor is used only in order to delay the initialization in some cases. The RungeKuttaIntegrator class uses the prototyping design pattern to create the step interpolators by cloning an uninitialized model and latter initializing the copy.


ThreeEighthesStepInterpolator

public ThreeEighthesStepInterpolator(ThreeEighthesStepInterpolator interpolator)
Copy constructor.

Parameters:
interpolator - interpolator to copy from. The copy is a deep copy: its arrays are separated from the original arrays of the instance
Method Detail

doCopy

protected StepInterpolator doCopy()
Really copy the finalized instance.

This method is called by AbstractStepInterpolator.copy() after the step has been finalized. It must perform a deep copy to have an new instance completely independent for the original instance.

Specified by:
doCopy in class AbstractStepInterpolator
Returns:
a copy of the finalized instance

computeInterpolatedStateAndDerivatives

protected void computeInterpolatedStateAndDerivatives(double theta,
                                                      double oneMinusThetaH)
                                               throws DerivativeException
Compute the state and derivatives at the interpolated time. This is the main processing method that should be implemented by the derived classes to perform the interpolation.

Specified by:
computeInterpolatedStateAndDerivatives in class AbstractStepInterpolator
Parameters:
theta - normalized interpolation abscissa within the step (theta is zero at the previous time step and one at the current time step)
oneMinusThetaH - time gap between the interpolated time and the current time
Throws:
DerivativeException - this exception is propagated to the caller if the underlying user function triggers one


Copyright (c) 2003-2010 Apache Software Foundation