0
0

More than 1 year has passed since last update.

本日の微分方程式(5日目)

Posted at

なんとなく脳トレがてら1日1問解説しようと思っただけです.飽きたらやめます.

事前知識

気分を変えて,人口増加の数理モデルを考えてみよう.
本文は,論文[1]が元になっている.

時刻 $t=0$ のときに,人口が $P(t)=P_0\neq 0$ だったとしよう.ここでの目的は,時刻 $t$ のときの人口を表す関数 $P(t)$ を求めることである.
最も単純な人口増加の数理モデルは,

\frac{\mathrm{d}P(t)}{\mathrm{d}t} \propto P(t),

とすることである.つまり,「人口が2人のときより,人口が4人のほうが2倍人口が増えやすい」という直感に基づくモデルである.これを,Malthus(GPT-4によると読みは"マルサス")の人口モデルという.比例定数を $m$ とおくと,上記は次のように表される($m$ は出生率と死亡率の差分として表現されることが多いが,ここでは簡単のため無視する).

\frac{\mathrm{d}P(t)}{\mathrm{d}t} = mP(t),

このモデルの解は,$P(t)=Ce^{mt}~~~(C:任意定数)$ であることが簡単に求まる(変数分離型 $y^{\prime}=my$ と見るとわかる).この解によると,十分に時刻が経過した $t\rightarrow \infty$ のとき,人口も伴い $P(t)\rightarrow \infty$ と無制限に増え続けることを表す.
ただし,現実問題では人口は増えれば増えるほど,食糧問題などにより,人口の増加にブレーキがかかると予想される.このブレーキを表す関数 $-\varphi(P(t))$ を用意し,Malthusの人口モデルに加えたものを,Verhulst(GPT-4によると読みは"フェルフルスト")の人口モデルと呼ぶ.

\frac{\mathrm{d}P(t)}{\mathrm{d}t} = mP(t)-\varphi(P(t)),

問題

Verhulstの人口モデルにおいて,最も単純な関数 $\varphi(P(t)) = nP(t)^2$ を考える($n$ は比例定数).
つまり,

\frac{\mathrm{d}P(t)}{\mathrm{d}t} = mP(t)-nP(t)^2,

である.この微分方程式の一般解を求よ.
また,$t\rightarrow \infty$ としたときに,人口 $P(t)$ が一定値に漸近することを示せ.

ポイント

解説

サクッと変数分離したいのですが,与式を変形すると,次のようになるので,$P(t)=0$ および $P(t)=\dfrac{m}{n}$ のときだけ場合分けが必要です.

\frac{\mathrm{d}P(t)}{\mathrm{d}t} = mP(t)\left\{1-\frac{n}{m}P(t)\right\}.

① $P(t)\neq 0$ かつ $P(t)\neq\dfrac{m}{n}$ のとき

与式の両辺を,$mP(t)-nP(t)^2$ で割ってしまい,両辺を $t$ で積分しましょう.

\begin{align*}
\frac{1}{mP(t)-nP(t)^2}\frac{\mathrm{d}P(t)}{\mathrm{d}t} &= 1,\\
\int\left\{\frac{1}{mP(t)-nP(t)^2}\frac{\mathrm{d}P(t)}{\mathrm{d}t}\right\}\mathrm{d}t &= \int 1\mathrm{d}t,\\
\int\frac{1}{mP(t)-nP(t)^2}\mathrm{d}P(t) &= \int 1\mathrm{d}t.\\
\end{align*}

ここで,左辺の被積分関数を,

\begin{align*}
\frac{1}{mP(t)-nP(t)^2}&=\frac{1}{mP(t)\left\{ 1-\dfrac{n}{m}P(t) \right\}},\\

&=\frac{1}{m}\left[\frac{a}{P(t)} + \frac{b}{\left\{1-\dfrac{n}{m}P(t) \right\}}\right],\\
\end{align*}

と部分分数分解できると仮定すると, $a=1$, $b=\dfrac{n}{m}$ とすぐに分かる.よって,左辺の被積分関数は次のように変形できる.

\begin{align*}
\frac{1}{m}\left[\frac{a}{P(t)} + \frac{b}{\left\{1-\dfrac{n}{m}P(t) \right\}}\right]=\frac{1}{m}\left[\frac{1}{P(t)} + \frac{1}{\left\{\dfrac{m}{n}-P(t) \right\}}\right].
\end{align*}

よって,積分計算は,

\begin{align*}
\int\frac{1}{m}\left[\frac{1}{P(t)} + \frac{1}{\left\{\dfrac{m}{n}-P(t) \right\}}\right]\mathrm{d}P(t) &= \int 1\mathrm{d}t,\\
\frac{1}{m}\int\left[\frac{1}{P(t)} + \frac{1}{\left\{\dfrac{m}{n}-P(t) \right\}}\right]\mathrm{d}P(t) &= \int 1\mathrm{d}t,\\
\frac{1}{m}\left( \log{|~P(t)~|} - \log{\left|~\dfrac{m}{n}-P(t)~\right|} \right) &= t+C_1~~~(C_1:任意定数),\\
\log{ \frac{|~P(t)~|}{\left|~\dfrac{m}{n}-P(t)~\right|}}&= m(t+C_1),\\
\log{\left|~ \frac{P(t)}{\dfrac{m}{n}-P(t)} ~\right|}&= mt+mC_1,\\
\left|~ \frac{P(t)}{\dfrac{m}{n}-P(t)} ~\right|&= e^{mt+mC_1},\\
\frac{P(t)}{\dfrac{m}{n}-P(t)}&= \pm e^{mC_1}e^{mt},\\
\frac{P(t)}{\dfrac{m}{n}-P(t)}&= C_2e^{mt}~~~(C_2\neq 0),\\
\end{align*}

