Рівняння Лотки–Вольтерри — цикли популяцій хижак–жертва
Уперше незалежно сформульовані Альфредом Лоткою (1920) та Віто Вольтеррою (1926), рівняння Лотки–Вольтерри моделюють циклічне коливання двох взаємодіючих популяцій — виду-жертви та його хижака. Модель показує, як проста система з двох рівнянь може породжувати безперервні, самопідтримні цикли без жодного зовнішнього впливу.
1. Модель двох видів та припущення
Класична система Лотки–Вольтерри охоплює дві популяції, що взаємодіють у відношенні хижак–жертва:
Кролики, риба чи будь-який вид, на якого полюють. Зростає без обмежень за відсутності хижаків.
Лисиці, акули чи будь-який хижак. Цілком залежить від жертви як їжі; без неї гине з голоду.
Модель ґрунтується на чотирьох ключових припущеннях:
- Необмежене зростання жертви: за відсутності хижаків жертва зростає експоненційно зі швидкістю α.
- Смертність лише хижаків: за відсутності жертви хижаки гинуть експоненційно зі швидкістю δ.
- Зустрічі за законом діючих мас: події хижацтва пропорційні добутку x·y — кожен хижак з однаковою ймовірністю зустрічає кожну особину жертви.
- Замкнена екосистема: без імміграції, еміграції чи сезонних впливів. Лише жертва й хижак.
2. Система ЗДР — виведення
Нехай x(t) — популяція жертви, а y(t) — популяція хижака. Чотири параметри — це:
α — швидкість народжуваності жертви
Подушна експоненційна швидкість зростання жертви за відсутності хижаків. Типово: 0,5–2,0 рік⁻¹.
β — швидкість хижацтва
Швидкість, з якою хижаки споживають жертву на одиницю кожної популяції. Контролює ефективність зустрічей. Типово: 0,01–0,1.
δ — швидкість зростання хижака
Ефективність перетворення спожитої жертви на потомство хижака. Часто δ < β. Типово: 0,001–0,02.
γ — швидкість загибелі хижака
Подушна швидкість загибелі хижаків за відсутності жертви. Типово: 0,2–1,0 рік⁻¹.
Керівні рівняння такі:
dy/dt = −γ·y + δ·x·y ← хижак: гине сам, зростає, коли наїдається
Розбір членів:
α·x — експоненційне народження жертви (логістичне, якщо замінити на α·x·(1 − x/K))
−β·x·y — з'їдена жертва: кожна зустріч хижак-жертва прибирає β жертв/час
−γ·y — голодування хижака за відсутності жертви
δ·x·y — розмноження хижака від споживання жертви (δ = коефіцієнт перетворення)
Член закону діючих мас β·x·y — ключова нелінійність.
Без нього рівняння розпадаються на дві незалежні експоненти.
З ним популяції зв'язані й коливаються нескінченно.
3. Рівноваги та аналіз стійкості
Прирівнявши dx/dt = dy/dt = 0, отримуємо дві нерухомі точки:
Обидва види вимерли. Нестійка сідлова точка.
Нетривіальна рівновага E* = (x*, y*):
x* = γ/δ ← рівень жертви, що утримує хижаків сталими
y* = α/β ← рівень хижаків, що утримує жертву сталою
Прирівнюємо dx/dt = 0: x(α − β·y) = 0 → y = α/β (для x ≠ 0)
Прирівнюємо dy/dt = 0: y(−γ + δ·x) = 0 → x = γ/δ (для y ≠ 0)
Лінеаризація в E*: матриця Якобі, обчислена в нетривіальній рівновазі, має суто уявні власні значення:
[δ·y*, 0] ]
власні значення: λ = ± i·√(α·γ) ← суто уявні → центр
Період малих коливань: T ≈ 2π / √(α·γ)
Суто уявні власні значення вказують на центр у лінеаризованій системі. Для повністю нелінійних рівнянь Лотки–Вольтерри цей центр нейтрально стійкий: збурення не зростають і не згасають — вони вічно обертаються навколо рівноваги по замкненій траєкторії, форма якої залежить від початкових умов.
4. Фазовий портрет та закон збереження
Система Лотки–Вольтерри має чудовий перший інтеграл (збережувану величину), аналогічний збереженню енергії в механіці:
Перевірка: dV/dt = (δ − γ/x)·(dx/dt) + (β − α/y)·(dy/dt)
= (δ − γ/x)·(αx − βxy) + (β − α/y)·(−γy + δxy)
= ... = 0 ✓ (взаємне скорочення точне)
Кожна замкнена орбіта у фазовій площині (x, y) відповідає сталому значенню V. Орбіта, найближча до рівноваги E*, має найменше V; амплітуда коливань зростає зі зростанням V.
На фазовому портреті ви побачите:
- Замкнені криві за годинниковою стрілкою навколо E* = (γ/δ, α/β).
- Пік жертви настає раніше за пік хижака — затримка становить чверть періоду (≈ T/4).
- Зовнішні криві сягають небезпечно низьких мінімумів — майже вимирання перед відновленням.
- Сама рівновага — це найвнутрішніша точка (нескінченно мале коливання).
5. Вплив параметрів — що змінює цикл?
Кожен параметр змінює конкретний аспект коливання:
Збільшити α (швидше зростання жертви)
Вища рівноважна чисельність хижаків y* = α/β. Швидші коливання (період T ∝ 1/√α). Жертва швидше відновлюється після хижацтва.
Збільшити β (вища ефективність хижацтва)
Рівноважна жертва x* = γ/δ лишається незмінною; рівновага хижаків y* = α/β зменшується. Більші коливання амплітуди.
Збільшити γ (швидша загибель хижака)
Хижаки швидше гинуть без їжі. Нижча рівноважна щільність хижаків. Довший період T між піками.
Збільшити δ (краще перетворення їжі)
Кожне вбивство дає більше потомства. Нижча рівноважна чисельність жертви x* = γ/δ. Коливання стають тісніше зв'язаними.
Додавання
логістичного обмеження для жертви (αx(1−x/K))
перетворює нейтральний центр на стійку спіраль: траєкторії
закручуються всередину, досягаючи єдиного граничного циклу (якщо рівновага лежить
усередині допустимої області) або стійкої точки (якщо K мале).
6. Реалізація на JavaScript з RK4
Метод Рунге–Кутти 4-го порядку (RK4) дає чудову точність за помірну вартість. Кожен крок потребує чотирьох обчислень функції правої частини:
// Права частина Лотки–Вольтерри
function lv(x, y, α, β, γ, δ) {
return {
dxdt: α * x - β * x * y,
dydt: -γ * y + δ * x * y,
};
}
// Один крок RK4
function rk4Step(x, y, h, α, β, γ, δ) {
const k1 = lv(x, y, α, β, γ, δ);
const k2 = lv(x + h/2*k1.dxdt, y + h/2*k1.dydt, α, β, γ, δ);
const k3 = lv(x + h/2*k2.dxdt, y + h/2*k2.dydt, α, β, γ, δ);
const k4 = lv(x + h*k3.dxdt, y + h*k3.dydt, α, β, γ, δ);
return {
x: x + (h/6) * (k1.dxdt + 2*k2.dxdt + 2*k3.dxdt + k4.dxdt),
y: y + (h/6) * (k1.dydt + 2*k2.dydt + 2*k3.dydt + k4.dydt),
};
}
// Симулюємо протягом T років із кроком h
function simulate(x0, y0, α, β, γ, δ, T, h = 0.01) {
const history = [{ t: 0, x: x0, y: y0 }];
let { x, y } = { x: x0, y: y0 };
for (let t = h; t <= T; t += h) {
({ x, y } = rk4Step(x, y, h, α, β, γ, δ));
// Захист від чисельного зриву поблизу вимирання
if (x < 0) x = 0;
if (y < 0) y = 0;
history.push({ t, x, y });
}
return history;
}
// Приклад: класичний набір параметрів
const α = 1.0; // швидкість народжуваності жертви
const β = 0.1; // швидкість хижацтва
const γ = 0.4; // швидкість загибелі хижака
const δ = 0.02; // ефективність перетворення хижака
const data = simulate(10, 5, α, β, γ, δ, 50);
// data[i].x → популяція жертви в момент data[i].t
// data[i].y → популяція хижака в момент data[i].t
Рендеринг фазового портрета
// Малюємо траєкторію (x, y) на 2D-полотні
function drawPhasePortrait(ctx, data, W, H) {
const maxX = Math.max(...data.map(p => p.x)) * 1.1;
const maxY = Math.max(...data.map(p => p.y)) * 1.1;
const cx = p => (p.x / maxX) * W;
const cy = p => H - (p.y / maxY) * H;
ctx.beginPath();
data.forEach((p, i) => {
i === 0
? ctx.moveTo(cx(p), cy(p))
: ctx.lineTo(cx(p), cy(p));
});
ctx.strokeStyle = '#22c55e';
ctx.lineWidth = 1.5;
ctx.stroke();
// Позначаємо рівновагу E* = (γ/δ, α/β)
const eq = { x: γ/δ, y: α/β };
ctx.beginPath();
ctx.arc(cx(eq), cy(eq), 5, 0, Math.PI * 2);
ctx.fillStyle = '#f59e0b';
ctx.fill();
}
🐺 Жива симуляція хижак–жертва
Налаштовуйте повзунки α, β, γ, δ і спостерігайте за циклами популяцій у реальному часі. Перемикайтеся між виглядом часового ряду й фазового портрета.
7. Розширення: конкуренція, три види, стохастичність
Логістична жертва (модель Розенцвейга–Макартура)
Заміна лінійного члена жертви логістичним обмеженням вводить ємність середовища K:
dy/dt = −γ·y + δ·x·y
Тепер рівновага може бути стійкою спіраллю або граничним циклом
залежно від K проти (γ/δ). «Біфуркація Хопфа» виникає при K = γ/(2δ).
Це розширення усуває структурну нестійкість і дає реалістичні замкнені граничні цикли (атрактори Хопфа) для проміжних значень K.
Конкурентна Лотка–Вольтерра (два види жертви)
Два конкуруючі види, що ділять ресурс:
dx₂/dt = r₂·x₂·(1 − (x₂ + α₂₁·x₁)/K₂)
αᵢⱼ = вплив виду j на вид i (коефіцієнт конкуренції)
Співіснування: α₁₂ < K₁/K₂ ТА α₂₁ < K₂/K₁ (конкурентне співіснування)
Триланкові ланцюги живлення
Додавання верхнього хижака z (який їсть y) створює 3D-систему ЗДР. Трофічний каскад може виявляти хаотичну динаміку — модель Гастінгса–Пауелла (1991) показала, що прості ланцюги живлення можуть породжувати хаос без жодного стохастичного впливу, суто з нелінійних взаємодій.
Стохастичні розширення
Детерміністичні моделі дають усереднену по ансамблю поведінку. Реальні популяції скінченні й дискретні, тому стохастичність важлива для малих популяцій:
- Демографічна стохастичність: окремі народження й смерті є випадковими подіями — для ефективної симуляції використовуйте алгоритм Гіллеспі або τ-leaping.
- Екологічна стохастичність: параметри α, β змінюються випадково в часі (наприклад, сезонний вплив). Моделюється стохастичними диференціальними рівняннями Іто.
- Просторові моделі: агенти на сітці з локальними взаємодіями. Можуть стабілізувати хаотичні системи через просторове розділення хижака й жертви.