Практично кожна фізична симуляція зводиться до інтегрування системи звичайних диференціальних рівнянь. Вибір чисельного методу визначає точність, стійкість та обчислювальну вартість — і хибний вибір для жорсткої системи може означати результати, що відрізняються на порядки величини або відверто розбігаються. Ця стаття оглядає ключові методи: від підручникового методу Ейлера через класичний RK4, до адаптивного методу Дорманда–Принса, багатокрокового методу Адамса–Башфорта та симплектичних інтеграторів, що зберігають геометрію.

1. Задача Коші (задача з початковими умовами)

Ми прагнемо розв'язати:

dy/dt = f(t, y), y(t₀) = y₀, t ∈ [t₀, T]

де y ∈ ℝⁿ та f: ℝ × ℝⁿ → ℝⁿ. Усі класичні фізичні системи (другий закон Ньютона, рівняння Лоренца, хімічна кінетика) відповідають цій формі після зведення рівнянь вищих порядків до систем першого порядку.

Чисельний інтегратор апроксимує y(t) у послідовності дискретних часових точок tₖ = t₀ + k·h (фіксований крок) або в адаптивно вибраних tₖ. Основний виклик — балансування трьох конкурентних вимог: точності (локальна похибка апроксимації на крок), стійкості (похибка не зростає необмежено) та вартості (кількість обчислень функції на крок).

2. Метод Ейлера (порядок 1)

yₙ₊₁ = yₙ + h · f(tₙ, yₙ)

Локальна похибка апроксимації (LTE): O(h²). Глобальна похибка: O(h). Найпростіший метод, який майже ніколи не використовується на практиці — він вимагає надзвичайно малого h для прийнятної точності. Явний метод Ейлера також є A-нестійким: для тестового рівняння dy/dt = λy з Re(λ) < 0 метод вимагає h < 2/|λ|, щоб уникнути зростаючих коливань, що дуже обмежувально для жорстких задач.

Симплектичний метод Ейлера — просте покращення

Для гамільтонових систем (q — координата, p — імпульс) симплектичний метод Ейлера спершу оновлює p, а потім використовує нове p для оновлення q:
pₙ₊₁ = pₙ + h·f(qₙ)
qₙ₊₁ = qₙ + h·pₙ₊₁/m
Попри лише перший порядок точності, він зберігає симплектичну структуру (площу у фазовому просторі), тож похибка енергії лишається обмеженою впродовж експоненційно довгих часів — на відміну від методів Рунге-Кутта, що повільно накопичують дрейф енергії.

3. Класичний метод Рунге–Кутта (RK4, порядок 4)

«Золотий стандарт» — робоча конячка фізичної симуляції:

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ₙ₊₁ = yₙ + h/6·(k₁ + 2k₂ + 2k₃ + k₄)

LTE: O(h⁵). Глобальна похибка: O(h⁴). Чотири обчислення функції на крок. Константа похибки дуже мала: для гармонічного осцилятора похибка на одиницю часу становить приблизно 1/180 · h⁴ · max|y⁽⁵⁾|. Для більшості нежорстких задач з гладкими розв'язками RK4 з h ≈ 0,01–0,1 є дуже точним. Область стійкості у комплексній площині h·λ — це дископодібна область, що покриває більшу частину лівої півплощини аж до |hλ| ≈ 2,8.

// RK4 мовою JavaScript
function rk4(f, t, y, h) {
  const k1 = f(t,       y);
  const k2 = f(t + h/2, y.map((v, i) => v + h/2 * k1[i]));
  const k3 = f(t + h/2, y.map((v, i) => v + h/2 * k2[i]));
  const k4 = f(t + h,   y.map((v, i) => v + h   * k3[i]));
  return y.map((v, i) => v + h/6 * (k1[i] + 2*k2[i] + 2*k3[i] + k4[i]));
}

4. Адаптивне керування кроком: Дорманд–Принс RK45

RK4 з фіксованим кроком марнує обчислення функції в гладких областях і робить надто грубі кроки у швидкозмінних. Адаптивні методи керують розміром кроку, щоб утримувати оцінену локальну похибку в межах допуску (rtol, atol).

Метод Дорманда–Принса (ode45 у Matlab, RK45 у SciPy) використовує пару вкладених формул RK зі спільними тими самими 6 стадіями (+ одне повторне використання FSAL «first same as last»): одну 5-го порядку й одну 4-го порядку. Їхня різниця оцінює локальну похибку без додаткових витрат.

err ≈ yₙ₊₁⁽⁵⁾ − yₙ₊₁⁽⁴⁾ (оцінка похибки) h_new = h · (tol / err)^{1/5} · safety_factor (safety = 0.9)

Прийом FSAL повторно використовує k₇ з кроку n як k₁ кроку n+1, знижуючи вартість з 6 до 5 обчислень на прийнятий крок. Більшість практичних симуляцій використовують rtol = 1e-6, atol = 1e-9 як значення за замовчуванням для наукової точності.

