捕食者-被食者モデル(ロトカ-ボルテラ) 戻る
数理生態学・生物数学

捕食者-被食者モデル(ロトカ-ボルテラ)シミュレーター

α・β・γ・δを動かして個体数の振動周期がどう変わるか体感しよう。位相平面の閉軌道がロトカ-ボルテラ系の保存性を視覚的に示します。ウサギとキツネで直感的に理解できる非線形力学の入門。

プリセット
モデル選択
方程式パラメータ
α: 被食者増加率 1.00
β: 捕食率 0.100
γ: 捕食者死亡率 1.500
δ: 捕食→成長率 0.075
初期値
x₀: 初期被食者数 10
y₀: 初期捕食者数 5
シミュレーション時間 200
主要指標
被食者平衡点 xₑ
捕食者平衡点 yₑ
被食者最大値
捕食者最大値

ロトカ-ボルテラ方程式

$$\frac{dx}{dt}= \alpha x - \beta xy$$ $$\frac{dy}{dt} = \delta xy - \gamma y$$

平衡点: $x_e = \gamma/\delta$, $y_e = \alpha/\beta$

保存量: $V = \delta x - \gamma\ln x + \beta y - \alpha\ln y$

CAEとの接点: 非線形ODEのRunge-Kutta積分は構造動力学・流体・化学反応と共通。位相平面解析は非線形制御設計にも直結します。
時系列グラフ / 位相平面(フェーズポートレート)
時系列:被食者(青)と捕食者(赤)の個体数変化
位相平面:閉軌道が周期振動の証拠(矢印は時間方向)

捕食者-被食者モデルとは

🧑‍🎓
「捕食者と被食者の数が周期的に増減する」って、教科書で見たけど、本当にそんな綺麗なサイクルが起こるんですか?
🎓
ざっくり言うと、遅れて効くフィードバックが原因で振動が起きるんだ。例えば、ウサギ(被食者)が増えると、それを食べるキツネ(捕食者)の数も後から増える。キツネが増えすぎると今度はウサギが激減して、今度はキツネが餓死し始める…というループだね。シミュレーターの「初期値」スライダーでウサギだけ多くしてみると、この遅れがよくわかるよ。
🧑‍🎓
え、そうなんですか!でも、自然界って無限にエサがあるわけじゃないですよね?このモデルはそれも考慮してるんですか?
🎓
良いところに気づいたね。古典的なモデルは環境の制限を考えてないんだ。そこで「環境収容力K」というパラメータを導入する。これがロジスティック成長モデルとの融合だ。右の「モデル選択」で「ロジスティック項あり」に切り替えて、Kの値を小さくしてみて。振動がどう変わるか観察してみよう。
🧑‍🎓
下の「位相平面」ってグラフは、時系列グラフと何が違うんですか?ぐるぐる回ってる線が面白いです。
🎓
あの「ぐるぐる」が全てを物語ってるんだ。横軸がウサギ、縦軸がキツネの数で、時間は矢印で表される。閉じたループなら周期振動だし、中心に向かえば安定化する。実務では、この「位相平面解析」は非線形制御系の設計にもそのまま使われる重要な考え方なんだ。パラメータをいじるとループの形が大きく変わるから試してみて。

物理モデルと主要な数式

基本となるロトカ-ボルテラ方程式は、被食者(x)と捕食者(y)の個体数変化率を表す連立常微分方程式です。

$$ \begin{aligned}\frac{dx}{dt}&= \alpha x - \beta xy \\ \frac{dy}{dt}&= \delta xy - \gamma y \end{aligned}$$

$x$: 被食者個体数, $y$: 捕食者個体数
$\alpha$: 被食者の自然増加率, $\beta$: 捕食率(出会いと食べる効率)
$\delta$: 捕食効率(食べたものが捕食者の成長に変換される率), $\gamma$: 捕食者の自然死亡率
第一項が増加、第二項が減少を表す。$- \beta xy$ 項は「出会い」に比例して被食者が減ることを意味する。

より現実的なモデルとして、被食者の成長に上限(環境収容力)を設けた拡張モデルがあります。

$$ \frac{dx}{dt}= \alpha x \left(1 - \frac{x}{K}\right) - \beta xy $$

$K$: 環境収容力。被食者単独で生存できる最大個体数。
$\alpha x (1 - x/K)$ はロジスティック成長項。個体数$x$が$K$に近づくほど増加率が低下し、$K$を超えることはない。これにより、無限増加を防ぎ、振動の減衰や平衡点への収束など、より多様な動態が表現可能となる。

実世界での応用

生態学・資源管理:漁業における「魚(被食者)」と「漁師の努力量(捕食者に相当)」の関係をモデル化し、持続可能な漁獲量を推定するのに用いられます。過剰漁獲がどのように資源崩壊を招くか、シミュレーションで予測できます。

ウィルス学・疫学:宿主(被食者に相当)と病原体(捕食者に相当)の関係として応用され、感染症の流行波を理解するための基礎モデルとなります。免疫獲得やワクチン接種の影響をパラメータで表現できます。

