栽培学(ロジスティック成長曲線)

栽培学(ロジスティック成長曲線)

栽培学に関する方程式の一例として、植物の成長モデルである「ロジスティック成長曲線」を取り上げます。

このモデルは、時間に伴う植物の成長を表現するために使用されます。

方程式は以下の通りです:

$$
\frac{dN}{dt} = rN(1 - \frac{N}{K})
$$

ここで、$( N ) $は植物の個体数、$( t ) $は時間、$( r ) $は成長率、$ ( K ) $はキャリング・キャパシティ(環境が許容する最大個体数)を表します。

この方程式をPythonで解いてグラフ化するコードを以下に示します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp

# ロジスティック成長曲線の微分方程式
def logistic_growth(t, N, r, K):
return r * N * (1 - (N / K))

# パラメータ設定
r = 0.1 # 成長率
K = 100 # キャリング・キャパシティ

# 時間の範囲
t_span = (0, 50)
t_eval = np.linspace(*t_span, 100)

# 初期値
N0 = 10

# 微分方程式を解く
sol = solve_ivp(logistic_growth, t_span, [N0], t_eval=t_eval, args=(r, K))

# グラフ化
plt.figure(figsize=(8, 6))
plt.plot(sol.t, sol.y[0], label='Population Growth')
plt.title('Logistic Growth of Population')
plt.xlabel('Time')
plt.ylabel('Population Size')
plt.legend()
plt.grid(True)
plt.show()

このコードは、ロジスティック成長曲線の微分方程式を解いて、時間個体数の関係をグラフ化します。

[実行結果]

ソースコード解説

このソースコードは、Pythonを使用してロジスティック成長曲線を解き、結果をグラフ化するプログラムです。

以下はそれぞれの部分の詳細な説明です:

ライブラリのインポート

1
2
3
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp
  • numpy:数値計算を行うためのライブラリ。
  • matplotlib.pyplot:グラフ描画のためのライブラリ。
  • scipy.integrate.solve_ivp:常微分方程式を解くための関数。

ロジスティック成長曲線の微分方程式の定義

1
2
def logistic_growth(t, N, r, K):
return r * N * (1 - (N / K))
  • logistic_growth 関数は、ロジスティック成長曲線微分方程式を定義しています。
    この方程式は、成長率 r 、キャリング・キャパシティ K 、個体数 N に依存しています。

パラメータの設定

1
2
r = 0.1  # 成長率
K = 100 # キャリング・キャパシティ
  • 成長率 r とキャリング・キャパシティ K の値を設定しています。

時間の範囲の設定

1
2
t_span = (0, 50)
t_eval = np.linspace(*t_span, 100)
  • t_span には時間の範囲$ (0, 50) $が設定されています。
  • t_eval はこの時間範囲を均等に分割した値の配列です。

初期値の設定

1
N0 = 10
  • 初期の個体数 N0 を設定しています。

微分方程式の解を求める

1
sol = solve_ivp(logistic_growth, t_span, [N0], t_eval=t_eval, args=(r, K))
  • solve_ivp 関数を使用して微分方程式を解きます。
  • 引数として、微分方程式の定義、時間の範囲、初期値、その他の必要なパラメータを渡します。

グラフ化

1
2
3
4
5
6
7
8
plt.figure(figsize=(8, 6))
plt.plot(sol.t, sol.y[0], label='Population Growth')
plt.title('Logistic Growth of Population')
plt.xlabel('Time')
plt.ylabel('Population Size')
plt.legend()
plt.grid(True)
plt.show()
  • matplotlib.pyplot を使用してグラフを作成します。
  • sol.tsol.y[0] によって、時間と個体数の解がプロットされます。
  • グラフのタイトル、軸ラベル、凡例、グリッド線が追加されます。
  • plt.show() によって、グラフが表示されます。

結果解説

[実行結果]

上記のグラフは、ロジスティック成長曲線を示しています。

以下はグラフの詳細な説明です:

x軸(横軸):

時間を表します。
時間の範囲は$0$から$50$までです。

y軸(縦軸):

個体数(植物の個体数など)を表します。
個体数の範囲は$0$から$100$までです。

線グラフ:

横軸(時間)に対する縦軸(個体数)の変化を表しています。

グラフのタイトル:

“Logistic Growth of Population” というタイトルが設定されています。

x軸のラベル:

“Time” というラベルが設定されており、時間を表しています。

y軸のラベル:

“Population Size” というラベルが設定されており、個体数を表しています。

凡例:

“Population Growth” という凡例が設定されています。
これは、線グラフが個体数の成長を表していることを示しています。

グリッド線:

背景にグリッド線が描かれており、グラフの読み取りを補助します。

このグラフは、時間が経つにつれて個体数がどのように変化するかを示しています。

最初は急速に増加しますが、キャリング・キャパシティに近づくにつれて成長が鈍化し、最終的に一定の値に収束します。

これは、ロジスティック成長曲線が、成長率による増加と環境の制約による減少のバランスを表現していることを示しています。