Метод Порядок Обчислень/крок Адаптивний? Найкраще застосування
Ейлер 1 1 Ні Лише для навчання
Гойн (RK2) 2 2 Ні Дуже грубі апроксимації
RK4 (класичний) 4 4 Ні Нежорсткі, відомі гладкі ОДР
Дорманд–Принс RK45 4(5) 6 (5 з FSAL) Так Універсальний за замовчуванням для нежорстких
Кеш–Карп RK45 4(5) 6 Так Гладкі нежорсткі з жорстким допуском
DOP853 8(5,3) 13 Так Високоточні нежорсткі
Верле / leapfrog 2 1 Ні Гамільтонові, N-тіл, МД
Штермер–Верле 2 1 Ні Симплектичні, збереження енергії

5. Багатокрокові методи: Адамса–Башфорта та Адамса–Мултона

Однокрокові методи (Рунге–Кутта) відкидають усі раніше обчислені значення функції після кожного кроку. Багатокрокові методи повторно використовують останні k обчислень функції, досягаючи високого порядку лише з одним чи двома новими обчисленнями на крок.

Явна p-крокова формула Адамса–Башфорта (AB-p):

yₙ₊₁ = yₙ + h · Σⱼ₌₀^{p−1} βⱼ · f(tₙ₋ⱼ, yₙ₋ⱼ)

AB-4 (4-кроковий) має порядок 4 лише з 1 новим обчисленням на крок (проти 4 для RK4). Неявний Адамса–Мултона (AM-p) досягає порядку p+1 з p кроками. Поєднання явного предиктора + неявного коректора — це схема PECE (Predict–Evaluate–Correct–Evaluate), що використовується в ode113 Matlab.

Обмеження: багатокрокові методи потребують стартової процедури (використання RK4 для перших k кроків) і не можуть легко змінювати розмір кроку (потребують перезапуску або інтерполяції).

6. Жорсткі системи та неявні методи

Система є жорсткою, коли найбільше власне число якобіана ∂f/∂y за модулем значно перевищує обернену величину часового масштабу, що нас цікавить: коефіцієнт жорсткості S = max|Re(λᵢ)| · T ≫ 1.

Приклади: хімічна кінетика зі швидкими/повільними реакціями (S може сягати 10¹⁵), RC-коло з широко рознесеними сталими часу, рівняння дифузії після просторової дискретизації (власні числа ∝ −1/h²).

A-стійкість та L-стійкість

Інтегратор є A-стійким, якщо для всіх λ з Re(λ)≤0 виконується |R(hλ)| ≤ 1 для всіх h>0 — коефіцієнт підсилення ніколи не перевищує 1. Явні методи RK не є A-стійкими (їхні області стійкості в лівій півплощині обмежені). Неявні методи можуть бути A-стійкими.

L-стійкість (сильніша): додатково R(∞)=0, тож жорсткі компоненти згасають миттєво. Неявний метод Ейлера (порядок 1), метод трапецій (порядок 2, A-стійкий, але не L-стійкий), методи SDIRK та методи Розенброка забезпечують A/L-стійке інтегрування.

Для жорстких систем неявна схема неявного методу Ейлера вимагає розв'язання нелінійної системи на кожному кроці (ітерація Ньютона), але дозволяє довільно великий h без нестійкості. Методи BDF-k (формула диференціювання назад, методи Гіра), що використовуються в ode15s MATLAB, досягають порядку до 6, залишаючись жорстко стійкими.

7. Симплектичні інтегратори для гамільтонових систем

Для консервативних механічних систем з гамільтоніаном H = T(p) + V(q) методи Рунге–Кутта вносять повільний віковий дрейф енергії навіть за високого порядку. Симплектичний інтегратор точно зберігає симплектичну 2-форму ω = Σ dqᵢ ∧ dpᵢ, що на практиці означає:

Інтегратор Верле/leapfrog є симплектичним 2-го порядку:

pₙ₊½ = pₙ − h/2 · ∇V(qₙ) qₙ₊₁ = qₙ + h · pₙ₊½ / m pₙ₊₁ = pₙ₊½ − h/2 · ∇V(qₙ₊₁)

Симплектичні методи вищих порядків (4-го порядку Йосіди, 4-го порядку Рута–Фореста) застосовують відображення Верле з хитро масштабованими підкроками. Ціна: відсутність адаптивного кроку — крок мусить лишатися фіксованим, щоб симплектичність зберігалася.

8. Інтерактив: порівняння методів на згасаючому осциляторі

Згасаючий гармонічний осцилятор ÿ + 2γẏ + ω₀²y = 0 має точний розв'язок y(t) = e^{−γt}·cos(ωd·t), де ωd = √(ω₀²−γ²). Налаштуйте h (розмір кроку) та γ (згасання), щоб побачити, як кожен метод відслідковує справжній розв'язок. Велике h показує, як метод Ейлера розбігається, тоді як RK4 лишається точним. Абсолютна похибка енергії з часом показана на нижній панелі.

Точний   Чисельний   Похибка енергії (масштабована)
Верле з γ=0 зберігає точну енергію; усі явні методи RK накопичують дрейф енергії, пропорційний h^порядку.