On Tue, 25 Sep 2007, Thomas Girod wrote:
Let's say I have mathematical model composed of several differential equations, such as : di/dt = cos(i) dc/dt = alpha * (i(t) - c(t)) (sorry my maths are really bad, but I hope you get the point) I would like to approximate the evolution of such a system iteratively. How would you do that in haskell ?
Solving differential equations in Haskell can be done in a very elegant manner. My favorite example:
integrate :: Num a => a -> [a] -> [a] integrate = scanl (+) eulerExplicit :: Num a => (a -> a -> a) -> a -> a -> [a] eulerExplicit f x0 y0 = let x = iterate (1+) x0 y = integrate y0 y' y' = zipWith f x y in y It's left as an exercise to extend this to two differential equations. See also: Jerzy Karczmarczuk: "Lazy Processing and Optimization of Discrete Sequences" http://users.info.unicaen.fr/~karczma/arpap/ http://darcs.haskell.org/htam/src/Numerics/ODEEuler.lhs _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe