Drkcore

31 01 2010 Haskell Tweet

Haskellでルンゲ・クッタ法

さきのオイラー法よりも効率の良いRunge-Kutta法をHaskellで

runge h f  p = runge'
    where runge' = p:zipWith runge'' runge' [h*x| x <- [1..]] 
              where runge'' x t = x + (k1 + 2*k2 + 2*k3 + k4)/6
                        where
                          k1 = h * f x t
                          k2 = h * f (x + k1/2) (t + h/2)
                          k3 = h * f (x + k2/2) (t + h/2)
                          k4 = h * f (x + k3)  (t +h)

f x t = x

刻み幅がそんなに小さくなくても、かなりいい精度が出ていることがわかる。

*Main> let eu = runge 0.1 f 1
*Main> eu !! 10
2.718279744135166

テーラー展開はこれが参考になるというか、展開をするというイメージをつかみやすくなると思う。

ProductName 「無限と連続」の数学―微分積分学の基礎理論案内
瀬山 士郎
東京図書 / ¥ 2,625 ()
在庫あり。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021