Copyright | Copyright (c) 2009-2015, David Sorokin <david.sorokin@gmail.com> |
---|---|
License | BSD3 |
Maintainer | David Sorokin <david.sorokin@gmail.com> |
Stability | experimental |
Safe Haskell | None |
Language | Haskell2010 |
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.
- initDynamics :: Dynamics a -> Dynamics a
- discreteDynamics :: Dynamics a -> Dynamics a
- interpolateDynamics :: Dynamics a -> Dynamics a
- scanDynamics :: (a -> b -> a) -> a -> (Dynamics a -> Simulation (Dynamics a)) -> Dynamics b -> Simulation (Dynamics a)
- scan1Dynamics :: (a -> a -> a) -> (Dynamics a -> Simulation (Dynamics a)) -> Dynamics a -> Simulation (Dynamics a)
Interpolation
initDynamics :: Dynamics a -> Dynamics a Source
Return the initial value.
discreteDynamics :: Dynamics a -> Dynamics a Source
Discretize the computation in the integration time points.
interpolateDynamics :: Dynamics a -> Dynamics 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 :: (a -> b -> a) -> a -> (Dynamics a -> Simulation (Dynamics a)) -> Dynamics b -> Simulation (Dynamics 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 :: (a -> a -> a) -> (Dynamics a -> Simulation (Dynamics a)) -> Dynamics a -> Simulation (Dynamics 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.