読者です 読者をやめる 読者になる 読者になる

FUJILOG

見た、聴いた、触れたこと。 動かしたもの、書いたもの。 ウェブとリアルの備忘録です。

javascriptで4次Runge-Kutta法

ルンゲ=クッタ法(Runge-Kutta method)は、数値解析において常微分方程式近似解を求める方法。

今回は、ルンゲクッタ法のサンプルJavaScriptで作って動かしてみました。
 


EpidemiologyのSIRモデルのプログラムを見ていて、ここでもルンゲクッタを使用していたので、一度触っておいて損はなかろうと思いまして。

SIRモデルはウィルスの感染過程を”感染の可能性のある者”・”感染した者”・”感染の可能性の無い者(免疫できた or 隔離された or 亡くなった)”に3区分し、それぞれの状態遷移をプログラムで可視化したようなものです。

これをメディアのクチコミの影響力に当てはめたりできるかな…という前置きからの本エントリ。

ルンゲクッタ法を弄ってみた図は下記な具合です。


図1:Tmax=30, dt=0.01の場合


図2:Tmax=30, dt=0.05の場合


図3:Tmax=30, dt=0.1の場合


図4:Tmax=30, dt=0.5の場合

参照サイトにはRunge-Kutta法よりざっくりとした精度のEuler法との比較もあります。

図を見て見る限り、目の細かさのパラメータdtが細ければ理論値に近い値が算出されますね。







参照
ルンゲ=クッタ法(Runge-Kutta method)
Excelでルンゲクッタ法
gnuplotで微分方程式を解く