Популяційна біологія · ЗДР · Хаос
📅 Березень 2026 ⏱ ≈ 10 хв читання 🎯 Початковий–Середній

Рівняння Лотки–Вольтерри — цикли популяцій хижак–жертва

Уперше незалежно сформульовані Альфредом Лоткою (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 рік⁻¹.

Керівні рівняння такі:

dx/dt = α·x − β·x·y ← жертва: зростає сама, зменшується, коли її їдять
dy/dt = −γ·y + δ·x·y ← хижак: гине сам, зростає, коли наїдається

Розбір членів:
α·x — експоненційне народження жертви (логістичне, якщо замінити на α·x·(1 − x/K))
−β·x·y — з'їдена жертва: кожна зустріч хижак-жертва прибирає β жертв/час
−γ·y — голодування хижака за відсутності жертви
δ·x·y — розмноження хижака від споживання жертви (δ = коефіцієнт перетворення)

Член закону діючих мас β·x·y — ключова нелінійність. Без нього рівняння розпадаються на дві незалежні експоненти. З ним популяції зв'язані й коливаються нескінченно.

Аналіз розмірностей: якщо x і y в особинах, а t у роках, то [α] = рік⁻¹, [β] = (особ.·рік)⁻¹, [γ] = рік⁻¹, [δ] = (особ.·рік)⁻¹. Добуток β·x·y має мати розмірність особ./рік, щоб відповідати dx/dt — перевірте узгодженість ваших параметрів.

3. Рівноваги та аналіз стійкості

Прирівнявши dx/dt = dy/dt = 0, отримуємо дві нерухомі точки:

Тривіальна рівновага E₀ = (0, 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*: матриця Якобі, обчислена в нетривіальній рівновазі, має суто уявні власні значення:

J(E*) = [ [0, −β·x*],
        [δ·y*, 0] ]

власні значення: λ = ± i·√(α·γ) ← суто уявні → центр

Період малих коливань: T ≈ 2π / √(α·γ)

Суто уявні власні значення вказують на центр у лінеаризованій системі. Для повністю нелінійних рівнянь Лотки–Вольтерри цей центр нейтрально стійкий: збурення не зростають і не згасають — вони вічно обертаються навколо рівноваги по замкненій траєкторії, форма якої залежить від початкових умов.

Структурна нестійкість: нейтральна стійкість — це математична крихкість. Будь-який біологічний реалізм — внутрішньовидова конкуренція, нелінійні функціональні відгуки, часові затримки — руйнує ідеальні цикли. Реальні екосистеми загалом асимптотично стійкі (популяції повертаються до рівноваги після збурення), але ідеалізація Лотки–Вольтерри залишається відправною точкою для всіх моделей популяційної динаміки.

4. Фазовий портрет та закон збереження

Система Лотки–Вольтерри має чудовий перший інтеграл (збережувану величину), аналогічний збереженню енергії в механіці:

V(x, y) = δ·x − γ·ln(x) + β·y − α·ln(y) = const

Перевірка: dV/dt = (δ − γ/x)·(dx/dt) + (β − α/y)·(dy/dt)
= (δ − γ/x)·(αx − βxy) + (β − α/y)·(−γy + δxy)
= ... = 0 ✓ (взаємне скорочення точне)

Кожна замкнена орбіта у фазовій площині (x, y) відповідає сталому значенню V. Орбіта, найближча до рівноваги E*, має найменше V; амплітуда коливань зростає зі зростанням V.

На фазовому портреті ви побачите:

Чому пік жертви настає раніше за хижаків? Коли жертви вдосталь, у хижаків багато їжі, і вони починають швидко розмножуватися. Розмножуючись, хижаки надмірно полюють, обвалюючи популяцію жертви. За браку їжі хижаки починають голодувати й гинути. З меншою кількістю хижаків жертва відновлюється — і цикл починається знову. Цю затримку в чверть періоду спостерігають у реальних канадських даних про рись і зайця за понад століття.

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:

dx/dt = α·x·(1 − x/K) − β·x·y
dy/dt = −γ·y + δ·x·y

Тепер рівновага може бути стійкою спіраллю або граничним циклом
залежно від K проти (γ/δ). «Біфуркація Хопфа» виникає при K = γ/(2δ).

Це розширення усуває структурну нестійкість і дає реалістичні замкнені граничні цикли (атрактори Хопфа) для проміжних значень K.

Конкурентна Лотка–Вольтерра (два види жертви)

Два конкуруючі види, що ділять ресурс:

dx₁/dt = r₁·x₁·(1 − (x₁ + α₁₂·x₂)/K₁)
dx₂/dt = r₂·x₂·(1 − (x₂ + α₂₁·x₁)/K₂)

αᵢⱼ = вплив виду j на вид i (коефіцієнт конкуренції)
Співіснування: α₁₂ < K₁/K₂ ТА α₂₁ < K₂/K₁ (конкурентне співіснування)

Триланкові ланцюги живлення

Додавання верхнього хижака z (який їсть y) створює 3D-систему ЗДР. Трофічний каскад може виявляти хаотичну динаміку — модель Гастінгса–Пауелла (1991) показала, що прості ланцюги живлення можуть породжувати хаос без жодного стохастичного впливу, суто з нелінійних взаємодій.

Стохастичні розширення

Детерміністичні моделі дають усереднену по ансамблю поведінку. Реальні популяції скінченні й дискретні, тому стохастичність важлива для малих популяцій:

Канадська рись і заєць-біляк: 200-річні записи про хутра Компанії Гудзонової затоки (1845–1935) — найвідоміша перевірка передбачень Лотки–Вольтерри. Обидва види демонструють 9–11-річні коливання, де жертва випереджає хижаків на ~1–2 роки. Сучасний аналіз показує, що цикл зайця частково самокерований (надмірне виїдання рослинності) і частково керований хижаками — комбінація, яку жодна чиста модель не схоплює окремо.