今回も書籍『A Biologist's Guide to Mathematical Modeling in Ecology and Evolution』 から学習した内容の備忘録になります。
ネズミが生殖により増えたり、銀行に預けたお金が複利で増えたり、人気商品だということが広まるとさらに人気になったり…… 「時間経過に従い自己増殖」する現象が世の中には多く存在します。
これをDiscrete(離散的)な計算モデルで表すと以下のようになります。
\[ n(t+1) = (1+r)n(t) \]
-
nはネズミの個体数だったり、銀行預金だったりします。
-
rは増殖の速さを決める係数になります。
-
tは時間を表します。時間の単位は一日だったり一年だったりします。
上記式の意味は『1単位時間経過したとき、その前の個体数の(1+r)倍に増える』ということになります。
同じ自己増殖の計算モデルをContinuous(連続的な)な計算モデルで表すと以下のようになります。
\[ \frac{dn}{dt} = rn \]
-
rは増殖の速さを決める係数になります。
Discrete と Continuousの式は一見同じものに見えます。結果も同じになるでしょうか? juliaで計算してみます
計算
以下のパラメーターに基づいて計算します。
-
初期値n(0)=1.0
-
r = 0.01
-
t=100まで計算
using Plots using DifferentialEquations N0 = 1.0 tmax = 100 r = 0.01 function Discrete(r,N0,tmax) A = zeros(tmax) A[1] = N0 for i = 1:tmax-1 A[i+1] = (1+r)*A[i] end return A end DiscreteAns = Discrete(r,N0,tmax) Continuous(u,p,t) = r * u u0 = N0 tspan = (0.0,tmax) prob = ODEProblem(Continuous,u0,tspan) sol = solve(prob, Tsit5(), reltol=1e-8, abstol=1e-8) plot(sol,label="Continuous") plot!(DiscreteAns,ls=:dash,label="Discreat")
Continuousの計算結果のほうが僅かにDiscreteを上回っています。
解析
両者の違いについてはそれぞれの式の解を求めてみれば明らかになります。
Discreteの計算式
\[ n(t+1) = (1+r)n(t) \]
の解は
\[ n(t) = (1+r)^{t}n(0) \]
一方、Continuousの計算式
\[ \frac{dn}{dt} = rn \]
の解は
\[ n = e^{rt}n(0) \]
したがってDiscreteとContinuousの計算結果の違いは$1+r$と$e^r$の大小によることになります。 実際に$e^r$をテイラー展開すると以下のようになり、必ず$1+r$より大きくなります。
\[ e^r = 1 + r + \frac{1}{2}r^2 + …… \]
以上です。初歩的ですが混乱しがちな内容をまとめました。