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

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

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

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

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

Возьмём экспоненциальный прирост r * N и домножим его на «коэффициент тесноты» (1 - N / K): N_новое = N + r * N * (1 - N / K).

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

  • Когда N мало по сравнению с K, дробь N / K ≈ 0, тормоз ≈ 1, и формула почти совпадает с экспонентой: N + r * N.
  • Когда N приближается к K, дробь N / K → 1, тормоз → 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) абсолютный прирост максимален, это самый крутой участок.

Итоги

  • Логистический рост = экспоненциальный прирост r * N, умноженный на тормоз (1 - N / K).
  • Ёмкость среды K — это потолок: у него прирост гаснет, и кривая выходит на горизонтальную полку.
  • Кривая S-образна: медленный разгон → крутая середина у K/2 → насыщение у 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Прирост одинаков на всех участках