Логистический рост и ёмкость среды

Экспонента из прошлого урока улетает в бесконечность — но реальные популяции упираются в потолок. Еды хватает на тысячу кроликов, и сколько бы их ни родилось, больше тысячи остров не прокормит. Сегодня добавим в модель этот потолок — ёмкость среды — и получим знаменитую S-образную кривую.

Ёмкость среды ($K$) — максимальное число особей, которое среда способна устойчиво прокормить. У этого потолка прирост популяции падает до нуля: рождаемость уравновешивается смертностью от нехватки ресурсов.

Зачем усложнять простую экспоненту? Потому что без потолка модель предсказывает абсурд — бесконечное число бактерий, кроликов, людей. Логистическая модель — это минимальная честная поправка: она ведёт себя как экспонента, пока места много, и плавно тормозит у ёмкости среды. Именно так выглядят реальные кривые заселения острова, роста колонии дрожжей в пробирке и насыщения рынка новым товаром.

Тормоз в формуле

Возьмём экспоненциальный прирост $rN$ и домножим его на «коэффициент тесноты» $(1 - N/K)$: $$N_{\text{новое}} = N + rN\left(1 - \frac{N}{K}\right)$$

Разберём множитель $(1 - N/K)$ — это и есть тормоз:

  • Когда $N$ мало по сравнению с $K$, дробь $N/K \approx 0$, тормоз $\approx 1$, и формула почти совпадает с экспонентой: $N + rN$.
  • Когда $N$ приближается к $K$, дробь $N/K \to 1$, тормоз $\to 0$, и прирост гаснет: популяция замирает у потолка.
  • Если бы вдруг $N$ превысило $K$, тормоз стал бы отрицательным — популяция пошла бы вниз, к ёмкости среды.

Запустим: начнём с 10 особей, $r = 0.5$, ёмкость среды $K = 1000$, и проследим 20 шагов.

def logistic(N0, r, K, steps):
    N = N0
    out = [N]
    for _ in range(steps):
        N = N + r * N * (1 - N / K)
        out.append(N)
    return out

res = logistic(10, 0.5, 1000, 20)
print(f"{'шаг':>4} {'N':>8}")
for i in range(0, 21, 4):
    print(f"{i:>4} {res[i]:>8.1f}")

Вывод:

 шаг        N
   0     10.0
   4     49.3
   8    219.1
  12    656.0
  16    956.1
  20    997.0

Три фазы S-образной кривой

Вглядитесь в числа — у роста явно три участка:

  • Разгон (шаги 0–8). 10 → 49 → 219: популяция мала, тесноты нет, рост почти экспоненциальный. От 49 до 219 — это рост более чем в 4 раза за 4 шага.
  • Стремительный подъём (шаги 8–12). 219 → 656: середина кривой, прирост максимален в абсолютных числах (+437 за 4 шага). Популяция «летит» через половину ёмкости среды.
  • Насыщение (шаги 12–20). 656 → 956 → 997: подъём замедляется, кривая прижимается к потолку 1000. За последние 4 шага — лишь +41, потом ещё меньше.

Эти три фазы и складываются в букву S — отсюда название «S-образная кривая». В отличие от экспоненты, которая уходит в бесконечность, логистическая кривая выходит на горизонтальную полку у $K$.

N
1000 |              ____________  у K (полка)
     |           __/
 500 |        __/   крутая середина
     |     _/
   0 |__--/          медленный разгон
     +-----------------------------> шаг

Как работает под капотом

Под капотом — снова цикл с одной строкой, но теперь прирост зависит от того, насколько мы близки к потолку. Сравним напрямую логистический рост и чистую экспоненту с тем же $r$ на первых шагах:

def exp_step(N, r):
    return N + r * N

def log_step(N, r, K):
    return N + r * N * (1 - N / K)

N_exp = N_log = 10.0
r, K = 0.5, 1000
print(f"{'шаг':>4} {'экспонента':>12} {'логистика':>12}")
for s in range(1, 6):
    N_exp = exp_step(N_exp, r)
    N_log = log_step(N_log, r, K)
    print(f"{s:>4} {N_exp:>12.2f} {N_log:>12.2f}")

