微分方程式の数値解法 SciPy
SciPyを使って、非線形微分方程式の数値解法を行います。
非線形微分方程式の解法
1 | from scipy.integrate import solve_ivp |
[実行結果]
ソースコード解説
このソースコードは、ロジスティック成長方程式を用いて、人口の時間経過による変化を計算し、プロットするものです。
1. 必要なライブラリのインポート
1 | from scipy.integrate import solve_ivp |
scipy.integrate.solve_ivp:- 初期値問題を解くための関数です。
numpy:- 数値計算ライブラリで、特に配列操作に便利です。
matplotlib.pyplot:- データの可視化ライブラリです。
2. ロジスティック方程式のモデル
1 | def logistic_equation(t, y, r, K): |
logistic_equation:- ロジスティック成長モデルを表す微分方程式。
t: 時間。y: 人口。r: 成長率。K: 環境収容力(キャパシティ)。
3. パラメータの設定
1 | r = 0.1 |
r: 成長率(ここでは$0.1$に設定)。K: 環境収容力(ここでは$10$に設定)。y0: 初期人口($0.5$に設定)。t_span: シミュレーション時間の範囲($0$から$100$まで)。
4. 微分方程式の解法
1 | solution = solve_ivp(logistic_equation, t_span, y0, args=(r, K), dense_output=True) |
solve_ivp:- 微分方程式を数値的に解くための関数。
logistic_equation: 解くべき方程式。t_span: 時間の範囲。y0: 初期条件。args: 方程式の追加パラメータ(ここでは成長率rと環境収容力K)。
5. 結果のプロット
1 | t = np.linspace(0, 100, 400) |
np.linspace(0, 100, 400):- $0$から$100$の範囲を$400$分割して時間の配列を生成。
solution.sol(t):- 解を評価するための関数を呼び出し、時間
tに対応する人口を計算。
- 解を評価するための関数を呼び出し、時間
plt.plot(t, y.T):- 時間に対する人口のプロット。
plt.xlabel('Time'):- X軸のラベルを「Time」に設定。
plt.ylabel('Population'):- Y軸のラベルを「Population」に設定。
plt.title('Logistic Growth'):- グラフのタイトルを「Logistic Growth」に設定。
plt.grid():- グリッドを表示。
plt.show():- グラフを表示。
全体の流れ
ライブラリのインポート:
- 必要なライブラリをインポートします。
ロジスティック方程式の定義:
- ロジスティック成長を表す微分方程式を定義します。
パラメータの設定:
- 成長率や環境収容力、初期人口、シミュレーション時間範囲を設定します。
微分方程式の数値解法:
solve_ivpを使って微分方程式を解きます。
結果のプロット:
- 計算結果をプロットし、視覚化します。
このソースコードは、ロジスティック成長モデルの動作をシミュレーションし、その結果をグラフとして表示するためのものであり、成長の過程を視覚的に理解するのに役立ちます。
結果解説
[実行結果]
このグラフは、ロジスティック成長モデルを示しています。
ロジスティック成長モデルは、初期段階では急速に増加し、その後、成長が減速していく様子を描いたモデルです。
この特性は、ポピュレーション(人口や個体数)の成長を表す際によく用いられます。
グラフの詳細解説
横軸 (X軸) - Time (時間)
- 横軸は時間を示しており、グラフの左から右に進むにつれて時間が経過していることを示しています。
縦軸 (Y軸) - Population (人口)
- 縦軸は人口(あるいは個体数)を示しています。
値が上に行くほど、人口が増加していることを表します。
- 縦軸は人口(あるいは個体数)を示しています。
ロジスティック成長の特徴
- 初期段階:
グラフの最初の部分(左側)は緩やかなカーブを描いており、これは人口が徐々に増加し始める初期段階を示しています。 - 成長段階:
中央部分では急激な増加が見られます。
これは、環境の資源が十分に利用できる段階での急速な成長を表しています。 - 飽和段階:
最後の部分(右側)は再びカーブが緩やかになり、ほぼ水平に近づきます。
これは成長が飽和状態に達し、環境の収容力に近づくため、成長率が低下していることを示しています。
- 初期段階:
ロジスティック成長モデルの数式
ロジスティック成長は以下の微分方程式で表されます:
$$
\frac{dP}{dt} = rP \left(1 - \frac{P}{K}\right)
$$
- $( P )$ は人口
- $( r )$ は成長率
- $( K )$ は環境の収容力(キャパシティ)
このモデルでは、初期には指数関数的に成長し、人口が環境の収容力に近づくと成長が鈍化し、最終的には収容力に達すると成長が止まります。
実際の利用例
ロジスティック成長モデルは、バクテリアの増殖、動物の個体数変動、人間の人口増加など、自然界や社会現象のさまざまな場面で観察されます。
このモデルを用いることで、成長の限界や持続可能な成長を予測することができます。
このグラフは、ロジスティック成長モデルがどのように動作するかを視覚的に理解するための優れた例です。



















