Метод Стёрмера — Верле
Метод Стёрмера — Верле — численный метод решения задачи Коши для дифференциальных уравнений. Часто используется для нахождения траектории материальной точки, движущейся по закону x → ¨ = a → ( x → , t ) {displaystyle {ddot {vec {x}}}={vec {a}}({vec {x}},t)} : для вычисления траекторий частиц в моделях молекулярной динамики и в компьютерных играх. Метод Верле более устойчив, чем более простой метод Эйлера, и имеет при этом другие качества, необходимые для моделирования физических процессов в реальном времени.
История и названия
Был использован Исааком Ньютоном в первой книге «Начал» для доказательства второго закона Кеплера.
Назван в честь французского физика Лу Верле, который использовал метод для моделирования динамики молекул, и норвежского астрофизика Карла Стёрмера.
Метод (и эквивалентные ему) называется по-разному в зависимости от области применения:
- метод Стёрмера, метод Энке — в астрономии;
- метод Верле — в молекулярной динамике;
- метод лягушки (англ. leapfrog)— в области уравнений в частных производных.
Основной алгоритм
Алгоритм Верле используется для вычисления следующего местоположения точки по текущему и прошлому, без использования скорости. Формула получается следующим образом. Записывается разложение в ряд Тейлора вектора x → ( t ) {displaystyle {vec {x}}(t)} местоположения точки в моменты времени ( t + Δ t ) {displaystyle (t+Delta t)} и ( t − Δ t ) {displaystyle (t-Delta t)} :
x → ( t + Δ t ) = x → ( t ) + v → ( t ) Δ t + a → ( t ) Δ t 2 2 + b → ( t ) Δ t 3 6 + O ( Δ t 4 ) , {displaystyle {vec {x}}(t+Delta t)={vec {x}}(t)+{vec {v}}(t)Delta t+{frac {{vec {a}}(t)Delta t^{2}}{2}}+{frac {{vec {b}}(t)Delta t^{3}}{6}}+O(Delta t^{4}),} x → ( t − Δ t ) = x → ( t ) − v → ( t ) Δ t + a → ( t ) Δ t 2 2 − b → ( t ) Δ t 3 6 + O ( Δ t 4 ) , {displaystyle {vec {x}}(t-Delta t)={vec {x}}(t)-{vec {v}}(t)Delta t+{frac {{vec {a}}(t)Delta t^{2}}{2}}-{frac {{vec {b}}(t)Delta t^{3}}{6}}+O(Delta t^{4}),}где
x → {displaystyle {vec {x}}} — координаты точки, v → {displaystyle {vec {v}}} — скорость, a → {displaystyle {vec {a}}} — ускорение, b → {displaystyle {vec {b}}} — рывок (производная ускорения по времени).Сложив эти 2 уравнения и выразив x → ( t + Δ t ) {displaystyle {vec {x}}(t+Delta t)} , получим
x → ( t + Δ t ) = 2 x → ( t ) − x → ( t − Δ t ) + a → ( t ) Δ t 2 + O ( Δ t 4 ) . {displaystyle {vec {x}}(t+Delta t)=2{vec {x}}(t)-{vec {x}}(t-Delta t)+{vec {a}}(t)Delta t^{2}+O(Delta t^{4}).}Таким образом, значение радиус-вектора точки может быть вычислено без знания скорости.
Особенности
Основная особенность алгоритма состоит в возможности накладывать на систему точек различные ограничения. Например, можно связать некоторые из них твёрдыми стержнями заданной длины. При этом алгоритм работает следующим образом:
Данный метод, несмотря на многократное повторение шага 2, очень эффективен.
Свойства
Метод является характерным методом геометрического численного интегрирования и обладает следующими свойствами:
- принадлежит классу одношаговых общих линейных методов;
- имеет 2-й порядок точности;
- является симметричным (самосопряжённым) интегратором;
- является симплектическим интегратором;
- сохраняет фазовый объём для ряда систем;
- сохраняет линейные первые интегралы систем.
Может рассматриваться как:
- метод Нюстрёма 2-го порядка;
- композиция симплектического метода Эйлера с его сопряжённым;
- расщепляющий метод для систем вида q → ˙ = f ( p → ) , p → ˙ = g ( q → ) {displaystyle {dot {vec {q}}}=f({vec {p}}), {dot {vec {p}}}=g({vec {q}})} ;
- разделённый метод Рунге—Кутты для систем q → ˙ = f ( q → , p → ) , p → ˙ = g ( q → , p → ) {displaystyle {dot {vec {q}}}=f({vec {q}},{vec {p}}), {dot {vec {p}}}=g({vec {q}},{vec {p}})} , заданный таблицами Бутчера 0 0 0 1 1 / 2 1 / 2 1 / 2 1 / 2 1 / 2 1 / 2 0 1 / 2 1 / 2 0 1 / 2 1 / 2 {displaystyle {egin{array}{c|cc}0&0&01&1/2&1/2hline &1/2&1/2end{array}}qquad {egin{array}{c|cc}1/2&1/2&01/2&1/2&0hline &1/2&1/2end{array}}}
Применение
Популярность у разработчиков компьютерных игр метод получил в 2000 году с выходом игры Hitman: Codename 47.
Добавить комментарий!