ポピュレーションダイナミクス
微分方程式を解いて、ポピュレーションダイナミクスをシミュレーションします。
問題: ロジスティック成長モデルに基づいて、ある生態系内の生物のポピュレーションの増加をモデル化し、シミュレーションしましょう。
ロジスティック成長モデルは以下の微分方程式で表されます:
$$
dy/dt = r * y * (1 - (y/K))
$$
ここで、$ dy/dt $は時間に対するポピュレーションの変化率、$y$はポピュレーションの大きさ、$r$は成長率、$K$はキャリング・キャパシティ(生態系が支持できる最大ポピュレーション)です。
まず、必要なライブラリをインポートし、微分方程式を設定します。
1 | import numpy as np |
シミュレーション結果をグラフ化してみましょう。
1 | plt.figure(figsize=(8, 6)) |
このグラフは、ロジスティック成長モデルに基づいてシミュレーションされた生物のポピュレーションサイズの時間変化を示しています。
成長率$(r)$とキャリング・キャパシティ$(K)$の値に応じて、ポピュレーションの増減がどのように変化するかを観察できます。
SciPyを使用して微分方程式を解くことで、生態学的な問題をシミュレーションし、結果を可視化できます。
ソースコード解説
ソースコードの詳細な説明を示します:
1. ライブラリのインポート:
numpy
:数値計算を支援するライブラリ。matplotlib.pyplot
:グラフの描画を行うためのライブラリ。scipy.integrate.solve_ivp
:微分方程式の数値積分ソルバーを提供するSciPyライブラリからのsolve_ivp
関数をインポート。
2. ロジスティック成長モデルの微分方程式:
logistic_growth
関数は、ロジスティック成長モデルの微分方程式を定義します。
この方程式は、ポピュレーションサイズ$(y)$、成長率$(r)$、キャリング・キャパシティ$(K)$に依存しています。
微分方程式を解いてポピュレーションの変化を計算します。
3. 初期条件の設定:
y0
は初期ポピュレーションのサイズを指定します。
ここでは10と設定されています。r
は成長率を指定します。
ここでは0.1と設定されています。K
はキャリング・キャパシティ(生態系が支持できる最大ポピュレーションサイズ)を指定します。
ここでは100と設定されています。
4. シミュレーションの実行:
t_span
はシミュレーションの時間範囲を指定します。
ここでは0から100の範囲となっています。solve_ivp
関数は、微分方程式を数値的に解きます。
logistic_growth
関数を使用し、初期条件、成長率、キャリング・キャパシティ、時間の評価ポイント(t_eval
)を指定します。
t_eval
は0から100までの1000個の評価ポイントを等間隔で生成します。
5. グラフの描画:
plt.figure
で新しいグラフの図を作成し、サイズを指定します。plt.plot
で時間に対するポピュレーションの変化を表す曲線を描画します。
ラベルは「Population」と設定されています。plt.xlabel
とplt.ylabel
でX軸とY軸のラベルを設定します。plt.title
でグラフのタイトルを設定します。plt.legend
で凡例を表示します。plt.grid
でグラフにグリッドを追加します。plt.show
でグラフを表示します。
このソースコードは、ロジスティック成長モデルに基づくポピュレーションの時間変化をシミュレーションし、その結果を視覚化するためのものです。
成長率とキャリング・キャパシティの値によって、ポピュレーションの挙動がどのように変化するかを観察できます。
グラフ解説
このグラフは、ロジスティック成長モデルに基づいてシミュレーションされた生物のポピュレーションダイナミクスを示しています。
以下はグラフの詳細な説明です:
X軸(Horizontal Axis):
時間(Time)を表しています。
単位はシミュレーションの設定に依存しますが、例では0から100までの時間が表示されています。
Y軸(Vertical Axis):
ポピュレーションのサイズ(Population Size)を表しています。
単位はポピュレーションの個体数や単位に依存します。
初期条件ではポピュレーションサイズが10から始まります。
曲線(Curve):
曲線は時間に対するポピュレーションサイズの変化を示しています。
最初はポピュレーションサイズが急速に増加しますが、成長率(r)やキャリング・キャパシティ(K)に制約され、増加が飽和していきます。
ラベル(Label):
曲線には「Population」というラベルが付いており、どのデータが表示されているかを示しています。
X軸ラベル(X-Axis Label):
X軸には「Time」というラベルが付いており、時間を表しています。
Y軸ラベル(Y-Axis Label):
Y軸には「Population Size」というラベルが付いており、ポピュレーションのサイズを表しています。
タイトル(Title):
グラフのタイトルは「Population Dynamics by Logistic Growth Model」となっており、グラフが何を示しているかを要約しています。
凡例(Legend):
凡例には「Population」というエントリが含まれており、曲線が何を表しているかを説明しています。
グリッド(Grid):
グラフには背景にグリッドが表示されており、データの視覚的な評価を支援しています。
このグラフは、ロジスティック成長モデルにおけるポピュレーションの時間変化を示し、成長率とキャリング・キャパシティがポピュレーションサイズに与える影響を可視化しています。
初期急増後、成長が飽和し、ポピュレーションサイズが安定する様子が観察できます。