Учебник Дифференциальные уравнения для начинающих
Глубокий университетский курс о том, как компьютер решает дифференциальные уравнения, когда формулы бессильны. Вы пройдёте путь от понимания, что такое «уравнение про скорость изменения» и почему такие уравнения описывают физику, биологию, экономику и химию, до уверенного владения методами Эйлера, Рунге-Кутты и многошаговыми схемами. Разберёте системы ОДУ (хищник-жертва, осцилляторы), жёсткие уравнения и устойчивость, краевые задачи, симплектические интеграторы, введение в уравнения в частных производных (теплопроводность, волновое, Лаплас) и хаос системы Лоренца. Все решатели реализованы на чистом стандартном Python — их можно запустить прямо в браузере и увидеть траектории, ошибки и устойчивость своими глазами.
Курс «Дифференциальные уравнения: численные методы» состоит из 9 разделов и 34 уроков: Что такое дифференциальные уравнения, Метод Эйлера, Методы Рунге-Кутты, Многошаговые методы, Системы ОДУ, Жёсткость и устойчивость, Краевые задачи и сохранение инвариантов, Введение в уравнения в частных производных и Хаос и практические задачи. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Что такое дифференциальные уравнения
- Что такое дифференциальное уравнение и почему они ВЕЗДЕ
Дифференциальное уравнение как закон скорости изменения: производная — это скорость, а зная её в каждой точке, мы восстанавливаем траекторию величины.
- Виды дифференциальных уравнений
Классификация дифференциальных уравнений: ОДУ и ДУЧП, порядок, линейность, автономность, задача Коши и краевые задачи, поле направлений как геометрия ОДУ.
- Немного аналитики для интуиции
Разделяющиеся переменные, экспоненциальный рост и затухание y=y0*exp(kt), логистический рост — аналитические решения как эталон для проверки численных методов.
- Задача Коши — главный объект численных методов
Задача Коши y'=f(t,y), y(t0)=y0: теорема существования и единственности, условие Липшица на пальцах и почему численные методы шагают вперёд от известной точки.
- Что такое дифференциальное уравнение и почему они ВЕЗДЕ
2 Метод Эйлера
- Явный метод Эйлера: геометрия касательной
Явный метод Эйлера на Python: формула y_{n+1}=y_n+h*f, геометрия касательной к полю направлений, рабочая функция euler и таблица сравнения с точным решением.
- Локальная и глобальная ошибка метода Эйлера
Ошибка метода Эйлера: локальная усечения O(h^2) на шаг и глобальная O(h) — первый порядок. Python-эксперимент: деление шага вдвое уменьшает ошибку вдвое.
- Неявный (обратный) метод Эйлера и жёсткие задачи
Неявный метод Эйлера на Python: y_{n+1}=y_n+h*f(t_{n+1},y_{n+1}), устойчивость и жёсткие задачи. Сравнение явной и неявной схем на y'=-15y, итерации и метод Ньютона.
- Метод средней точки и метод Хойна: порядок 2
Методы второго порядка на Python: средней точки и Хойна (предиктор-корректор). Идея усреднить наклон, сравнение ошибки с методом Эйлера, таблица сходимости.
- Явный метод Эйлера: геометрия касательной
3 Методы Рунге-Кутты
- Идея методов Рунге-Кутты
Зачем методам Рунге-Кутты несколько наклонов внутри одного шага: от Эйлера к RK2 и RK4, порядок точности, таблица Бутчера и исполнимое сравнение на Python.
- Классический RK4: вывод коэффициентов
Откуда берутся k1, k2, k3, k4 и веса 1-2-2-1 в классическом RK4: интуитивный вывод, связь с правилом Симпсона и почему метод имеет четвёртый порядок точности.
- RK4 — рабочая лошадка: реализация
Полная реализация RK4 на стандартной библиотеке Python: функция rk4(f, t0, y0, h, n), решение y'=y и y'=t-y, таблица ошибок и сравнение порядков Эйлера и RK4.
- Адаптивный шаг: RKF45 и Дорман-Принс
Адаптивный шаг Рунге-Кутты: оценка ошибки через методы разного порядка (RKF45, Дорман-Принс), как scipy RK45 выбирает h по atol/rtol, ручной контроллер.
- Идея методов Рунге-Кутты
4 Многошаговые методы
- Идея многошаговых методов
Зачем хранить историю наклонов: одношаговые методы против многошаговых, экономия вызовов правой части, разгон и хранение наклонов в deque.
- Явные методы Адамса-Башфорта
Методы Адамса-Башфорта на Python: интегрирование интерполяционного многочлена через прошлые наклоны, формула AB2, коэффициенты AB3 и AB4, пример кода.
- Адамс-Мултон и предиктор-корректор
Неявные методы Адамса-Мултона и схема предиктор-корректор (PECE) на Python: связка AB2/AM2, сравнение точности с чистым AB2, когда многошаговые лучше RK.
- Идея многошаговых методов
5 Системы ОДУ
- Системы ОДУ и вектор состояния
Что такое система ОДУ и вектор состояния Y. Правая часть F(t,Y) как вектор производных, фазовое пространство и фазовый портрет на Python.
- RK4 для систем: обобщение
Обобщаем RK4 на системы ОДУ: k1..k4 становятся векторами. Реализация rk4_system на чистом Python и проверка на осцилляторе через сохранение энергии.
- Хищник-жертва: модель Лотки-Вольтерры
Модель Лотки-Вольтерры хищник-жертва: смысл каждого члена уравнений, циклические колебания популяций и замкнутый фазовый портрет. Численное решение на Python.
- Уравнения высших порядков как системы первого порядка
Как свести уравнение высшего порядка к системе первого порядка: маятник и затухающий осциллятор на Python. Проверка периода малых колебаний 2*pi*sqrt(L/g).
- Системы ОДУ и вектор состояния
6 Жёсткость и устойчивость
- Жёсткие (stiff) уравнения: что это
Что такое жёсткие (stiff) уравнения: разные масштабы времени, собственные числа -1 и -1000, почему явный Эйлер взрывается. Демонстрация на Python.
- Область устойчивости численных методов
Область устойчивости методов: линейный тест y'=λy, фактор усиления R(z), z=h·λ. Явный Эйлер, RK4, неявный Эйлер и A-устойчивость на Python.
- Неявные методы и BDF для жёстких задач
Неявные методы и BDF (Backward Differentiation Formulas) для жёстких задач: A-устойчивость, метод Ньютона на шаге, выбор солвера scipy BDF/Radau/LSODA.
- Жёсткие (stiff) уравнения: что это
7 Краевые задачи и сохранение инвариантов
- Краевые задачи: условия на обоих концах
Что такое краевая задача (BVP): условия на обоих концах отрезка вместо задачи Коши. Прогиб балки, теплопроводность, обзор стрельбы и конечных разностей.
- Метод стрельбы: пристреливаемся к цели
Метод стрельбы для краевых задач: угадываем начальный наклон, решаем задачу Коши через RK4 и подбираем наклон секущими. Реализация на Python.
- Конечные разности и метод прогонки
Конечно-разностный метод для краевых задач: сетка узлов, замена второй производной разностью, трёхдиагональная СЛАУ и метод прогонки (Томаса) на Python.
- Сохранение инвариантов: симплектические методы и Верле
Почему RK4 дрейфует по энергии на долгом счёте, а симплектические методы и метод Верле сохраняют структуру фазового пространства. Сравнение на Python.
- Краевые задачи: условия на обоих концах
8 Введение в уравнения в частных производных
- Что такое уравнения в частных производных
ДУЧП — уравнения для функции нескольких переменных. Частные производные, три типа: параболические, гиперболические, эллиптические, и почему они труднее ОДУ.
- Уравнение теплопроводности и метод конечных разностей
Уравнение теплопроводности du/dt = α·d^2u/dx^2: физический смысл, метод конечных разностей, явная схема и расплывание пика на Python со stdlib.
- Волновое уравнение и уравнение Лапласа
Волновое уравнение и уравнение Лапласа: бегущие волны против равновесия. Явная схема по времени и итерации Якоби — узел стремится к среднему соседей, на Python.
- Устойчивость явных схем: условие Куранта (CFL)
Условие устойчивости CFL для явных схем ДУЧП: r=α·dt/dx^2 ≤ 1/2 для теплопроводности. Демонстрация взрыва при r=0.6 и затухания при r=0.4 на Python.
- Что такое уравнения в частных производных
9 Хаос и практические задачи
- Система Лоренца и хаос
Система Лоренца, странный аттрактор-бабочка и эффект бабочки: чувствительность к начальным условиям и RK4 на чистом Python.
- Моделирование эпидемии: модель SIR
Модель эпидемии SIR на Python: восприимчивые, инфицированные, выздоровевшие, базовое репродуктивное число R0 и порог эпидемии через RK4.
- Практические кейсы: остывание, RC-цепь, химия
Прикладные ОДУ на Python: остывание кофе по закону Ньютона, зарядка RC-цепи и химическая кинетика первого порядка — численно и аналитически.
- Инструмент на практике: scipy solve_ivp
scipy.integrate.solve_ivp: параметры method, t_eval, rtol/atol, events и dense_output. Как выбрать метод для жёстких и нежёстких задач.
- Система Лоренца и хаос