Як ручний чай Ви диференціальні рівняння
Ви не потребуєте математики, щоб зрозуміти розчинники 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 і Мартін Кутта опублікували кращий метод. А замість того, щоб знайти швидкість зміни один раз на крок, подивіться на нього чотири рази:
- Виміряйте схил на початку кроку → k1
- Крок півходу за допомогою к1, виміряйте схил там → к2
- Крок півходу за допомогою k2, знову виміряти → k3
- Крок до кінця за допомогою к3, вимірюйте ще раз → к4
- Комбайн: ваговий середній (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 робить його видимим.
Посилання
- Бутчер, 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