本日の微分方程式（5日目）

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

## 事前知識
気分を変えて，人口増加の数理モデルを考えてみよう．
本文は，論文[1]が元になっている．

時刻 $t=0$ のときに，人口が $P(t)=P_0\neq 0$ だったとしよう．ここでの目的は，時刻 $t$ のときの人口を表す関数 $P(t)$ を求めることである．
最も単純な人口増加の数理モデルは，
```math
\frac{\mathrm{d}P(t)}{\mathrm{d}t} \propto P(t),
```
とすることである．つまり，「人口が2人のときより，人口が4人のほうが2倍人口が増えやすい」という直感に基づくモデルである．これを，Malthus（GPT-4によると読みは"マルサス"）の人口モデルという．比例定数を $m$ とおくと，上記は次のように表される（$m$ は出生率と死亡率の差分として表現されることが多いが，ここでは簡単のため無視する）．

```math
\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によると読みは"フェルフルスト"）の人口モデルと呼ぶ．

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

## 問題

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

```math
\frac{\mathrm{d}P(t)}{\mathrm{d}t} = mP(t)-nP(t)^2,
```
である．この微分方程式の一般解を求よ．
また，$t\rightarrow \infty$ としたときに，人口 $P(t)$ が一定値に漸近することを示せ．

## ポイント
- 長々と書いていて難しそうに見えますが，[本日の微分方程式（2日目）](https://qiita.com/Schwarzschi1d/items/7e0c1e5900612687a388) で登場した $y^{\prime}=y(1-y)$ とほとんど同じです．

## 解説

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

```math
\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$ で積分しましょう．

```math
\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*}
```

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

```math
\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}$ とすぐに分かる．よって，左辺の被積分関数は次のように変形できる．

```math
\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*}
```

よって，積分計算は，

```math
\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日目の問題](https://qiita.com/Schwarzschi1d/items/ec32d3b7169d99b08e6c) 同様， $C_1$ が任意の実数値を取るとき， $\pm e^{C_1}$ は0以外のすべての値をとるので， $C_2 = \pm e^{C_1}\neq 0$ とおいている．

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

```math
\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$ のとき**

微分方程式，
```math
\frac{\mathrm{d}P(t)}{\mathrm{d}t} = mP(t)-nP(t)^2,
```
において，$\dfrac{\mathrm{d}P(t)}{\mathrm{d}t} =0$より，

```math
(左辺) =0
````

また，
```math
(右辺) = m\times 0-n\times 0^2=0
```

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

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

微分方程式，
```math
\frac{\mathrm{d}P(t)}{\mathrm{d}t} = mP(t)-nP(t)^2,
```
において，$\dfrac{\mathrm{d}P(t)}{\mathrm{d}t} =0$より，

```math
(左辺) =0
````

また，
```math
(右辺) = m\times\dfrac{m}{n} -n\times \left(\dfrac{m}{n}\right)^2=\frac{m^2}{n}-\frac{m^2}{n}=0
```

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

### ①~③のまとめ

解が3つ得られました．

```math
\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$ としたものと一致します．

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

```math
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$ としたとき，

```math
\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の人口モデルで最終的に得られた関数,

```math
P(t)= \dfrac{m}{n\left(1 +Ce^{-mt} \right)},
```
は，**ロジスティック関数**と呼ばれている．

https://ja.wikipedia.org/wiki/%E3%83%AD%E3%82%B8%E3%82%B9%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%E6%96%B9%E7%A8%8B%E5%BC%8F

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

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

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

https://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%B0%E3%83%A2%E3%82%A4%E3%83%89%E9%96%A2%E6%95%B0


## 参考文献

論文[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

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

https://www.wolframalpha.com/input?i=y%27+%3D+my-ny%5E2&lang=ja