drkcore

2010/01/30 18:19:35

Haskellでオイラー法を実装する

オイラー法とはあれです、常微分方程式解くやつ。

これをHaskellで実装してみた。下の二行。

euler h f = euler'
    where euler' = (f 1.0 0.0): zipWith (+) euler' [h*y| y <- (zipWith f euler' [h*x| x <- [1..]])]

f = xにすればx = e**tが解になるので。

f _ 0.0 = 1.0
f x t = x

として解いてみる。

*Main> euler 0.00001 f !! 100000
2.7182510547639454

あんま刻み幅を小さくしすぎるのはだめ。

*Main> euler 0.000001 f !! 1000000
*** Exception: stack overflow

Comments