経済学:在庫(被食者)と生産注文(捕食者)の間で発生する「在庫変動の波(ブルウィップ効果)」の分析に類似の振動モデルが使われます。供給チェーンの不安定性を研究するツールとなります。

CAE・制御工学:非線形振動の位相平面解析手法は、機械の振動制御や化学反応の速度論シミュレーションと数学的に共通しています。このシミュレーターでパラメータを変えて平衡点の安定性を調べる作業は、制御系設計の基礎トレーニングそのものです。

よくある誤解と注意点

このシミュレーターを使い始めるとき、いくつか気をつけてほしいポイントがあるよ。まず、「パラメータは現実の数値そのものではない」ってことを頭に入れておこう。例えば、増加率α=0.1って設定しても、それは「1日あたり10%増加」を意味するとは限らないんだ。シミュレーションでは時間の単位(日、月、年)を暗黙的に決めているから、あくまで相対的な大小関係が重要。実務で使うときは、フィールドデータから逆算してパラメータを同定する、という別の作業が必要になるんだ。

次に、初期値の与え方で結果が大きく変わることを体感してほしい。基本モデルでは、平衡点から少しずらすと美しい周期解が出るけど、例えばウサギを0にすると、キツネは絶滅する一方で振動は起きない。これは「被食者がいなければ捕食者は存続できない」という自明だけど重要な原則を表している。逆に、ロジスティック項ありのモデルで環境収容力Kを極端に小さく(例えば初期個体数より小さく)設定すると、振動以前に被食者自体がすぐに減少してしまう。パラメータをいじる時は、一つずつ変えて、その物理的意味を考えながら結果を見る癖をつけよう。

最後に、このモデルは「確率的な事象」を考慮していない点だ。現実の生態系では、偶然の病気や異常気象、個体の出会いのランダム性が大きな影響を与える。このシミュレーターは決定論的なモデルだから、同じパラメータと初期値では必ず同じ結果が再現される。これは基礎を学ぶには最高だけど、実世界の不確実性を扱うには「確率微分方程式」などより高度なモデルが必要になるんだ。

関連する工学分野

ロトカ-ボルテラの方程式って、生態学だけの話じゃないんだ。実は制御工学と深く結びついている。例えば、工場の在庫管理システム。在庫量(被食者)と生産ラインの稼働率/注文量(捕食者)の関係は、まさにこのモデルで記述できる。在庫が増えすぎると生産を抑え、在庫が減りすぎると生産を増やす…この「遅れのあるフィードバック」が発振(ブルウィップ効果)を生むんだ。シミュレーターで遊んだ「位相平面」の考え方は、この発振を安定化させる制御器を設計する時の基礎知識になるよ。

もう一つは電気回路・振動工学だ。捕食者-被食者の振動は、LC共振回路の電荷と電流の振動や、減衰のある機械的な振り子の動きと数学的に同等なんだ。微分方程式の形が「線形」か「非線形」かの違いはあれ、エネルギー(個体数)が二つの形態の間を行き来するという根本的なダイナミクスは一緒。非線形振動の入門として、このモデルは非常に優れている。

ネットワークセキュリティでも応用が進んでいる。例えば、マルウェア(捕食者)と脆弱なホスト(被食者)の拡散をモデル化して、最適なパッチ適用戦略をシミュレーションする研究があるよ。パラメータδ(捕食効率)を「感染のしやすさ」、γ(死亡率)を「ホストの修復/隔離率」と読み替えれば、そのまま使える考え方なんだ。

発展的な学習のために

このシミュレーターに慣れたら、次は「3種系」を考えてみよう。例えば「植物→ウサギ→キツネ」という食物連鎖だ。中間の被食者(ウサギ)が増減すると、上下の種にどんな複雑な影響が出るか? シミュレーションは簡単ではなくなるけど、カオス的な振る舞いなどより豊富な現象が現れるよ。まずは紙とペンで、3種の相互作用を表す項を加えた方程式を書いてみるのが良い第一歩だ。

数学的にもう一歩深掘りするなら、「平衡点の安定性解析」に挑戦しよう。シミュレーターで観察した「中心に向かう」「ぐるぐる回る」といった動きは、実は平衡点(時間変化が0になる点)でのヤコビアン行列の固有値を計算することで、事前に予測できるんだ。数式で言うと、平衡点$(x^*, y^*)$を見つけ、そこでの線形化行列 $$ J = \begin{bmatrix} \alpha - \beta y^* & -\beta x^* \\ \delta y^* & \delta x^* - \gamma \end{bmatrix} $$ の固有値の実部の符号を見る。実部が全て負なら安定、純虚数なら中心(周期解)、正があれば不安定、となる。この「線形化」のテクニックは、あらゆる非線形システムの解析の基礎になる強力な武器だ。

最終的には、シミュレーションエンジンそのものである数値解法(オイラー法、ルンゲ=クッタ法)にも興味を持ってほしい。なぜ「NovaSolver」を使うのか? それは、微分方程式をコンピュータで解くには、微小幅の時間ステップで繰り返し計算する必要があるから。ステップ幅を粗く(dtを大きく)しすぎると計算が発散してしまう。このツールの背後で動いている数値計算の原理を知れば、CAEソフトウェア全般に対する理解が一段と深まるはずだ。