Дифференциальные уравнения

Метод Эйлера и Рунге-Кутта

Метод Рунге-Кутта 4-го порядка - рабочая лошадка науки со времён 1900 года. Neural ODEs (2018) взяли ту же идею и переосмыслили нейросети как непрерывные динамические системы. Один и тот же алгоритм - столетие разницы.

  • **Neural ODEs:** torchdiffeq от Chen et al. - ResNet = дискретизованное ОДУ. Continuous-depth сети с памятью O(1) вместо O(глубина).
  • **Физика в играх:** интегратор Верле (аналог RK2) - стандарт в игровой физике. Сохраняет энергию лучше Эйлера при тех же вычислениях.
  • **scipy.integrate.solve_ivp:** RK45 по умолчанию. Для жёстких биологических/химических систем: method='Radau'. Один вызов = полное решение ОДУ.

Предварительные знания

  • Classification of PDEs

Явный метод Эйлера

Зачем приближать ОДУ? Потому что аналитические формулы существуют для пренебрежимо малой доли уравнений - примерно 5% из тех, что встречаются на практике. Уравнения Лотки-Вольтерра, Ван дер Поля, Лоренца, Navier-Stokes, нейросетевые ODE (Neural ODE 2018) - все решаются только численно. Метод Эйлера 1768 года - первый и простейший подход: следуем за касательной с шагом h, обновляем точку, повторяем.

Для ОДУ y' = f(t, y) метод Эйлера: **y_{n+1} = y_n + h·f(t_n, y_n)**. Геометрически - движение вдоль касательной. Локальная погрешность: O(h²) (разложение Тейлора). Глобальная погрешность: O(h) - первый порядок точности.

**Устойчивость:** для y' = λy метод Эйлера устойчив при |1 + hλ| ≤ 1. Для Re(λ) < 0 это ограничивает шаг: h ≤ 2/|λ|. Жёсткие системы (stiff) с большими |λ| требуют очень малых шагов - используйте неявные методы.

**Метод средней точки (RK2):** k₁ = f(t_n, y_n), k₂ = f(t_n + h/2, y_n + h/2·k₁), y_{n+1} = y_n + h·k₂. Глобальная погрешность O(h²) - вдвое лучше Эйлера при тех же вычислениях вычисления f.

Метод Эйлера для y' = -100y (жёсткое уравнение). При каком h метод устойчив?

Метод Рунге-Кутта 4-го порядка

**RK4** - стандарт среди явных методов. Четыре вычисления f на шаг, локальная погрешность O(h⁵), глобальная O(h⁴):

**Формулы RK4:** k₁ = f(tₙ, yₙ), k₂ = f(tₙ+h/2, yₙ+h/2·k₁), k₃ = f(tₙ+h/2, yₙ+h/2·k₂), k₄ = f(tₙ+h, yₙ+h·k₃). **y_{n+1} = yₙ + h/6·(k₁ + 2k₂ + 2k₃ + k₄)**.

Карл Рунге, Мартин Кутта и Вильгельм Кутта (1895-1901)

Метод Эйлера дал точность O(h) ещё в 1768 году, но был слишком неточен для астрономических расчётов. В 1895 Карл Рунге в Ганновере предложил оценивать наклон в середине шага - получилась схема второго порядка. В 1901 Вильгельм Кутта систематизировал семейство схем и вывел RK4 - 4 оценки f на шаг, точность O(h⁴). Метод оставался стандартом 60+ лет, пока в 1980 году Дормонд и Принс не построили адаптивную пару RK45 - с автоматическим выбором шага. Сегодня RK45 - дефолтный солвер в SciPy, MATLAB, Wolfram Mathematica и torchdiffeq для Neural ODE.

Каждая симуляция орбит спутников NASA, каждый шаг диффузионной модели генерации изображений - под капотом тот же RK4/RK45.

МетодВычислений fПогрешностьПрименение
Эйлер1 / шагO(h)Отладка, grading
Средняя точка (RK2)2 / шагO(h²)Verlet в физике
RK44 / шагO(h⁴)Стандарт для ОДУ
RK45 (адаптивный)6 / шагO(h⁴)-O(h⁵)scipy.solve_ivp

При уменьшении шага h в 2 раза в RK4, ошибка уменьшится примерно в сколько раз?

Адаптивный метод RK45

**RK45 (Dormand-Prince):** два решения на одном шаге - 4-го и 5-го порядка, используя 6 вычислений f (встроенная пара). Разность даёт **оценку ошибки** без дополнительных вычислений. Если ошибка > tol → уменьшить h; если ошибка << tol → увеличить h.

**scipy.integrate.solve_ivp:** по умолчанию RK45. Для жёстких систем: method='Radau' или 'BDF'. Параметры: rtol (относительная допустимая ошибка), atol (абсолютная). Правило: rtol=1e-3 - грубо, rtol=1e-8 - точно.

Зачем RK45 использует два метода (4-го и 5-го порядка) на одном шаге?

Neural ODEs и физическое применение

**Neural ODE (Chen et al. 2018):** вместо дискретных слоёв нейросети - непрерывная динамика dh/dt = f_θ(h, t). Прямой проход = численное решение ОДУ (RK4). Обратный проход = сопряжённый метод (adjoint method). Память O(1) вместо O(глубина).

В Neural ODE прямой проход - это решение ОДУ. Как вычисляются градиенты для обратного распространения?

Ключевые идеи

  • **Эйлер:** y_{n+1} = y_n + h·f. Погрешность O(h). Прост, но нужны малые шаги.
  • **RK4:** 4 вычисления f, погрешность O(h⁴). Стандарт для ОДУ общего вида.
  • **Адаптивный RK45:** оценка ошибки из разности двух методов → автоматический выбор h.
  • **Neural ODE:** dh/dt = f_θ(h,t). Прямой проход = RK4. Градиент = adjoint method.

Связанные темы

Численные методы для ОДУ - фундамент для PDE и ML:

  • Метод конечных разностей — FD для PDE = RK/Эйлер по времени + конечные разности по пространству
  • ОДУ в ML и физике — Neural ODEs и диффузионные модели используют RK4/RK45 напрямую

Вопросы для размышления

  • Метод Эйлера неустойчив для жёстких систем, хотя и сходится. Почему «правильный» ответ всё равно взрывается при больших h?
  • Integrator Верле используется в молекулярной динамике вместо RK4, хотя имеет второй порядок. В чём его преимущество?
  • Neural ODE заменяет глубину сети на «время интегрирования». Что значит интерпретировать глубину нейросети как непрерывный параметр?

Связанные уроки

  • nm-11
Метод Эйлера и Рунге-Кутта

0

1

Войти