Учебник Физика для программистов для начинающих
Этот курс соединяет физику и код: рядом с каждой формулой — её живая численная симуляция на чистом Python (только стандартная библиотека math), которую можно запустить прямо в браузере и увидеть числа. Вы научитесь превращать дифференциальные законы движения в пошаговый код, поймёте, почему явный метод Эйлера «взрывает» энергию, а полу-неявный и Верле — нет, и соберёте кирпичики настоящего игрового движка: баллистику с сопротивлением воздуха, векторную математику и отскоки, пружины и маятники, упругие и неупругие удары, орбиты и задачу N тел. Сквозной мотив — сохранение энергии как объективный тест корректности. Курс для тех, кто умеет программировать и хочет понять физику изнутри, через симуляцию.
Курс «Физика для программистов: симуляции и игровая физика» состоит из 8 разделов и 26 уроков: Кинематика: движение во времени, Численное интегрирование движения, Гравитация и снаряды, Векторы в 2D, Силы и пружины, Столкновения и удары, Орбиты и задача N тел и Энергия и сохранение. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Кинематика: движение во времени
- Что такое симуляция: время как маленькие шаги
Главная идея игровой физики: непрерывное движение мы заменяем дискретными шагами по времени dt. Базовый цикл симуляции на Python.
- Равноускоренное движение и дискретизация по dt
Формула x=x0+v0t+at^2/2 рядом с её пошаговой симуляцией. Сравниваем аналитику и численный результат, видим первую ошибку дискретизации.
- Скорость, ускорение и трасса движения в числах
Печатаем таблицу состояния тела: время, координата, скорость. Учимся читать траекторию по числам и считать среднюю скорость как наклон.
- Движение в 2D: две независимые оси
Ключевая идея баллистики: горизонталь и вертикаль независимы. Симулируем полёт мяча по двум осям и печатаем траекторию точками.
- Что такое симуляция: время как маленькие шаги
2 Численное интегрирование движения
- Явный метод Эйлера: простейший интегратор
Самый простой способ продвинуть систему во времени. Разбираем формулу метода Эйлера, его порядок точности и где он ломается.
- Полу-неявный Эйлер: одно изменение, огромный эффект
Меняем порядок двух строк — и интегратор начинает сохранять энергию. Почему симплектический метод так важен для игр.
- Метод Верле: точность через память о прошлом
Интегратор Верле хранит две прошлые позиции вместо скорости. Второй порядок точности и отличное сохранение энергии — почему его любят в симуляциях ткани и молекул.
- Выбор шага и устойчивость: энергия как тест
Сохранение энергии — лучший детектор кривого интегратора. Как выбрать dt, что такое устойчивость и почему фиксированный шаг важнее красивого.
- Явный метод Эйлера: простейший интегратор
3 Гравитация и снаряды
- Баллистика без сопротивления: дальность и угол
Формула дальности R=v0^2·sin(2α)/g и проверка симуляцией. Почему 45° даёт максимум и при каких углах дальность одинакова.
- Сопротивление воздуха: когда аналитика бессильна
Добавляем квадратичное сопротивление и симулируем полёт. Видим, что с трением оптимальный угол смещается ниже 45°.
- Тело как объект состояния и попадание в цель
Заворачиваем снаряд в объект состояния и решаем обратную задачу: какая скорость нужна, чтобы попасть в цель. Прямая и обратная баллистика.
- Баллистика без сопротивления: дальность и угол
4 Векторы в 2D
- Векторы на кортежах: сложение, длина, нормировка
Вектор — это просто пара чисел. Реализуем базовые операции на кортежах Python без numpy и проверяем их.
- Скалярное и псевдоскалярное произведение
Скалярное произведение измеряет угол и проекцию, а псевдоскаляр (2D-крест) — площадь и сторону поворота. Два инструмента, без которых не обойтись.
- Отражение от стены: формула зеркала
Универсальная формула отражения вектора скорости от поверхности через нормаль и скалярное произведение. Симулируем мяч в коробке.
- Векторы на кортежах: сложение, длина, нормировка
5 Силы и пружины
- Закон Гука и гармонический осциллятор
Сила пружины F=-kx и рождение колебаний. Симулируем осциллятор и сравниваем период с теоретическим T=2π√(m/k).
- Затухание: куда уходит энергия колебаний
Добавляем силу трения, пропорциональную скорости. Колебания затухают; разбираем недо-, сверх- и критическое затухание.
- Маятник: когда формула перестаёт работать
Период малых колебаний T=2π√(L/g) и проверка симуляцией. Видим, что при больших амплитудах период растёт — формула приближённая.
- Закон Гука и гармонический осциллятор
6 Столкновения и удары
- Импульс и закон сохранения
Импульс p=mv и почему он сохраняется при столкновениях. Главный закон, на котором держится вся механика ударов.
- Упругий удар: сохранение импульса и энергии
Два тела сталкиваются упруго: выводим скорости после удара и проверяем сохранение и импульса, и энергии в коде.
- Коэффициент восстановления и неупругий удар
Реальные удары теряют энергию. Коэффициент восстановления e задаёт «упругость» отскока; симулируем затухающий прыгающий мяч.
- Импульс и закон сохранения
7 Орбиты и задача N тел
- Всемирное тяготение и круговая орбита
Закон F=G·m1·m2/r² и условие круговой орбиты. Симулируем движение планеты вокруг звезды в удобных единицах.
- Эллиптические орбиты и законы Кеплера
Дай планете не круговую скорость — и орбита станет эллипсом. Симулируем, наблюдаем перигелий и афелий, проверяем второй закон Кеплера.
- Задача N тел: гравитация каждого с каждым
От двух тел к системе из многих. Суммируем притяжение всех пар и проверяем сохранение суммарного импульса как тест корректности.
- Всемирное тяготение и круговая орбита
8 Энергия и сохранение
- Кинетическая и потенциальная энергия
Энергия движения mv²/2 и энергия положения mgh. Как они перетекают друг в друга и почему их сумма постоянна.
- Сохранение энергии как тест интегратора
Сравниваем три интегратора по дрейфу энергии на длинной дистанции. Энергия — объективный судья качества численного метода.
- Капстоун: прыгающий мяч и баланс энергии
Собираем гравитацию, отскок с восстановлением и энергетический учёт в одной симуляции — финальный синтез курса.
- Кинетическая и потенциальная энергия