と変形できる.途中で,1日目の問題 同様, $C_1$ が任意の実数値を取るとき, $\pm e^{C_1}$ は0以外のすべての値をとるので, $C_2 = \pm e^{C_1}\neq 0$ とおいている.

あとは,$P(t)$について解くだけです.両辺に $\dfrac{m}{n}-P(t)$ をかけて,

\begin{align*}
P(t)&= C_2e^{mt}\left\{\dfrac{m}{n}-P(t)\right\},\\
P(t)&= C_2e^{mt}\dfrac{m}{n}-C_2e^{mt}P(t),\\
P(t)+C_2e^{mt}P(t)&= C_2e^{mt}\times\dfrac{m}{n},\\
P(t)(1+C_2e^{mt})&= C_2e^{mt}\times\dfrac{m}{n},\\
P(t)&= \dfrac{C_2e^{mt}\times\dfrac{m}{n}}{1+C_2e^{mt}},\\
P(t)&= \dfrac{mC_2e^{mt}}{n(1+C_2e^{mt})},\\
P(t)&= \dfrac{m}{n\left(\dfrac{1}{C_2e^{mt}}+1\right)},\\
\therefore P(t)&= \dfrac{m}{n\left(1 +C_2e^{-mt} \right)}.\\
\end{align*}

② $P(t)= 0$ のとき

微分方程式,

\frac{\mathrm{d}P(t)}{\mathrm{d}t} = mP(t)-nP(t)^2,

において,$\dfrac{\mathrm{d}P(t)}{\mathrm{d}t} =0$より,

(左辺) =0

また,

(右辺) = m\times 0-n\times 0^2=0

であるから,(左辺)$=$(右辺) が成り立ちます.
とはいっても,この解は人口が常に0($=$はじめの人口が0人なら,そりゃ増えないでずっと0)であることを表すだけなので,重要ではありません.

③$P(t)=\dfrac{m}{n}$のとき

微分方程式,

\frac{\mathrm{d}P(t)}{\mathrm{d}t} = mP(t)-nP(t)^2,

において,$\dfrac{\mathrm{d}P(t)}{\mathrm{d}t} =0$より,

(左辺) =0

また,

(右辺) = m\times\dfrac{m}{n} -n\times \left(\dfrac{m}{n}\right)^2=\frac{m^2}{n}-\frac{m^2}{n}=0

であるから,(左辺)$=$(右辺) が成り立ちます.

①~③のまとめ

解が3つ得られました.

\begin{align*}
① \cdots &P(t)= \dfrac{m}{n\left(1 +C_2e^{-mt} \right)}~~~(C_2\neq 0),\\
② \cdots &P(t)= 0,\\
③ \cdots &P(t)= \frac{m}{n}.\\
\end{align*}

ここで, ③の解 $P(t)=\dfrac{m}{n}$ は,①における解 $P(t) = \dfrac{m}{n\left(1 +C_2e^{-mt} \right)}$ において $C_2 =0$ としたものと一致します.

最終的な答えは,両者の解を合わせて,

P(t)= \dfrac{m}{n\left(1 +Ce^{-mt} \right)}~~~(C:任意定数), P(t)=0,

と求まりました.

さて,$
P(t)= \dfrac{m}{n\left(1 +Ce^{-mt} \right)}$ において,$t\rightarrow \infty$ としたとき,

\lim_{t\rightarrow \infty}P(t)= \lim_{t\rightarrow \infty}\dfrac{m}{n\left(1 +Ce^{-mt} \right)}=\dfrac{m}{n},

と一定値 $\frac{m}{n}$ に漸近することがわかる. 同様に,$P(t)=0$においては$\displaystyle\lim_{t\rightarrow \infty}P(t)=0$ である.

以上のことから,Malthusの人口モデルの課題(時間とともに人口が無制限に増え続けること)を,Verhulstの人口モデルが解決したことが確認できる.

参考: ロジスティック関数とシグモイド関数

Verhulstの人口モデルで最終的に得られた関数,

P(t)= \dfrac{m}{n\left(1 +Ce^{-mt} \right)},

は,ロジスティック関数と呼ばれている.

また,ここで便利上定数の値を1としたときの関数,

P(t)= \dfrac{1}{1 +e^{-t}},

は,標準シグモイド関数と呼ばれ,機械学習分野において非常に重要な関数である.

参考文献

論文[1] P. F. Verhulst (1838), Notice sur la loi que la population suit dans son accroissement. Correspondance
Math´ematique et Physique Publi´ee par A. Qu´etelet 10: 113-121.

【参考】 Wolframalpha

非常に便利なので皆さん積極的に使っていきましょう.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0