ロトカ・ヴォルテラ方程式 scipy

ロトカ・ヴォルテラ方程式

Scipyを使用して非線形微分方程式を解決し、結果をグラフ化示します。

この問題では、ロトカ・ヴォルテラ方程式を取り上げます。

これは生態学的な相互作用をモデル化するのに使用される非線形微分方程式です。

まず、必要なライブラリをインポートします。

1
2
3
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp

次に、ロトカ・ヴォルテラ方程式を定義します。

この方程式は、2つの種の個体数の時間変化を表します。

$$
\frac{dx}{dt} = ax - bxy
$$

$$
\frac{dy}{dt} = -cy + dxy
$$

ここで、$(x)$と$(y)$は2つの異なる種の個体数、$(a)$から$(d)$はパラメータです。

1
2
3
4
5
def lotka_volterra(t, z, a, b, c, d):
x, y = z
dxdt = a * x - b * x * y
dydt = -c * y + d * x * y
return [dxdt, dydt]

次に、初期条件とシミュレーションの設定を指定します。

1
2
3
4
5
6
7
8
9
10
11
a = 0.1
b = 0.02
c = 0.3
d = 0.01

# 初期値
x0 = 40
y0 = 9

# シミュレーションの時間範囲
t_span = (0, 200)

solve_ivpを使用してロトカ・ヴォルテラ方程式を数値的に解きます。

1
solution = solve_ivp(lotka_volterra, t_span, [x0, y0], args=(a, b, c, d), t_eval=np.linspace(0, 200, 1000))

最後に、2つの種の個体数を時間とともにプロットします。

1
2
3
4
5
6
7
8
9
plt.figure(figsize=(10, 6))
plt.plot(solution.t, solution.y[0], label='Population of Species 1')
plt.plot(solution.t, solution.y[1], label='Population of Species 2')
plt.xlabel('Time')
plt.ylabel('Population')
plt.title('Simulation of Lotka-Volterra Equations')
plt.grid(True)
plt.legend()
plt.show()

このコードを実行すると、2つの種の個体数が時間とともにどのように変化するかがグラフに表示されます。

ロトカ・ヴォルテラ方程式は生態学的な相互作用をモデル化するために使用され、複雑な生態系の挙動を理解するのに役立ちます。

グラフ解析

先ほどのロトカ・ヴォルテラ方程式のシミュレーション結果を示すグラフについて、詳細な説明を提供します。

このグラフは、時間に対する2つの種の個体数を表しています。
ロトカ・ヴォルテラ方程式は、2つの異なる種が相互作用する生態系をモデル化するための数学モデルです。
ここでは、2つの種の個体数が時間とともにどのように変化するかを示しています。

1. 横軸(X軸):

  • 横軸は時間を表しています。シミュレーションの開始から終了までの時間範囲が表示されています。
    この例では0から200までの時間が考慮されています。

2. 縦軸(Y軸):

  • 縦軸は個体数を表しています。
    個体数は2つの異なる種(種1と種2)の個体数を示しています。

3. 線グラフ:

  • グラフには2本の線が表示されています。
    • “種1の個体数”(オレンジの線):この線は種1の個体数の時間変化を示しています。
    • “種2の個体数”(青い線):この線は種2の個体数の時間変化を示しています。

4. グラフのタイトル:

  • グラフのタイトルは「Simulation of Lotka-Volterra Equations(ロトカ・ヴォルテラ方程式のシミュレーション)」となっており、シミュレーションの内容を示しています。

5. 凡例:

  • グラフには凡例が表示されており、それぞれの線が何を表しているかを説明しています。
    “種1の個体数”と”種2の個体数”の2つの項目が含まれています。

このグラフから読み取れる情報は、2つの異なる種が相互作用する場合、それらの種の個体数が時間とともにどのように変動するかを示しています。
一方の種の個体数が増加すると、もう一方の種の個体数が減少し、その逆も同様です。
これはロトカ・ヴォルテラ方程式が捕食者と被食者の関係をモデル化するのに適していることを示しています。

グラフの詳細な値や特定の時間点における挙動については、グラフの具体的な数値を確認することで理解できます。
このようなモデルは生態学や生物学の研究において相互作用種間競争などの重要な概念を理解するのに役立ちます。