Плюсы и минусы обоих методов:
RK4 Плюсы:
- точность (благодаря своему лучшему ряду аппроксимации он дает точность 4-го порядка)
- искусственное / по сути индуцированное демпфирование (немного похоже на неявные методы это делает) добавляет стабильности (тогда как простой шаг Эйлера не делает - он делает противоположное на самом деле, вводя энергию-призрак, которая накапливается и может погрузить систему в хаос)
RK4 Минусы:
- затраты на вычисления: хотя RK4 и не так требователен по сравнению с неявными или гибридными методами IMEX, RK4 в 4 раза дороже, чем явный Euler, поскольку требует гораздо большего количества оценок функций. Это видно при стремлении к переднему краю оптимизации.
- все еще нестабильно: в зависимости от типов задействованных сил, RK4 может быть таким же нестабильным, как и Эйлер. В среднем, RK4 немного более стабилен и имеет тенденцию извлекать выгоду из своих способностей демпфирования.
- Не симплектическое: численное демпфирование сопряжено с издержками - вы не можете моделировать системы, где энергия / объем / и т. Д. потеря не должна применять видимый эффект с течением времени (например, молекулярная динамика, производные силы потенциального поля, вариационные проблемы)
Verlet Pros:
- один или два раза сложность шага Эйлера (в зависимости от вашего вкуса Верле: положение или скорость).
- симплектический: сохраняет внутреннюю энергию
- Точность второго порядка: многие игры не требуют высокой точности результатов с плавающей запятой, а второй порядок более чем радует глаз в игровом сценарии (плюс: он использовался в симуляции неигрового сценария, когда он был «обнаружен», поэтому это не так уж плохо)
Verlet Минусы:
- стабильный, но все же: вероятно, лучший явный метод с точки зрения стабильности. Он имеет тенденцию выигрывать, когда в систему добавляются жесткие ограничения, что позволяет уменьшить головную боль при реализации прогнозируемых ограничений в динамических движках, основанных на положении. Он уходит в бесконечность, если система возмущена большими внешними силами, и демпфирование / трение не добавляются. Несмотря на это, существуют определенные численно установленные пределы того, насколько большими могут быть внутренние (пружинные) силы, но они в среднем выше, чем то, что может сделать RK4.
- низкая точность: бесполезно, если вам нужны высокие оценки точности
- требует в среднем меньших временных шагов, чем RK4 для некоторых симуляций (RK4 выигрывает как от своей точности, так и от внутреннего демпфирования)
Использование одного над другим зависит от сценария. Если жесткость и большие внешние силы и виртуальные энергии являются проблемой, то рассмотрите другие методы, имеющие «неявное» слово в их описании / названии.
Обратите внимание, что некоторые авторы / книги используют термин «полуявный Эйлер» для фактического явного интегратора Эйлера, называемого симплектическим методом Эйлера (или Эйлера Кромера), из которого фактически получен Верлет. Некоторые люди также называют Verlet «методом перепрыгивания». Скорость Verlet и метод средней точки довольно похожи, так как оценка на шаге по времениt + 0.5*dt
требуется для шага, подобного предиктору-корректору. Методы IMEX (неявный-явный) также используются для именования двух похожих, но не идентичных подходов: разделить вычисления на жесткие и не жесткие части и использовать для них разные интеграторы (явный для не жестких, неявный для жестких) ИЛИ решить для скорость с неявным шагом обновления и явным образом обновляет позицию (это гибридный полуявный метод, относящийся к классу методов IMEX, потому что жесткие части больше всего влияют на вычисление ускорения). Неявные методы более громоздки и требуют решения системы одновременных нелинейных уравнений для всей конфигурации. Неявные методы используются для деформируемых тел и обычно не используются для отделенных твердых тел.
Как указано в одном из комментариев, если вы можете, не используйте Euler. Используйте либо метод средней точки, полу-неявный Эйлер или, за тот же счет, позицию-Verlet. Все они имеют чуть более высокую точность и заметно большую стабильность, чем явный интегратор Эйлера.
Рекомендуемое чтение мини-сравнения:
http://wiki.vdrift.net/Numerical_Integration