Copyright | Copyright (c) 2009-2017 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
The module defines something which is most close to the notion of analogous circuit as an opposite to the digital one.
- newtype Transform m a b = Transform {
- runTransform :: Dynamics m a -> Simulation m (Dynamics m b)
- delayTransform :: MonadSD m => Dynamics m Double -> Dynamics m a -> Transform m a a
- timeTransform :: Monad m => Transform m a Double
- integTransform :: (MonadSD m, MonadFix m) => Dynamics m Double -> Transform m Double Double
- integTransformEither :: (MonadSD m, MonadFix m) => Dynamics m Double -> Transform m (Either Double Double) Double
- sumTransform :: (MonadSD m, MonadFix m, Num a, MonadMemo m a) => Dynamics m a -> Transform m a a
- sumTransformEither :: (MonadSD m, MonadFix m, Num a, MonadMemo m a) => Dynamics m a -> Transform m (Either a a) a
The Transform Arrow
newtype Transform m a b Source #
It allows representing an analogous circuit as an opposite to the digital one.
This is a transform of one time varying function to another usually
specified in the integration time points and then interpolated in
other time points with help of one of the memoization functions
like memo0Dynamics
.
Transform | |
|
Delaying the Transform
The Time Transform
timeTransform :: Monad m => Transform m a Double Source #
A transform that returns the current modeling time.
Differential and Difference Equations
:: (MonadSD m, MonadFix m) | |
=> Dynamics m Double | the initial value |
-> Transform m (Either Double Double) Double | map either a new |
Like integTransform
but allows either setting a new Left
value of the integral,
or updating it by the specified Right
derivative.