Типы моделей

Урок даёт карту видов моделей по четырём осям, чтобы вы понимали, какой инструмент к какой задаче.

Тип модели определяется ответами на четыре вопроса: есть ли случайность, меняется ли время, непрерывны ли величины, и решается ли модель формулой или прогоном.

Четыре оси классификации

Модели удобно различать по независимым признакам. Одна модель имеет значение на каждой оси сразу.

Детерминированные vs стохастические

Детерминированная модель при одних и тех же входах всегда даёт один и тот же выход. Формула роста вклада — такая: 1000 под 10% через год это ровно 1100, без вариантов. Стохастическая модель содержит случайность: бросок монеты, приход клиента, мутация. Один и тот же запуск даст разные результаты — поэтому такие модели прогоняют много раз и смотрят на распределение.

Статические vs динамические

Статическая модель описывает один срез, без времени: «сколько краски нужно на стену площадью S». Динамическая модель описывает изменение во времени: рост популяции, ход эпидемии. Большинство интересных симуляций — динамические.

Непрерывные vs дискретные

Речь о том, как меняются величины и время. В непрерывной модели они текут плавно (температура, скорость) — язык таких моделей — дифференциальные уравнения. В дискретной время идёт шагами, а величины часто целочисленны (число людей, поколение клеток). Компьютер всегда считает дискретно, поэтому непрерывные модели мы аппроксимируем мелкими шагами.

Аналитические vs имитационные

Аналитическая модель решается формулой: подставил числа — получил ответ. Имитационная (симуляция) ответа в формуле не имеет; чтобы узнать результат, надо прогнать процесс шаг за шагом. Этот курс — про имитационные модели: они работают там, где формула либо не выводится, либо слишком сложна.

Сравнительная таблица

ОсьОдин полюсДругой полюсПример
Случайностьдетерминированнаястохастическаявклад / очередь в банке
Времястатическаядинамическаякраска на стену / рост леса
Гладкостьнепрерывнаядискретнаяостывание чая / поколения CA
Способ решенияаналитическаяимитационнаяформула π·r² / Монте-Карло π

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

Выбор по осям диктует структуру кода. Стохастическая модель потребует random и многократного прогона с усреднением. Динамическая — цикл по времени. Дискретная — целочисленные состояния и шаг +1; непрерывная — малый шаг dt и приближённое интегрирование. Имитационная не вернёт ответ строкой return formula — придётся накапливать результат внутри цикла. Поняв тип задачи, вы уже знаете каркас программы ещё до первой строки.

# один и тот же вопрос двумя путями: площадь круга
import random
import math

r = 1.0
# аналитически
print(f"Аналитически: {math.pi * r * r:.4f}")

# имитационно (Монте-Карло): доля точек внутри круга
random.seed(0)
N = 200000
inside = sum(1 for _ in range(N)
             if random.random()**2 + random.random()**2 <= 1)
print(f"Имитационно:  {4 * inside / N:.4f}")

Вывод:

Аналитически: 3.1416
Имитационно:  3.1429

Два способа, один ответ. Когда формула есть — берите её, она точна и быстра. Имитация нужна, когда формулы нет.

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

  • Тащить имитацию там, где есть формула. Считать площадь круга методом Монте-Карло — учебно полезно, на практике расточительно.
  • Прогнать стохастическую модель один раз. Один прогон случайной модели — это одна точка из распределения, по ней нельзя судить о «типичном» поведении.
  • Брать слишком крупный шаг dt в непрерывной модели. Грубая дискретизация искажает динамику вплоть до неустойчивости (увидим на хищник-жертве).

Итоги

  • Модели различают по четырём независимым осям: случайность, время, гладкость, способ решения.
  • Стохастические модели прогоняют многократно; динамические крутят цикл по времени.
  • Есть формула — берите аналитику; нет — стройте имитацию.
  • Тип задачи задаёт каркас кода ещё до написания.
Проверьте себя
1. Чем стохастическая модель отличается от детерминированной?
AОна всегда точнее
BОна содержит случайность, поэтому разные прогоны дают разные результаты
CОна не использует время
DОна решается формулой
2. Когда выгоднее имитационная модель, а не аналитическая?
AВсегда
BКогда формула не выводится или слишком сложна
CКогда нужен быстрый и точный ответ
DКогда нет случайности
3. Почему компьютер непрерывные модели считает дискретно?
AИз-за нехватки памяти
BПотому что вычисления идут шагами, и непрерывность аппроксимируют малым шагом dt
CПотому что Python не умеет дробные числа
DЭто ошибка, так делать нельзя