science

Учебник Дифференциальные уравнения для начинающих

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

Глубокий университетский курс о том, как компьютер решает дифференциальные уравнения, когда формулы бессильны. Вы пройдёте путь от понимания, что такое «уравнение про скорость изменения» и почему такие уравнения описывают физику, биологию, экономику и химию, до уверенного владения методами Эйлера, Рунге-Кутты и многошаговыми схемами. Разберёте системы ОДУ (хищник-жертва, осцилляторы), жёсткие уравнения и устойчивость, краевые задачи, симплектические интеграторы, введение в уравнения в частных производных (теплопроводность, волновое, Лаплас) и хаос системы Лоренца. Все решатели реализованы на чистом стандартном Python — их можно запустить прямо в браузере и увидеть траектории, ошибки и устойчивость своими глазами.

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

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

  1. 1 Что такое дифференциальные уравнения

    1. Что такое дифференциальное уравнение и почему они ВЕЗДЕ

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

    2. Виды дифференциальных уравнений

      Классификация дифференциальных уравнений: ОДУ и ДУЧП, порядок, линейность, автономность, задача Коши и краевые задачи, поле направлений как геометрия ОДУ.

    3. Немного аналитики для интуиции

      Разделяющиеся переменные, экспоненциальный рост и затухание y=y0*exp(kt), логистический рост — аналитические решения как эталон для проверки численных методов.

    4. Задача Коши — главный объект численных методов

      Задача Коши y'=f(t,y), y(t0)=y0: теорема существования и единственности, условие Липшица на пальцах и почему численные методы шагают вперёд от известной точки.

  2. 2 Метод Эйлера

    1. Явный метод Эйлера: геометрия касательной

      Явный метод Эйлера на Python: формула y_{n+1}=y_n+h*f, геометрия касательной к полю направлений, рабочая функция euler и таблица сравнения с точным решением.

    2. Локальная и глобальная ошибка метода Эйлера

      Ошибка метода Эйлера: локальная усечения O(h^2) на шаг и глобальная O(h) — первый порядок. Python-эксперимент: деление шага вдвое уменьшает ошибку вдвое.

    3. Неявный (обратный) метод Эйлера и жёсткие задачи

      Неявный метод Эйлера на Python: y_{n+1}=y_n+h*f(t_{n+1},y_{n+1}), устойчивость и жёсткие задачи. Сравнение явной и неявной схем на y'=-15y, итерации и метод Ньютона.

    4. Метод средней точки и метод Хойна: порядок 2

      Методы второго порядка на Python: средней точки и Хойна (предиктор-корректор). Идея усреднить наклон, сравнение ошибки с методом Эйлера, таблица сходимости.

  3. 3 Методы Рунге-Кутты

    1. Идея методов Рунге-Кутты

      Зачем методам Рунге-Кутты несколько наклонов внутри одного шага: от Эйлера к RK2 и RK4, порядок точности, таблица Бутчера и исполнимое сравнение на Python.

    2. Классический RK4: вывод коэффициентов

      Откуда берутся k1, k2, k3, k4 и веса 1-2-2-1 в классическом RK4: интуитивный вывод, связь с правилом Симпсона и почему метод имеет четвёртый порядок точности.

    3. RK4 — рабочая лошадка: реализация

      Полная реализация RK4 на стандартной библиотеке Python: функция rk4(f, t0, y0, h, n), решение y'=y и y'=t-y, таблица ошибок и сравнение порядков Эйлера и RK4.

    4. Адаптивный шаг: RKF45 и Дорман-Принс

      Адаптивный шаг Рунге-Кутты: оценка ошибки через методы разного порядка (RKF45, Дорман-Принс), как scipy RK45 выбирает h по atol/rtol, ручной контроллер.

  4. 4 Многошаговые методы

    1. Идея многошаговых методов

      Зачем хранить историю наклонов: одношаговые методы против многошаговых, экономия вызовов правой части, разгон и хранение наклонов в deque.

    2. Явные методы Адамса-Башфорта

      Методы Адамса-Башфорта на Python: интегрирование интерполяционного многочлена через прошлые наклоны, формула AB2, коэффициенты AB3 и AB4, пример кода.

    3. Адамс-Мултон и предиктор-корректор

      Неявные методы Адамса-Мултона и схема предиктор-корректор (PECE) на Python: связка AB2/AM2, сравнение точности с чистым AB2, когда многошаговые лучше RK.

  5. 5 Системы ОДУ

    1. Системы ОДУ и вектор состояния

      Что такое система ОДУ и вектор состояния Y. Правая часть F(t,Y) как вектор производных, фазовое пространство и фазовый портрет на Python.

    2. RK4 для систем: обобщение

      Обобщаем RK4 на системы ОДУ: k1..k4 становятся векторами. Реализация rk4_system на чистом Python и проверка на осцилляторе через сохранение энергии.

    3. Хищник-жертва: модель Лотки-Вольтерры

      Модель Лотки-Вольтерры хищник-жертва: смысл каждого члена уравнений, циклические колебания популяций и замкнутый фазовый портрет. Численное решение на Python.

    4. Уравнения высших порядков как системы первого порядка

      Как свести уравнение высшего порядка к системе первого порядка: маятник и затухающий осциллятор на Python. Проверка периода малых колебаний 2*pi*sqrt(L/g).

  6. 6 Жёсткость и устойчивость

    1. Жёсткие (stiff) уравнения: что это

      Что такое жёсткие (stiff) уравнения: разные масштабы времени, собственные числа -1 и -1000, почему явный Эйлер взрывается. Демонстрация на Python.

    2. Область устойчивости численных методов

      Область устойчивости методов: линейный тест y'=λy, фактор усиления R(z), z=h·λ. Явный Эйлер, RK4, неявный Эйлер и A-устойчивость на Python.

    3. Неявные методы и BDF для жёстких задач

      Неявные методы и BDF (Backward Differentiation Formulas) для жёстких задач: A-устойчивость, метод Ньютона на шаге, выбор солвера scipy BDF/Radau/LSODA.

  7. 7 Краевые задачи и сохранение инвариантов

    1. Краевые задачи: условия на обоих концах

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

    2. Метод стрельбы: пристреливаемся к цели

      Метод стрельбы для краевых задач: угадываем начальный наклон, решаем задачу Коши через RK4 и подбираем наклон секущими. Реализация на Python.

    3. Конечные разности и метод прогонки

      Конечно-разностный метод для краевых задач: сетка узлов, замена второй производной разностью, трёхдиагональная СЛАУ и метод прогонки (Томаса) на Python.

    4. Сохранение инвариантов: симплектические методы и Верле

      Почему RK4 дрейфует по энергии на долгом счёте, а симплектические методы и метод Верле сохраняют структуру фазового пространства. Сравнение на Python.

  8. 8 Введение в уравнения в частных производных

    1. Что такое уравнения в частных производных

      ДУЧП — уравнения для функции нескольких переменных. Частные производные, три типа: параболические, гиперболические, эллиптические, и почему они труднее ОДУ.

    2. Уравнение теплопроводности и метод конечных разностей

      Уравнение теплопроводности du/dt = α·d^2u/dx^2: физический смысл, метод конечных разностей, явная схема и расплывание пика на Python со stdlib.

    3. Волновое уравнение и уравнение Лапласа

      Волновое уравнение и уравнение Лапласа: бегущие волны против равновесия. Явная схема по времени и итерации Якоби — узел стремится к среднему соседей, на Python.

    4. Устойчивость явных схем: условие Куранта (CFL)

      Условие устойчивости CFL для явных схем ДУЧП: r=α·dt/dx^2 ≤ 1/2 для теплопроводности. Демонстрация взрыва при r=0.6 и затухания при r=0.4 на Python.

  9. 9 Хаос и практические задачи

    1. Система Лоренца и хаос

      Система Лоренца, странный аттрактор-бабочка и эффект бабочки: чувствительность к начальным условиям и RK4 на чистом Python.

    2. Моделирование эпидемии: модель SIR

      Модель эпидемии SIR на Python: восприимчивые, инфицированные, выздоровевшие, базовое репродуктивное число R0 и порог эпидемии через RK4.

    3. Практические кейсы: остывание, RC-цепь, химия

      Прикладные ОДУ на Python: остывание кофе по закону Ньютона, зарядка RC-цепи и химическая кинетика первого порядка — численно и аналитически.

    4. Инструмент на практике: scipy solve_ivp

      scipy.integrate.solve_ivp: параметры method, t_eval, rtol/atol, events и dense_output. Как выбрать метод для жёстких и нежёстких задач.

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