Введение
Численный алгоритм интегрирования
Интегрирование Верле (Verlet integration, vɛʁˈlɛ) — это численный метод, используемый для интегрирования уравнений движения Ньютона. Интегратор Верле обеспечивает хорошую численную устойчивость, а также другие важные для физических систем свойства, такие как обратимость по времени и сохранение симплектической формы на фазовом пространстве, без существенных дополнительных вычислительных затрат по сравнению с простым методом Эйлера.
Verlet integration (vɛʁˈlɛ) is a numerical method used to integrate Newton's equations of motion. The Verlet integrator provides good numerical stability, as well as other properties that are important in physical systems such as time reversibility and preservation of the symplectic form on phase space, at no significant additional computational cost over the simple Euler method.
Начинаю итерацию
Обратите внимание, что в начале итерации Верле на шаге, в момент времени, при вычислении, уже требуется вектор положения в момент времени. На первый взгляд, это может вызвать проблемы, поскольку начальные условия известны только в начальный момент времени. Однако, из них известно ускорение, и подходящее приближение для положения на первом шаге можно получить, используя полином Тейлора второй степени:
Ошибка на первом шаге тогда имеет порядок. Это не считается проблемой, поскольку при моделировании на большом количестве временных шагов ошибка на первом шаге составляет лишь пренебрежимо малую часть общей ошибки, которая в момент времени имеет порядок, как для расстояния между векторами положения и, так и для расстояния между разделенными разностями. Более того, для получения этой глобальной ошибки второго порядка, начальная ошибка должна быть не менее третьего порядка.
Реакции столкновения
Один из способов реагирования на столкновения — использовать систему штрафных санкций, которая, по сути, применяет заданную силу к точке при контакте. Проблема заключается в том, что очень сложно подобрать величину этой силы. Слишком большая сила приведет к нестабильности объектов, слишком маленькая — к их взаимному проникновению. Другой подход — использовать реакции столкновений на основе проекций, который определяет точку, вызвавшую столкновение, и пытается переместить её на минимально возможное расстояние, чтобы вывести её из другого объекта. Интегрирование Верле автоматически учтет скорость, возникающую при столкновении в последнем случае; однако следует отметить, что это не гарантирует соответствия физике столкновений (то есть изменения импульса не обязательно будут реалистичными). Вместо неявного изменения скорости необходимо явно контролировать конечные скорости сталкивающихся объектов (путем изменения зафиксированной позиции с предыдущего шага по времени). Два простейших метода определения новой скорости — абсолютно упругие и неупругие столкновения. Чуть более сложная стратегия, обеспечивающая больший контроль, заключается в использовании коэффициента восстановления.