· 4 min read

Як ручний чай Ви диференціальні рівняння

Ви не потребуєте математики, щоб зрозуміти розчинники ODE. Вам потрібно ручка, екран і 20 хвилин. Ось як Euler, RK4 і адаптивні методи насправді працюють — з реальним кодом.

Почати з чого можна

Вішайте вагу з рядка. Витягніть його на одну сторону. Дякуемо! Він гойдалки.

Ви просто створили систему, що регулюється диференціальним рівнянням:

до ₽ dω/dt = -(g/L) · гріх (¢)

  • кут. ○ - кутова швидкість. г тяжіння (9.81 м/с2). L - довжина рядка. Ці два лінії говорять: кутові зміни зі швидкістю, що дорівнює швидкості, і зміни швидкості за швидкістю, яка залежить від ваги, довжини і поточного кута.

Проблема: ми не можемо вирішити це рівняння точно. sin(θ) робить його нелінійним. У будь-який час немає формули, що дає вам γ. Отже, ми приблизні — ми крок вперед в невеликих підривах, обчислюємо наступний стан від поточного.

Що таке розчинник ODE. І є краще і гірше способів зробити це.

Метод Евлера: Обвісний, але неправдивий

Проста ідея: якщо я знаю стан зараз, і я знаю швидкість зміни, я можу оцінити стан невеликий час крок пізніше.

next_angle = current_angle + velocity × dt
next_velocity = current_velocity + acceleration × dt

Це метод Евлера. Так ви можете побачити один крок вперед, тому ви приймаєте цей крок, потім знову подивіться. У коді:

function euler(f, t, y, dt) {
  const dy = f(t, y);
  return [
    y[0] + dt * dy[0],
    y[1] + dt * dy[1]
  ];
}

Проблема: Метод Евлера є обов'язковою. Це означає, що якщо ви занурили розмір кроку, ви занурте помилку. Для педулу, ця помилка накопичується — імітований педулу повільно набирає енергію і гойдалки ширше і ширше. Після декількох хвилин він обертається в повному колі. Реальний ручник ніколи не робить це.

RK4: Робота

У 1901 році Карл Runge і Мартін Кутта опублікували кращий метод. А замість того, щоб знайти швидкість зміни один раз на крок, подивіться на нього чотири рази:

  1. Виміряйте схил на початку кроку → k1
  2. Крок півходу за допомогою к1, виміряйте схил там → к2
  3. Крок півходу за допомогою k2, знову виміряти → k3
  4. Крок до кінця за допомогою к3, вимірюйте ще раз → к4
  5. Комбайн: ваговий середній (k1 + 2k2 + 2k3 + k4) / 6

Це четвертий порядок точне. Захопити розмір кроку і похибку опускається фактором 16. Приручники консервують енергію правильно для тисяч гойдалок.

function rk4(f, t, y, dt) {
  const k1 = f(t, y);
  const k2 = f(t + dt/2, [y[0] + dt/2 * k1[0], y[1] + dt/2 * k1[1]]);
  const k3 = f(t + dt/2, [y[0] + dt/2 * k2[0], y[1] + dt/2 * k2[1]]);
  const k4 = f(t + dt,   [y[0] + dt   * k3[0], y[1] + dt   * k3[1]]);
  return [
    y[0] + (dt/6) * (k1[0] + 2*k2[0] + 2*k3[0] + k4[0]),
    y[1] + (dt/6) * (k1[1] + 2*k2[1] + 2*k3[1] + k4[1])
  ];
}

Цей метод PinePaper використовує для ручок, пружинних і деревих і деревих полосощів. Цей метод використовується в аерокосмічних траєкторіях. 22 лінії коду.

Чому це фізики аутсайдів

Приручник є навчальним прикладом. Але така ж техніка — крок вперед, вимірювати, виправити — застосовує будь-яку точку, яка має швидкість зміни:

  • Популяційний ріст: dx/dt = r·x·(1 - x/K). Логістичне зростання вантажопідйомністю. Самий розчинник.
  • Хімічні реакції*: зміни концентрацій при пропорції коефіцієнтів до поточних концентрацій. Самий розчинник.
  • Neural network: градієнтний спуск є дискретованим ODE. Кожен крок навчання є кроком Euler вздовж поверхні втрати.
  • Економіка*: сполуки, що містяться в постійному режимі за допомогою dy/dt = r·y. Експедиційне зростання – найпростіший ОДЕ.
  • Імація часу: Зняття кривих є рішеннями для весняно-дугових ОД. У CSS є фізичні імітації.

Не змінюється математика. Домен. Це те, що мова – однакова граматика описує кількість овець, слухняні гойдалки та тренування нейромереж.

Спробувати себе

Відкрийте PinePaper і виберіть динамічний генератор системи. Виберіть "Pendulum." Боб гойдалки. Тепер змініть параметри:

  • Збільшення ваги → швидше гойдалки (короткий період)
  • Збільшення довжини стрижня → повільний гойдалки (довгий період)
  • Почати більше кута → дивитися, як збільшується період (нелінійна дія, що підручник пропущений невеликий куточок)

Кожна зміна виконайте вимірювання. Ви змінили параметр і спостерігали результат. Розчинник РК4 перевів 30 кадрів на другий, а ручний продемонстрував, що прогнозує рівняння.

Це вся точка. Математика вимірюється. PinePaper робить його видимим.

Interactive demo — open in editor pp:PinePaper

Посилання

  • Бутчер, JC (2016). * Неймовірні методи для індивідуальних диференціальних значень* (3rd ed.). Вілі.
  • Дорманд, J.R. & Prince, P.J. (1980). Сім'я вбудованих формули Runge-Kutta. Журнал обчислювальної та прикладної математики, 6(1), 19-26.
  • Евлер, Л. (1768). * Інституційно-калькуляційний комплекс*, т. 1. Імдата академіяе Імперіаліс наукарум.
  • Перфоратори, Е., Нерсетт, С.П., & Ваннер, Г. (1993). Підвищення індивідуальних диференціацій I: Нестафф Проблеми (2-е.). Весна.
  • Кутта, В. (1901). Beitrag zur näherungsweisen інтеграція totaler диференціалgleichungen. Зейтшрифф für Mathematik und Physik, 46, 435-453.
  • Ньютон, І. (1687). Philosophiæ Naturalis Principia Mathematica. Лондон: Джозеф Стретер.
  • Руж, С. (1895). Über die numerische Auflösung фон Диференціалгліхен. Mathematische Annalen, 46(2), 167-178.
  • Стогатц, С.Г. (2015). Нелінійна динаміка та хаос (2-й ред.). Преса про захід.

PinePaper's ODE-розчинник охоплює Euler, RK4 і адаптивний Dormand-Prince RK45 в близько 200 ліній. Спробуйте ручну імітацію безкоштовно на папір.studio/editor.

Ready to create?

Start making animated GIFs, videos, and graphics — free, no signup.

Open PinePaper Editor