aivika-transformers-2.0: Transformers for the Aivika simulation library

CopyrightCopyright (c) 2009-2014, David Sorokin <david.sorokin@gmail.com>
LicenseBSD3
MaintainerDavid Sorokin <david.sorokin@gmail.com>
Stabilityexperimental
Safe HaskellSafe-Inferred
LanguageHaskell2010

Simulation.Aivika.Trans.Dynamics.Extra

Contents

Description

Tested with: GHC 7.8.3

This module defines auxiliary functions such as interpolation ones that complement the memoization, for example. There are scan functions too.

Synopsis

Interpolation

initDynamics :: Dynamics m a -> Dynamics m a Source

Return the initial value.

discreteDynamics :: Dynamics m a -> Dynamics m a Source

Discretize the computation in the integration time points.

interpolateDynamics :: Dynamics m a -> Dynamics m a Source

Interpolate the computation based on the integration time points only. Unlike the discreteDynamics function it knows about the intermediate time points that are used in the Runge-Kutta method.

Scans

scanDynamics :: (MonadComp m, MonadFix m) => (a -> b -> a) -> a -> (Dynamics m a -> Simulation m (Dynamics m a)) -> Dynamics m b -> Simulation m (Dynamics m a) Source

Like the standard scanl function but applied to values in the integration time points. The accumulator values are transformed according to the third argument, which should be either function memo0Dynamics or its unboxed version.

scan1Dynamics :: (MonadComp m, MonadFix m) => (a -> a -> a) -> (Dynamics m a -> Simulation m (Dynamics m a)) -> Dynamics m a -> Simulation m (Dynamics m a) Source

Like the standard scanl1 function but applied to values in the integration time points. The accumulator values are transformed according to the second argument, which should be either function memo0Dynamics or its unboxed version.