numeric-ode-0.0.0.0: src/Math/Integrators/ExplicitEuler.hs
{-# LANGUAGE FlexibleContexts #-}
-- |
-- Module: Math.Integrators.ExplicitEuler.
--
-- Basic integrator using Euler method. It has following properies:
-- * allows to solve systems of the first order
-- * this method is not symplectic and tends to loose energy
--
module Math.Integrators.ExplicitEuler
where
import Linear
-- | Integrator of form
--
-- \[ \Phi[h] : y_{n+1} = y_n + h f (y_n) \]
explicitEuler :: (Num (f a), Floating a, Additive f) => (f a -> f a) -> a -> f a -> f a
explicitEuler f = \h y -> y ^+^ h *^ (f y)