Численные методы

Численные методы для ОДУ

Neural ODE - архитектура, где нейросеть задаёт дифференциальное уравнение. SIR-модели COVID-19 решались с помощью RK45 каждый день в 2020 году. Физические симуляторы в играх - это ОДУ, решаемые в реальном времени.

  • **Neural ODE (torchdiffeq):** непрерывная динамика скрытого пространства; более экономное по памяти обратное распространение (adjoint method)
  • **Эпидемиологические модели:** SIR/SEIR модели COVID-19 решались с помощью scipy.integrate.solve_ivp; результаты использовались для планирования локдаунов
  • **Игровая физика:** интеграторы RK4 и Verlet для симуляции тел в Unity/Unreal Engine; адаптивный шаг для быстрых столкновений

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

  • Numerical Integration

Явный Эйлер и Рунге-Кутта 4

Задача Коши: dy/dt = f(t, y), y(t₀) = y₀. Численные методы аппроксимируют решение шагами: yₙ₊₁ = yₙ + шаг. Явный Эйлер - первый порядок. Рунге-Кутта 4 (RK4) - четвёртый порядок: использует 4 вычисления f на шаг для достижения ошибки O(h⁴).

**Явный Эйлер:** yₙ₊₁ = yₙ + h·f(tₙ, yₙ) Локальная ошибка: O(h²), глобальная: O(h) **Рунге-Кутта 4 (RK4):** k₁ = h·f(tₙ, yₙ) k₂ = h·f(tₙ + h/2, yₙ + k₁/2) k₃ = h·f(tₙ + h/2, yₙ + k₂/2) k₄ = h·f(tₙ + h, yₙ + k₃) yₙ₊₁ = yₙ + (k₁ + 2k₂ + 2k₃ + k₄)/6 Локальная ошибка: O(h⁵), глобальная: O(h⁴)

МетодПорядокf вычисл/шагПрименение
Явный ЭйлерO(h)1Обучение, не для продакшена
Эйлер-Хёйн (Heun)O(h²)2Прогноз-коррекция
RK4O(h⁴)4Стандартный выбор
RK45 (Dormand-Prince)O(h⁴)/O(h⁵)6Адаптивный шаг
RK23O(h²)/O(h³)3Менее гладкие задачи

Почему RK4 использует 4 вычисления f на шаг, а не 1 как Эйлер?

Адаптивный шаг: RK45

Фиксированный шаг h неэффективен: там, где решение быстро меняется, нужен малый h, где гладкое - можно взять большой h. Адаптивные методы (RK45, RK23) оценивают ошибку на каждом шаге и автоматически уменьшают или увеличивают h.

**Dormand-Prince RK45:** Метод использует 6 вычислений f. Строятся два приближения: - y_5: порядок 5 (высокая точность) - y_4: порядок 4 (более грубое) Оценка ошибки: err = ||y_5 − y_4|| Адаптация шага: - err < tol: шаг принят, h_new = h·(tol/err)^{1/5} - err > tol: шаг отклонён, уменьшаем h `scipy.integrate.solve_ivp(f, t_span, y0, method='RK45')`

Как RK45 оценивает ошибку и адаптирует шаг?

Приложения: Neural ODE и SIR-модель

Neural ODE (Chen et al., 2018) - нейронная сеть, где скрытое состояние эволюционирует как ОДУ: dh/dt = f_θ(h, t), где f_θ - нейросеть. Это позволяет использовать ОДУ-солверы как дифференцируемые слои. Обратное распространение через солвер - метод сопряжённых состояний.

Для Neural ODE используйте библиотеку `torchdiffeq`. Она предоставляет `odeint` с автоматическим дифференцированием через RK4/RK45, что позволяет обучать нейросеть с помощью градиентного спуска через ОДУ-солвер.

Что такое Neural ODE и чем оно отличается от обычной нейросети?

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

  • **Явный Эйлер:** O(h) глобальная ошибка; 1 вычисление f на шаг; только для обучения
  • **RK4:** O(h⁴) глобальная ошибка; 4 вычисления f; стандарт для фиксированного шага
  • **RK45 (Dormand-Prince):** адаптивный шаг; оценка ошибки через y_4 vs y_5; scipy.integrate.solve_ivp
  • **solve_ivp:** единый интерфейс для RK45/RK23/DOP853; параметры rtol, atol; dense_output для непрерывного решения

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

Методы для ОДУ масштабируются до жёстких систем и Neural ODE:

  • Жёсткие системы — Явные методы (Эйлер, RK4) расходятся для жёстких ОДУ - нужны неявные методы
  • Численное интегрирование — Каждый шаг RK4 - это квадратурная формула для интеграла ∫f(t,y) dt

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

  • Почему метод Верле (Verlet), используемый в молекулярной динамике, предпочтительнее RK4, хотя он только второго порядка?
  • Как метод сопряжённых состояний (adjoint method) в Neural ODE экономит память по сравнению со стандартным backprop?
  • Что означает dense_output=True в solve_ivp и когда это полезно?

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

  • de-01
Численные методы для ОДУ

0

1

Войти