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

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

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

プリセット
モデル選択
方程式パラメータ
α: 被食者増加率
β: 捕食率
γ: 捕食者死亡率
δ: 捕食→成長率
初期値
x₀: 初期被食者数
y₀: 初期捕食者数 5
シミュレーション時間 200
主要指標
計算結果
被食者平衡点 xₑ
捕食者平衡点 yₑ
被食者最大値
捕食者最大値
時系列グラフ / 位相平面(フェーズポートレート)
個体数推移 vs 時間
時系列:被食者(青)と捕食者(赤)の個体数変化
位相
位相平面:閉軌道が周期振動の証拠(矢印は時間方向)
理論・主要公式
$$\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$

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

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

よくある質問

はい、正しく動作しています。ロトカ-ボルテラ系は保存系であり、パラメータを変えても閉軌道の周期は理論上一定ではありませんが、振幅や位相平面の軌道の形は変化します。特にαとγを変えると軌道の中心位置が移動し、見かけの周期変化が小さく感じられることがあります。数値積分の刻み幅を確認するか、初期値を変えて確認してみてください。
数値計算の誤差が原因です。ロトカ-ボルテラ方程式は解析的には保存量(リャプノフ関数)を持ちますが、オイラー法やルンゲ=クッタ法では厳密に保存されず、軌道が徐々にずれることがあります。より高精度な積分法(シンプレクティック法など)を採用するか、時間刻みを小さくすることで改善できます。
数値オーバーフローや非現実的な増加が原因です。ロトカ-ボルテラ方程式は個体数が極端に大きくなると、被食者の指数関数的増加と捕食者の急増が数値計算の安定性を損ないます。また、現実の生態系では環境収容力の制限がありますが、本モデルにはそれが含まれていません。初期値は1~100程度に設定することを推奨します。
できません。このモデルは非線形力学の教育用であり、現実の生態系は環境収容力、季節変動、空間構造、複数種の相互作用など多くの要素が影響します。ロトカ-ボルテラ方程式は単純化された理論モデルで、定性的な振動の理解には役立ちますが、定量的な予測には使用しないでください。

実世界での応用

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

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

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

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

よくある誤解と注意点

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

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

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

使い方ガイド

  1. 被食者増殖率(α)、被食者捕食率(β)、捕食者死亡率(γ)、捕食者効率(δ)の4つのパラメータを設定します。標準値はウサギ個体群でα=0.5/年、キツネ捕食率β=0.02/(個体・年)です
  2. 初期個体数を入力後、シミュレーション期間(通常20~50年)を指定して実行ボタンをクリックします
  3. 時系列グラフで両種の個体数変動を確認し、位相平面図で平衡点周辺の周期的軌跡パターンを観察します。平衡点xₑ=γ/δ、yₑ=α/βで自動計算表示されます

具体的な計算例

ウサギ(被食者)とキツネ(捕食者)の生態系で、α=0.6/年、β=0.015、γ=0.4/年、δ=0.01とした場合:平衡点はウサギxₑ=40個体、キツネyₑ=40個体です。初期値ウサギ50個体、キツネ30個体から開始すると、ウサギは約80個体まで増加後に減少、キツネは約60個体のピークを示す周期約3.8年の振動が観測されます。この周期はωₚ=√(αγ)で理論値1.55rad/年と一致します

実務での注意点

  1. 野生動物管理で捕食率βを増加させると両種の平衡点が上昇しますが、被食者個体数の変動幅が拡大するため個体群崩壊リスクが高まります
  2. ロジスティック成長モデル(被食者の環境収容量K設定)では、通常のロトカ-ボルテラ周期振動が減衰してより安定な平衡に収束します
  3. シミュレーション期間が短すぎる(5年以下)と過渡応答を誤認識する可能性があるため、最低でも3周期分(約10~15年)のデータ取得を推奨します