ロトカ・ヴォルテラ(Lotka-Volterra)方程式の数値解法
はじめに
ロトカ・ヴォルテラ系は数理生物学で現れ,動物種の成長をモデル化する.ここに
が捕食動物の数,
が餌食の数を表す2つの種があるとする.以下のロトカ・ヴォルテラ系
で,点(ドット)は時間
についての微分を表す.
ロトカ・ヴォルテラ系(1)には不変量
があり,すべての
について一定である.
不変量(2)の等高線は閉じているので,解は周期解である.(3)の数値解も周期解となるのが望ましいが,必ずしもそうなるとは限らない.(4)はポアソン(Poisson)方程式系
である.この
は(5)で定義されている.
ポアソン方程式系とポアソン積分については,[HLW02]のChapter VII.2と[MQ02]に記述されている.
ここで定義済みの問題を含むパッケージをロードして,ロトカ・ヴォルテラ方程式系を選ぶ.
前進オイラー法
| Out[20]= |  |
後退オイラー法
RadauIIAの陰的ルンゲ・クッタ(Runge-Kutta)で後退(陰的)オイラー法を定義し,それを使って(
7) を解く.結果の螺旋は,初期条件から固定点

に向かって時計回りに渦を巻く.
| Out[23]= |  |
投影
ロトカ・ヴォルテラ方程式の不変量(
8)を使った前進オイラー法の投影により,周期解が得られる.
| Out[25]= |  |
分割
正しい質的挙動を得るための別のアプローチとして,(9)を2つの系に加算的に分割するというものがある.
(10)を適切に解くと,ポアソン(Poisson)積分を構築することができる.
ロトカ・ヴォルテラ方程式の分割の方程式を定義する.
シンプレクティックオイラー法
(
11)の各系に後退および前進オイラー法を使って,分割法についてシンプレクティックオイラー法を定義する.
シンプレクティックオイラー法を使った数値解は,周期解である.
| Out[33]= |  |
流れ
ここで,ロトカ・ヴォルテラ方程式を分割し,(12)の各系の流れ(厳密解)を計算してみる.解は次のようにして見付けることができる.ここで定数は各ステップの初期条件に関連していなければならない.
| Out[34]= |  |
| Out[35]= |  |
これは明示的であり非常に効率的な積分法を生成するという利点がある.
メソッドは初期化段階だけでDSolveを使って,各分割の流れを計算する一般的な方法を提供する.
記号と数値のハイブリッドの分割法を設定し,これを使ってロトカ・ヴォルテラ系を解く.
| Out[38]= |  |