science

Учебник Математическое моделирование и симуляции для начинающих

35 уроков · 9 разделов · бесплатно, без регистрации

Полный курс по математическому моделированию и компьютерным симуляциям на чистом Python. Вы научитесь превращать реальные процессы — распространение эпидемий, рост популяций, очереди, дорожный трафик, поведение толпы — в работающие модели и прогонять их на компьютере. Разберём метод Монте-Карло, случайные блуждания и диффузию, модели роста и хищник-жертва, клеточные автоматы (Игра «Жизнь», лесной пожар, сегрегация Шеллинга), теорию очередей и марковские цепи, а в финале — как проверять модели на прочность, оценивать неопределённость и пользоваться ими честно. Все симуляции исполнимы прямо в браузере: код на стандартной библиотеке Python с воспроизводимым выводом.

Курс «Математическое моделирование и симуляции» состоит из 9 разделов и 35 уроков: Что такое модель и зачем моделировать, Метод Монте-Карло, Генерация случайности, Случайные блуждания, Модели роста и динамика популяций, Эпидемиология: модели распространения болезней, Клеточные автоматы, Очереди, события и марковские цепи и Валидация, неопределённость и реальные кейсы. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Что такое модель и зачем моделировать

    1. Что такое математическая модель

      Математическая модель как упрощённое представление реальности: зачем нужны модели и чем отличается модель от реального объекта.

    2. Цикл моделирования

      Этапы построения модели: постановка задачи, формализация, реализация, валидация, анализ и уточнение — почему это цикл, а не прямая.

    3. Типы моделей

      Классификация моделей: детерминированные и стохастические, статические и динамические, непрерывные и дискретные, аналитические и имитационные.

    4. Допущения, валидность и границы применимости

      Почему любая модель держится на допущениях, что такое область применимости и как принцип «все модели неверны, но некоторые полезны» работает на практике.

  2. 2 Метод Монте-Карло

    1. Идея метода Монте-Карло

      Идея метода Монте-Карло: вместо аналитической формулы бросаем случайные точки и считаем долю удачных. История метода (Улам, нейтроны, казино), оценка числа π на чистом Python.

    2. Интегрирование методом Монте-Карло

      Интегрирование методом Монте-Карло: оценка определённого интеграла как среднего значения функции, умноженного на длину отрезка. Пример на чистом Python и сила метода в многомерных задачах.

    3. Оценка вероятностей сложных событий

      Оценка вероятностей сложных событий методом Монте-Карло: когда формула трудна, симулируем событие тысячи раз и берём долю. Разбор парадокса дней рождения на чистом Python.

    4. Точность Монте-Карло: закон 1/√N

      Точность метода Монте-Карло и закон 1/√N: почему ошибка убывает как корень из числа испытаний, в чём сила (независимость от размерности) и слабость (медленная сходимость) метода. Эксперимент на чистом Python.

  3. 3 Генерация случайности

    1. Псевдослучайные числа и зачем нужен seed

      Что такое генератор псевдослучайных чисел (ГПСЧ), почему случайность «псевдо», что такое период и seed. Линейный конгруэнтный генератор на Python и воспроизводимость прогонов через random.seed.

    2. Равномерное распределение и его преобразования

      Равномерное распределение как фундамент случайности: random.random() на [0,1), масштабирование на отрезок [a, b] формулой a+(b-a)*u, случайный выбор random.choice и бросок кубика randint в Python.

    3. Метод обратной функции

      Метод обратной функции (inverse transform sampling): как из равномерного распределения получить любое другое через обратную функцию распределения. Генерация экспоненциального распределения формулой x = -ln(1-u)/lambda в Python.

    4. Метод отклонения (rejection sampling)

      Метод отклонения (rejection sampling): генерация выборки из распределения, когда обратную CDF не выписать. Точки в прямоугольнике, принятие под кривой плотности, эффективность метода на примере f(x)=2x в Python.

  4. 4 Случайные блуждания

    1. Одномерное случайное блуждание

      Одномерное случайное блуждание на Python: шаги +1/-1, траектория, нулевое среднее смещение и растущий разброс. Базовая модель случайных процессов.

    2. Двумерное блуждание и закон √N

      Двумерное случайное блуждание и закон корня из N: среднее расстояние от старта растёт как sqrt числа шагов. Связь с диффузией, моделирование на Python.

    3. Диффузия и броуновское движение

      Диффузия и броуновское движение как случайное блуждание молекул: капля чернил, дрожание пыльцы, теория Эйнштейна 1905 года, линейный рост среднего квадрата смещения.

    4. Применения: цены акций и блуждание частиц

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

  5. 5 Модели роста и динамика популяций

    1. Экспоненциальный рост

      Экспоненциальный рост популяции: на каждом шаге умножаем на (1+r). Имитация на Python, постоянный темп удвоения, правило 70, где встречается в природе и почему долго невозможен.

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

      Логистический рост популяции и ёмкость среды K: формула N = N + r*N*(1 - N/K), S-образная кривая, замедление у потолка. Имитация на Python пошагово.

    3. Хищник-жертва (Лотка-Вольтерра)

      Модель хищник-жертва Лотки-Вольтерры: две связанные популяции, колебания с запаздыванием, циклы. Дискретная имитация на Python методом явного Эйлера, смысл параметров a, b, c, d.

    4. Конкуренция и сосуществование видов

      Конкуренция двух видов за общий ресурс: модель конкуренции, принцип конкурентного исключения и сосуществование, коэффициенты влияния. Дискретная имитация на Python.

  6. 6 Эпидемиология: модели распространения болезней

    1. Модель SIR

      Модель SIR в эпидемиологии: три группы S, I, R, потоки заражения и выздоровления, коэффициенты beta и gamma, пик эпидемии. Реализация на Python.

    2. Базовое репродуктивное число R0

      Базовое репродуктивное число R0 = beta/gamma: порог эпидемии R0>1, затухание R0<1, порог коллективного иммунитета 1-1/R0 и зависимость размера эпидемии от R0.

    3. SEIR и эффект карантина

      Модель SEIR с инкубационным классом E и коэффициентом sigma, болезни с инкубацией, эффект карантина: снижение beta и сглаживание кривой (flatten the curve).

  7. 7 Клеточные автоматы

    1. Идея клеточного автомата

      Что такое клеточный автомат: сетка клеток, локальные правила, окрестность фон Неймана и Мура, эмерджентность. Элементарный 1D-автомат Rule 90 и треугольник Серпинского на Python.

    2. Игра «Жизнь» Конвея

      Игра «Жизнь» Конвея на Python: правила рождения и выживания клеток, окрестность Мура, планер (glider) как движущаяся фигура. Эмерджентность из локальных правил, ASCII-визуализация поколений.

    3. Лесной пожар

      Модель лесного пожара как клеточный автомат: три состояния клетки (пусто, дерево, горит), распространение огня фронтом, перколяция и критическая плотность леса. Реализация на Python с ASCII-выводом.

    4. Модель сегрегации Шеллинга

      Модель сегрегации Шеллинга на Python: агенты двух типов на сетке, порог толерантности, переезд недовольных. Как умеренные локальные предпочтения дают сильное глобальное разделение — эмерджентность и нобелевская работа Шеллинга.

  8. 8 Очереди, события и марковские цепи

    1. Дискретно-событийное моделирование

      Дискретно-событийное моделирование (DES) на Python: событийный цикл, список будущих событий на куче heapq, прыжки часов от события к событию вместо шага по времени.

    2. Теория очередей и модель M/M/1

      Модель массового обслуживания M/M/1 на Python: пуассоновский поток приходов, экспоненциальное обслуживание, загрузка rho = lambda/mu, среднее число в системе L и время ожидания W, DES-симуляция и сравнение с теорией.

    3. Марковские цепи

      Марковские цепи на Python: состояния, матрица переходов, марковское свойство, умножение вектора на матрицу как шаг во времени и сходимость к стационарному распределению на примере погоды.

    4. PageRank как марковская цепь

      PageRank как марковская цепь на Python: веб как граф ссылок, случайный сёрфер, стационарное распределение, коэффициент затухания d и телепортация — связь марковских цепей с алгоритмом ранжирования Google.

  9. 9 Валидация, неопределённость и реальные кейсы

    1. Анализ чувствительности и распространение неопределённости

      Анализ чувствительности модели «по одному параметру» (торнадо-анализ) и распространение неопределённости через Монте-Карло на примере модели дохода стартапа: какой параметр критичнее и каков честный разброс прогноза.

    2. Валидация, верификация и калибровка

      Чем верификация модели (правильно ли запрограммирована) отличается от валидации (соответствует ли реальности), что такое калибровка параметров по данным методом наименьших квадратов и почему опасно переобучение. Афоризм Бокса: все модели неверны, но некоторые полезны.

    3. Ансамбли прогонов и доверительные интервалы

      Почему один прогон стохастической модели обманчив, как ансамбль из многих прогонов с разными seed даёт надёжную оценку, и как построить 95% доверительный интервал по разбросу прогонов (среднее ± 1.96·стд), чтобы отличить настоящий эффект от случайного шума.

    4. Этика моделирования и реальные кейсы

      Этика математического моделирования: модель не равна реальности, ограничения прогнозов (пандемии, климат), как моделями манипулируют подбором допущений, ответственность моделиста. Реальные кейсы: S-образное распространение слуха и пробка на дороге как клеточный автомат. Финал курса.

py
Курс по теме
Пройдите курс «Python с нуля» — по шагам, с проверкой
8 уроков · ~14 ч · теория, упражнения и экзамен с бейджем
Открыть курс →