とらりもんHOME  Index  Search  Changes  Login

Euler法で微分方程式を解こう

筑波大学農林工学系 奈佐原(西田)顕郎

Euler(オイラーと読む)法とは、微分方程式を数値的に解く方法のひとつである。

微分方程式を解析的に解くには数学の訓練が必要で大変だが、数値的に解くのはとても簡単。方程式に基づいて微分の値を逐次計算して、それを数値積分すればよい。それを最も単純に行うのがEuler法。

課題6-1: dx/dt = 2x をEuler法で解け (t =0のときx =1とする)。

5-1.png

解説: 与式を変型すると、dx = 2x dt となる。つまり、tの変化量(dt)に2xをかけたものがxの変化量(dx)となる。これを積みあげていけば(数値積分すれば)任意の時刻tにおけるxの値がわかる、という仕組みである。

 まずA列にtの軸を取り、B、C列にそれぞれdxとxの欄を用意しよう。t=0でx=1(初期条件)だから、C2に1を入れる。次のタイムステップでの xの増分(B3の欄に相当)は、上式のように現在のxの値(C2の欄)と時間変化(A3-A2)に依存するのでそれをそのまま入れる。つまり「=2*C2*(A3-A2)」というふうにB3に入れれば良い。

 それを順次積み重ねたのがxなので、C3の欄には、「=C2+B3」と入れればよい。あとは、B3とC3をそれぞれ下までコピペ。確認のために、解析解であるx=exp(2t)をD欄に作って、重ねてグラフにしてみよう。

 上のグラフで、赤線が解析解(つまり理論値)で黒線が数値解である。tが大きくなるにつれて誤差が拡大して行く様子が見える。時刻tの刻み幅(ここでは0.05となっている)をもっと細かくすると(たとえば0.02とか)、この誤差はどうなっていくか?観察せよ。

課題6-2: dx/dt = 2x (1- x) をEuler法で解け(t =0のときx =0.1とする)。

上の課題の微分方程式はLogistic(ロジスティック)方程式といい、その解をLogistic曲線という。資源に限りがある場での生物の繁殖モデルなど、広範囲に応用される。

課題6-3: dx/dt = -x t をEuler法で解け(t =0のときx =1とする)。解析的に解ける人は、解析解と比較せよ。

課題6-4: Lotka-Volterra方程式

ある島に羊と狼がそれぞれ何匹かいる状況を考えよう。羊は草を食べて生活・繁殖するが、狼は羊を食べて生活・繁殖する。

羊の頭数の変化=( 羊の数×自然繁殖率 - 狼の数×羊の数×捕食による死亡率)×時間間隔 狼の頭数の変化=(-狼の数×自然死亡率+狼の数×羊の数×捕食による繁殖率)×時間間隔

注: 狼と羊がばったり出くわす頻度(つまり狼が羊をつかまえて食べることのできる頻度)は、狼の数と羊の数の積に比例する。

狼の頭数 =W, 羊の頭数 =S, 羊の自然繁殖率 =p, 捕食による羊の死亡率 =q, 狼の自然死亡率 =r, 食による狼の繁殖率 =sとすると、

dS = ( pS - qWS)dt
dW = (-rW + sWS)dt

あるいは、両辺をdtで割って、

dS/dt = pS - qWS
dW/dt = -rW + sWS

この連立微分方程式を、Lotka-Volterra(ロトカ・ヴォルテラ方)程式と呼ぶ。p, q, r, sはパラメータである。

Lotka-Volterra方程式(t =0でS =2, W =0.5とする)を、p =q =r =s =1のもとで解け。パラメータをいろいろ変えると解はどのように変わるか?

ヒント: t, dS, dW, S, Wの5つの列を用意すればよい。

参考になる教材: 生物資源の基礎数学教材 ... 生物資源学類1年生向け。Lotka-Volterra方程式の数値解法等。

課題6-5: Lotka-Volterra方程式で、初期条件をいろいろ変えると解はどのように変わるか観察せよ。

(ブラウザの「戻る」ボタンで戻ってください。)

Last modified:2020/03/14 16:57:05
Keyword(s):
References:[数値解析入門]