aivika-4.3.1: A multi-paradigm simulation library

Copyright Copyright (c) 2009-2015, David Sorokin BSD3 David Sorokin experimental None Haskell2010

Simulation.Aivika.Transform

Description

Tested with: GHC 7.10.1

The module defines something which is most close to the notion of analogous circuit as an opposite to the digital one.

Synopsis

# The Transform Arrow

newtype Transform 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`.

Constructors

 Transform FieldsrunTransform :: Dynamics a -> Simulation (Dynamics b)Run the transform.

Instances

 Source Source Source

# Delaying the Transform

Arguments

 :: Dynamics Double the lag time -> Dynamics a the initial value -> Transform a a the delayed transform

Return a delayed transform by the specified lag time and initial value.

This is actually the `delayI` function wrapped in the `Transform` type.

# The Time Transform

A transform that returns the current modeling time.

# Differential and Difference Equations

Arguments

 :: Dynamics Double the initial value -> Transform Double Double map the derivative to an integral

Return a transform that maps the derivative to an integral by the specified initial value.

This is actually the `integ` function wrapped in the `Transform` type.

Arguments

 :: Dynamics Double the initial value -> Transform (Either Double Double) Double map either a new `Left` value or the `Right` derivative to an integral

Like `integTransform` but allows either setting a new `Left` value of the integral, or updating it by the specified `Right` derivative.

Arguments

 :: (Num a, Unboxed a) => Dynamics a the initial value -> Transform a a map the difference to a sum

Return a transform that maps the difference to a sum by the specified initial value.

This is actually the `diffsum` function wrapped in the `Transform` type.

Arguments

 :: (Num a, Unboxed a) => Dynamics a the initial value -> Transform (Either a a) a map either a new `Left` value or the `Right` difference to a sum

Like `sumTransform` but allows either setting a new `Left` value of the sum, or updating it by the specified `Right` difference.