生態系の捕食・被食ダイナミクス(ロトカ・ヴォルテラ方程式)
ウサギとキツネの増減ループを解き明かす連立非線形微分方程式と相平面の閉軌道
- 1
- ロトカ・ヴォルテラ方程式は、エサとなる被食者(ウサギ)とそれを食べる捕食者(キツネ)の個体数の時間変化を記述する生態学の古典的名著モデル
- 2
- 線形モデルと異なり、2つの生物の個体数は一定値に収束するのではなく、永遠に互いを追いかけ合う周期的な増減(リミットサイクル的閉曲線)を描く
- 3
- 相平面(Phase Plane)で解析すると、保存量(不変量)が存在し、初期値を中心とする美しい閉軌道になることが数学的に証明される
なぜこれを学ぶのか? — 現実社会とテクノロジーでの価値
なぜ生まれたのか?
第一次世界大戦中に地中海の漁獲量が減った際、なぜか肉食魚(サメ)の割合が増えた謎を解明するため、捕食者と被食者の相互作用をモデル化して誕生した。
身につく武器・思考力
「エサが増えれば捕食者が増え、エサが減れば捕食者も飢える」という非線形微分方程式の永遠の相平面サイクルと、乱獲防止の数理的直感が身につく。
実社会・ITでの活躍現場
- •水産庁や国際機関によるマグロやサンマの持続可能な最大漁獲量(MSY)設定
- •農業における天敵昆虫(テントウムシなど)を利用した害虫駆除バイオコントロール
- •ビジネス市場における競合2社の価格競争・シェア奪い合いのゲーム数理分析
- •腸内細菌叢(マイクロバイオーム)における善玉菌と悪玉菌のバランスモデリング
Layer 1 — 直感・シミュレーター
ウサギの繁殖率 やキツネの捕食率 を調整してみよう。時系列グラフでは2つの波が少しズレて周期的に追いかけ合う様子が、右側の「相平面軌道」では美しい楕円状の閉じたループ(周期的安定性)として描かれることを確認できる。
ロトカ・ヴォルテラ方程式において、被食者(ウサギ)の個体数がピークに達した直後、捕食者(キツネ)の個体数はどうなるか?
Layer 2 — 定義・受験・証明
定義
被食者(ウサギ)の個体数を 、捕食者(キツネ)の個体数を とすると、ロトカ・ヴォルテラ連立微分方程式は次式で表される。
ここで各パラメータの意味は以下の通りである。 - : 被食者の自然繁殖率 - : 捕食遭遇による被食者の死亡係数 - : 捕食者の自然死亡率(エサがないときの餓死) - : 捕食による捕食者の繁殖係数
公式・数理モデル
証明・導出
相平面における閉軌道と保存量の存在証明:
時間 を消去するため、2式の比 をとる。
変数分離形にするため、両辺を整理する。
両辺を不定積分すると、
符号を反転して整理すると、次の保存量(第一積分) が得られる。
関数 は で最小値を持ち、上に凹の谷型となるため、 の等高線は相平面上で孤立した特異点(固定点 )を取り囲む滑らかな「閉曲線(Closed Orbit)」を形成する。これにより、個体数が絶滅も発散もせず、永遠に周期変動を繰り返すことが数学的に厳密に保証される。
押さえておきたいポイント
- 捕食者と被食者の相互作用は、線形平衡ではなく「永遠の振動サイクル」を生み出す
- 第一次世界大戦中に地中海での漁獲が制限された際、魚食性魚類(サメ等)の割合が増加した現象をヴォルテラがこの方程式で数学的に解明した(ヴォルテラの原理)
- 害虫駆除の農薬を散布すると、害虫を食べる益虫(天敵)が先に激減して逆に害虫が爆発的に増えるリバウンド現象の数理的根拠でもある
本トピックの内容・数理モデルは、文部科学省学習指導要領(算数・数学・情報)および国際標準カリキュラムに準拠し、エンジニアリング現場の実装事例と照らし合わせてMath World Lab編集部により検証・作成されています。
Layer 3 — 工学応用・現場実装
生物資源管理(水産資源の最適漁獲枠 TAC 算定)と害虫防除
水産庁や国際漁業機関では、魚種間の食物連鎖モデルに漁獲努力量パラメータ を組み込んだ拡張ヴォルテラモデルを用いて、資源が枯渇せず持続可能な最大漁獲量(MSY: Maximum Sustainable Yield)を計算・管理している。
1// ロトカ・ヴォルテラ方程式の相平面解析2interface PopulationState {3 prey: number; // ウサギ4 predator: number; // キツネ5}67function computeEcosystemCycle(8 alpha: number = 0.8, // ウサギ繁殖9 beta: number = 0.02, // 捕食率10 gamma: number = 0.6, // キツネ死亡11 delta: number = 0.01 // 捕食効率12) {13 // 平衡点(固定点): 個体数が変動しなくなるポイント14 const equilibriumPrey = gamma / delta;15 const equilibriumPredator = alpha / beta;1617 // 周期変動の角振動数 omega (線形化ヤコビ行列の固有値より)18 const omega = Math.sqrt(alpha * gamma);19 const cyclePeriodDays = (2 * Math.PI) / omega;2021 return {22 fixedPoint: { prey: equilibriumPrey, predator: equilibriumPredator },23 periodApprox: cyclePeriodDays.toFixed(1),24 };25}2627const analysis = computeEcosystemCycle(0.8, 0.02, 0.6, 0.01);28console.log(`生態系の安定平衡点: ウサギ=${analysis.fixedPoint.prey}匹, キツネ=${analysis.fixedPoint.predator}匹`);29console.log(`1サイクルの周期: 約${analysis.periodApprox}日`);
次に学ぶならコレ!おすすめトピック
この単元と深い繋がりを持つ、あわせて学ぶと理解が深まるおすすめ単元