Типы моделей
Урок даёт карту видов моделей по четырём осям, чтобы вы понимали, какой инструмент к какой задаче.
Тип модели определяется ответами на четыре вопроса: есть ли случайность, меняется ли время, непрерывны ли величины, и решается ли модель формулой или прогоном.
Четыре оси классификации
Модели удобно различать по независимым признакам. Одна модель имеет значение на каждой оси сразу.
Детерминированные 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 в непрерывной модели. Грубая дискретизация искажает динамику вплоть до неустойчивости (увидим на хищник-жертве).
Итоги
- Модели различают по четырём независимым осям: случайность, время, гладкость, способ решения.
- Стохастические модели прогоняют многократно; динамические крутят цикл по времени.
- Есть формула — берите аналитику; нет — стройте имитацию.
- Тип задачи задаёт каркас кода ещё до написания.