Copyright | Copyright (c) 2009-2016, 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 8.0.1
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.