Кто-то может объяснить мне, почему интеграция Verlet лучше, чем Euler интеграция? И почему RK4 лучше, чем Verlet? Я не понимаю, почему это - лучший метод.
Метод Эйлера - это схема интегрирования первого порядка, т.е. общая ошибка пропорциональна размеру шага. Однако он может быть численно неустойчивым, другими словами, накопленная ошибка может перегрузить вычисления, выдавая бессмыслицу. Обратите внимание, что эта неустойчивость может возникнуть независимо от того, насколько мал размер шага, линейна ли система или нет. Я не знаком с интегрированием Верле, поэтому не могу говорить о его эффективности. Но методы Рунге-Кутты отличаются от метода Эйлера не только размером шага.
По сути, они основаны на лучшем способе численной аппроксимации производной. Точные детали на данный момент от меня ускользают. В целом, метод Рунге-Кутты четвертого порядка считается рабочей лошадкой схем интегрирования, но у него есть некоторые недостатки. Он немного диссипативен, т.е. в расчет добавляется небольшой член, зависящий от первой производной, который напоминает дополнительное трение. Кроме того, он имеет фиксированный размер шага, что может затруднить достижение желаемой точности. В качестве альтернативы можно использовать схему с адаптивным размером шага, например, метод Рунге-Кутты-Фелберга, который обеспечивает точность пятого порядка за дополнительные 6 оценок функции. Это может значительно сократить время, необходимое для выполнения расчета, при одновременном повышении точности, как показано здесь.
Метод Верле хорошо подходит для моделирования систем с сохранением энергии, и причина в том, что он симплектический. Чтобы понять это утверждение, вы должны описать временной шаг в моделировании как функцию f, которая отображает пространство состояний в себя. Другими словами, каждый временной шаг может быть записан в следующей форме.
(x(t+dt), v(t+dt)) = f(x(t),v(t))
Функция шага по времени, f, метода Верле обладает особым свойством - она сохраняет объем пространства состояний. Мы можем записать это в математических терминах. Если у вас есть набор A состояний в пространстве состояний, то вы можете определить f(A) следующим образом
f(A) = {f(x)| для x в A}
Теперь предположим, что множества A и f(A) гладкие и хорошие, так что мы можем определить их объем. Тогда симплектическая карта f всегда будет удовлетворять условию, что объем f(A) равен объему A. (и это будет выполняться для всех хороших и гладких вариантов A). Этому удовлетворяет функция шага по времени метода Верле, и поэтому метод Верле является симплектическим методом.
Теперь последний вопрос. Почему симплектический метод хорош для моделирования систем с сохранением энергии, но я боюсь, что вам придется прочитать книгу, чтобы понять это.
Если все просто движется линейно, не имеет значения, какой метод вы используете, но когда происходит что-то интересное (т.е. нелинейное), вам нужно смотреть более внимательно, либо рассматривая нелинейность напрямую (verlet), либо делая меньшие временные шаги (rk4).