Вывод:

 шаг   экспонента    логистика
   1        15.00        14.95
   2        22.50        22.31
   3        33.75        33.22
   4        50.62        49.28
   5        75.94        72.71

На первых шагах различие крошечное: при $N$ около 10–70 на фоне $K = 1000$ теснота почти не чувствуется, тормоз $(1 - N/K)$ близок к единице. Расхождение копится медленно и проявится позже, когда $N$ подберётся к ёмкости среды. Это и есть смысл логистической модели: «как экспонента в начале, но с потолком в конце».

Где в природе встречается эта кривая? Дрожжи в пробирке, бактерии в чашке Петри, олени, завезённые на остров, число пользователей нового приложения — все они сначала растут почти экспоненциально, а затем выходят на полку, когда ресурс (еда, место, рынок) исчерпан. Параметр $K$ — это и есть «вместимость» конкретной среды.

Здесь мы считаем шагами — это дискретная имитация. У логистического роста есть и непрерывный аналог в виде дифференциального уравнения; его подробный вывод и точное решение (логистическая функция) разбираются в курсе про дифференциальные уравнения. Для понимания формы кривой и роли ёмкости среды пошаговой модели вполне достаточно.

Частые ошибки

  • Считать, что тормоз $(1 - N/K)$ — это вычитание особей. Это множитель прироста: он не убивает особей, а уменьшает добавку на шаге. У потолка добавка просто стремится к нулю.
  • Путать $r$ и $K$. $r$ отвечает за скорость разгона (как круто стартует кривая), $K$ — за высоту полки (где она остановится). Это два независимых параметра.
  • Ждать, что популяция точно сядет на $K$. При умеренном $r$ она асимптотически приближается к $K$ (997, 999, …), но математически достигает его лишь в пределе.
  • Брать слишком большой $r$. При очень большом $r$ дискретная логистическая модель перестаёт плавно выходить на полку и начинает «прыгать» вокруг $K$ (а при экстремальных $r$ — даёт хаос). Для гладкой S-кривой $r$ должен быть умеренным.
  • Думать, что середина кривой — это замедление. Наоборот: в середине (около $K/2$) абсолютный прирост максимален, это самый крутой участок.

Итоги

  • Логистический рост = экспоненциальный прирост $rN$, умноженный на тормоз $(1 - N/K)$.
  • Ёмкость среды $K$ — это потолок: у него прирост гаснет, и кривая выходит на горизонтальную полку.
  • Кривая S-образна: медленный разгон $\to$ крутая середина у $K/2$ $\to$ насыщение у $K$.
  • Пока $N$ мало по сравнению с $K$, логистика почти неотличима от экспоненты.
  • $r$ задаёт скорость разгона, $K$ — высоту полки; это независимые параметры. Непрерывный аналог — в курсе про дифференциальные уравнения.
Проверьте себя
1. За что отвечает множитель (1 - N / K) в формуле логистического роста?
AЭто число особей, которые умирают за шаг
BЭто тормоз прироста: у потолка K он стремится к нулю и рост замирает
CЭто скорость разгона кривой в начале
DЭто постоянная добавка к популяции каждый шаг
2. Чем логистическая кривая отличается от экспоненциальной?
AЛогистическая растёт быстрее и уходит в бесконечность
BЛогистическая выходит на горизонтальную полку у ёмкости среды K, а экспонента — нет
CЛогистическая всегда убывает
DМежду ними нет разницы при малых N
3. В какой части S-образной кривой абсолютный прирост за шаг максимален?
AВ самом начале, при малом N
BВ середине, примерно при N ≈ K/2
CВ самом конце, у потолка K
DПрирост одинаков на всех участках
py
Курс по теме
Пройдите курс «Python с нуля» — по шагам, с проверкой
8 уроков · ~14 ч · теория, упражнения и экзамен с бейджем
Открыть курс →