Jump to content

Интеграция Верлет

Интеграция Верлета ( Французское произношение: [vɛʁˈlɛ] ) — численный метод, используемый для интегрирования Ньютона уравнений движения . [1] Он часто используется для расчета траекторий частиц в молекулярно-динамическом моделировании и компьютерной графике . Алгоритм был впервые использован в 1791 году Жаном Батистом Деламбром и с тех пор много раз открывался заново, последний раз Лу Верле в 1960-х годах для использования в молекулярной динамике. Он также использовался П. Х. Коуэллом и А.К.К. Кроммелином в 1909 году для расчета орбиты кометы Галлея и Карлом Стормером в 1907 году для изучения траекторий электрических частиц в магнитном поле (поэтому его также называют методом Штёрмера ). [2] Интегратор Верле обеспечивает хорошую численную стабильность , а также другие свойства, которые важны в физических системах, такие как обратимость во времени и сохранение симплектической формы в фазовом пространстве , без значительных дополнительных вычислительных затрат по сравнению с простым методом Эйлера .

Базовый Штёрмер-Верлет [ править ]

Для дифференциального уравнения второго порядка типа с начальными условиями и , приближенное численное решение в то время с размером шага можно получить следующим методом:

  1. набор ,
  2. для n = 1, 2,... итерация

Уравнения движения [ править ]

Уравнение движения Ньютона для консервативных физических систем имеет вид

или индивидуально

где

  • это время,
  • представляет собой ансамбль вектора положения объекты,
  • скалярная потенциальная функция,
  • – отрицательный градиент потенциала , дающий ансамбль сил, действующих на частицы,
  • массовая матрица , обычно диагональная с блоками с массой для каждой частицы.

Это уравнение для различных вариантов выбора потенциальной функции , можно использовать для описания эволюции разнообразных физических систем, от движения взаимодействующих молекул до орбит планет .

После преобразования, переводящего массу в правую часть и забывающего о структуре нескольких частиц, уравнение можно упростить до

с некоторой подходящей векторной функцией представляющее ускорение, зависящее от положения. Обычно исходное положение и начальная скорость также даны.

Интеграция Верлета (без скоростей) [ править ]

Чтобы дискретизировать и численно решить эту задачу начального значения , шаг по времени выбирается, и последовательность точек отбора проб обдуманный. Задача — построить последовательность точек которые точно соответствуют пунктам на траектории точного решения.

Там, где метод Эйлера использует аппроксимацию прямой разности первой производной в дифференциальных уравнениях первого порядка, интеграцию Верле можно рассматривать как использование аппроксимации центральной разности второй производной:

Интегрирование Верле в форме, используемой в качестве метода Штёрмера. [3] использует это уравнение для получения следующего вектора положения из двух предыдущих без использования скорости как

Ошибка дискретизации [ править ]

Симметрия времени, присущая методу, снижает уровень локальных ошибок, вносимых в интегрирование за счет дискретизации за счет удаления всех членов нечетной степени, в данном случае членов в третьей степени. Локальная ошибка определяется количественно путем вставки точных значений. в итерацию и вычисление разложений Тейлора за раз вектора положения в разных временных направлениях:

где это позиция, скорость, ускорение и рывок . (третья производная положения по времени)

Сложение этих двух расширений дает

Мы видим, что члены первого и третьего порядка из разложения Тейлора сокращаются, что делает интегратор Верле на порядок более точным, чем интегрирование только с помощью простого расширения Тейлора.

Следует учитывать тот факт, что ускорение здесь вычисляется на основе точного решения: , тогда как на итерации он вычисляется в центральной точке итерации, . При вычислении глобальной ошибки, то есть расстояния между точным решением и последовательностью аппроксимации, эти два члена не сокращаются точно, что влияет на порядок глобальной ошибки.

Простой пример [ править ]

Чтобы понять взаимосвязь локальных и глобальных ошибок, полезно рассмотреть простые примеры, в которых точное, как и приближенное, решение может быть выражено в явных формулах. Стандартным примером для этой задачи является экспоненциальная функция .

Рассмотрим линейное дифференциальное уравнение с постоянной . Его точные базисные решения: и .

Метод Штёрмера, примененный к этому дифференциальному уравнению, приводит к линейному рекуррентному соотношению

или

Ее можно решить, найдя корни ее характеристического многочлена. . Это

Базисные решения линейной рекуррентности: и . Чтобы сравнить их с точными решениями, вычисляются разложения Тейлора:

Частное этого ряда с показателем экспоненты начинается с , так

Отсюда следует, что для первого базисного решения ошибку можно вычислить как

То есть, хотя локальная ошибка дискретизации имеет порядок 4, из-за второго порядка дифференциального уравнения глобальная ошибка имеет порядок 2 с константой, которая растет экспоненциально во времени.

Начинаем итерацию [ править ]

Обратите внимание, что в начале итерации Verlet на шаге , время , вычисления , уже нужен вектор положения во время . На первый взгляд, это может вызвать проблемы, поскольку начальные условия известны только в начальный момент времени. . Однако от этого ускорение известно, и подходящую аппроксимацию положения на первом временном шаге можно получить с помощью полинома Тейлора второй степени:

Тогда ошибка на первом временном шаге имеет порядок. . Это не считается проблемой, поскольку при моделировании с большим количеством временных шагов ошибка на первом временном шаге составляет лишь пренебрежимо малую часть общей ошибки, которая во времени имеет порядок , как для расстояния векторов положения к что касается расстояния разделенных разностей к . Более того, чтобы получить эту глобальную ошибку второго порядка, первоначальная ошибка должна быть как минимум третьего порядка.

Непостоянные разницы во времени [ править ]

Недостатком метода Штёрмера–Верле является то, что если шаг по времени ( ) изменяется, метод не аппроксимирует решение дифференциального уравнения. Это можно исправить по формуле [4]

Более точный вывод использует ряд Тейлора (до второго порядка) при на раз и получить после устранения

так что итерационная формула принимает вид

метод Штёрмера – Верле скоростей - Вычисление

Скорости не указаны явно в основном уравнении Штёрмера, но часто они необходимы для расчета определенных физических величин, таких как кинетическая энергия. Это может создать технические проблемы при моделировании молекулярной динамики , поскольку кинетическая энергия и мгновенные температуры во времени не может быть рассчитано для системы, пока позиции не известны во времени . Этот недостаток можно устранить либо с помощью алгоритма Верле скорости , либо путем оценки скорости с использованием условий положения и теоремы о среднем значении :

Обратите внимание, что этот член скорости на шаг отстает от члена положения, поскольку он относится к скорости во времени. , нет , это означает, что является приближением второго порядка . Используя тот же аргумент, но сократив вдвое шаг по времени, является приближением второго порядка , с .

Можно сократить интервал, чтобы аппроксимировать скорость во времени ценой точности:

Скорость Верле [ править ]

Родственным и более часто используемым алгоритмом является алгоритм Верле скорости. [5] аналогичен методу чехарды , за исключением того, что скорость и положение вычисляются при одном и том же значении переменной времени (чехарда этого не делает, как следует из названия). Здесь используется аналогичный подход, но явно учитывается скорость, решая проблему первого временного шага в базовом алгоритме Верле:

Можно показать, что ошибка в скорости Верле того же порядка, что и в базовом Верле. Обратите внимание, что алгоритм скорости не обязательно требует больше памяти, поскольку в базовом Верле мы отслеживаем два вектора положения, а в Верле скорости мы отслеживаем один вектор положения и один вектор скорости. Стандартная схема реализации этого алгоритма:

  1. Рассчитать .
  2. Рассчитать .
  3. Вывести из потенциала взаимодействия, используя .
  4. Рассчитать .

Этот алгоритм также работает с переменными шагами по времени и идентичен форме интеграции метода чехарды «удар-дрейф-удар» .

Устранив полушаговую скорость, этот алгоритм можно сократить до

  1. Рассчитать .
  2. Вывести из потенциала взаимодействия, используя .
  3. Рассчитать .

Однако обратите внимание, что этот алгоритм предполагает, что ускорение зависит только от позиции и не зависит от скорости .

Можно отметить, что долгосрочные результаты скорости Верле и, аналогично, чехарды на порядок лучше, чем полунеявный метод Эйлера . Алгоритмы практически идентичны с точностью до смещения скорости на полшага по времени. Это можно доказать, повернув приведенный выше контур, чтобы начать с шага 3, а затем заметив, что член ускорения на шаге 1 можно исключить, объединив шаги 2 и 4. Единственная разница состоит в том, что скорость в средней точке скорости Верле считается конечной скоростью. в полунеявном методе Эйлера.

Глобальная ошибка всех методов Эйлера имеет первый порядок, тогда как глобальная ошибка этого метода, как и у метода средней точки , второго порядка. Кроме того, если ускорение действительно является результатом сил в консервативной механической или гамильтоновой системе , энергия приближения по существу колеблется вокруг постоянной энергии точно решенной системы с глобальной ошибкой, снова связанной первого порядка для полуявного Эйлера и закажите два для Верле-чехарды. То же самое касается всех других сохраняющихся величин системы, таких как линейный или угловой момент, которые всегда сохраняются или почти сохраняются в симплектическом интеграторе . [6]

Скоростной метод Верле является частным случаем бета-метода Ньюмарка с и .

представление Алгоритмическое

Поскольку скорость Verlet является обычно полезным алгоритмом в 3D-приложениях, общее решение, написанное на C++, может выглядеть, как показано ниже. Упрощенная сила сопротивления используется для демонстрации изменения ускорения, однако она необходима только в том случае, если ускорение непостоянно.

struct Body
{
    Vec3d pos { 0.0, 0.0, 0.0 };
    Vec3d vel { 2.0, 0.0, 0.0 }; // 2 m/s along x-axis
    Vec3d acc { 0.0, 0.0, 0.0 }; // no acceleration at first
    double mass = 1.0; // 1kg
    double drag = 0.1; // rho*C*Area – simplified drag for this example

    /**
     * Update pos and vel using "Velocity Verlet" integration
     * @param dt DeltaTime / time step [eg: 0.01]
     */
    void update(double dt)
    {
        Vec3d new_pos = pos + vel*dt + acc*(dt*dt*0.5);
        Vec3d new_acc = apply_forces(); // only needed if acceleration is not constant
        Vec3d new_vel = vel + (acc+new_acc)*(dt*0.5);
        pos = new_pos;
        vel = new_vel;
        acc = new_acc;
    }

    Vec3d apply_forces() const
    {
        Vec3d grav_acc = Vec3d{0.0, 0.0, -9.81 }; // 9.81 m/s² down in the z-axis
        Vec3d drag_force = 0.5 * drag * (vel * vel); // D = 0.5 * (rho * C * Area * vel^2)
        Vec3d drag_acc = drag_force / mass; // a = F/m
        return grav_acc - drag_acc;
    }
};

Условия ошибки [ править ]

Глобальная ошибка усечения метода Верле равна , как для положения, так и для скорости. Это контрастирует с тем фактом, что локальная ошибка в положении составляет всего лишь как описано выше. Разница связана с накоплением локальной ошибки усечения на всех итерациях.

Глобальную ошибку можно получить, приняв во внимание следующее:

и

Поэтому

Сходным образом:

которое можно обобщить до (это можно показать по индукции, но здесь оно приводится без доказательства):

Если мы рассмотрим глобальную ошибку в положении между и , где , ясно, что [ нужна ссылка ]

и, следовательно, глобальная (кумулятивная) ошибка за постоянный интервал времени определяется выражением

Поскольку скорость определяется некумулятивным способом по позициям интегратора Верле, глобальная ошибка скорости также равна .

При моделировании молекулярной динамики глобальная ошибка обычно гораздо важнее локальной ошибки, поэтому интегратор Верле известен как интегратор второго порядка.

Ограничения [ править ]

Системы множества частиц с ограничениями проще решать с помощью интегрирования Верле, чем с помощью методов Эйлера. Ограничениями между точками могут быть, например, потенциалы, удерживающие их на определенном расстоянии, или силы притяжения. Их можно смоделировать как пружины, соединяющие частицы. Используя пружины бесконечной жесткости, модель можно затем решить с помощью алгоритма Верле.

В одном измерении взаимосвязь между неограниченными позициями и реальные позиции очков во время , учитывая желаемое расстояние ограничения , можно найти по алгоритму

Интеграция Верле полезна, поскольку она напрямую связывает силу с положением, а не решает проблему с использованием скоростей.

Однако проблемы возникают, когда на каждую частицу действует несколько сдерживающих сил. Один из способов решения этой проблемы — пройти через каждую точку моделирования так, чтобы в каждой точке уже использовалось ослабление ограничений последней для ускорения распространения информации. В моделировании это может быть реализовано путем использования небольших временных шагов для моделирования, использования фиксированного количества шагов решения ограничений на каждый временной шаг или решения ограничений до тех пор, пока они не будут встречены определенным отклонением.

При локальной аппроксимации ограничений до первого порядка это то же самое, что и метод Гаусса – Зейделя . для небольших матриц Известно, что LU-разложение происходит быстрее. Большие системы можно разделить на кластеры (например, каждая тряпичная кукла = кластер). Внутри кластеров используется метод LU, между кластерами — метод Гаусса–Зейделя . Матричный код можно использовать повторно: зависимость сил от положений можно локально аппроксимировать до первого порядка, а интегрирование Верле можно сделать более неявным.

Сложное программное обеспечение, такое как SuperLU [7] существует для решения сложных задач с использованием разреженных матриц. Конкретные методы, такие как использование (кластеров) матриц, могут использоваться для решения конкретной проблемы, например, проблемы распространения силы через лист ткани без образования звуковой волны . [8]

Другой способ решения голономных ограничений — использование алгоритмов ограничений .

Реакции на столкновение [ править ]

Одним из способов реагирования на столкновения является использование системы штрафов, которая по сути применяет заданную силу к точке при контакте. Проблема в том, что очень сложно выбрать прикладываемую силу. Используйте слишком большую силу, и объекты станут нестабильными, слишком слабыми, и объекты проникнут друг в друга. Другой способ — использовать реакции столкновения проекций, которые берут точку нарушения и пытаются переместить ее на кратчайшее возможное расстояние, чтобы удалить ее от другого объекта.

В последнем случае интеграция Верле будет автоматически учитывать скорость, возникающую в результате столкновения; однако обратите внимание, что это не гарантируется в соответствии с физикой столкновений (т. е. не гарантируется, что изменения импульса будут реалистичными). Вместо неявного изменения термина скорости необходимо явно контролировать конечные скорости сталкивающихся объектов (путем изменения записанного положения с предыдущего временного шага).

Два простейших метода определения новой скорости — это совершенно упругие и неупругие столкновения . Немного более сложная стратегия, предлагающая больший контроль, предполагает использование коэффициента реституции .

См. также [ править ]

Литература [ править ]

  1. ^ Верле, Лу (1967). «Компьютерные «эксперименты» над классическими жидкостями. I. Термодинамические свойства молекул Леннарда-Джонса» . Физический обзор . 159 (1): 98–103. Бибкод : 1967PhRv..159...98В . дои : 10.1103/PhysRev.159.98 .
  2. ^ Пресс, WH; Теукольский, С.А.; Феттерлинг, WT; Фланнери, BP (2007). «Раздел 17.4. Консервативные уравнения второго порядка» . Численные рецепты: искусство научных вычислений (3-е изд.). Нью-Йорк: Издательство Кембриджского университета. ISBN  978-0-521-88068-8 .
  3. ^ веб-страница. Архивировано 3 августа 2004 г. в Wayback Machine с описанием метода Штёрмера.
  4. ^ Даммер, Джонатан. «Простой метод интеграции верлетов с коррекцией по времени» .
  5. ^ Своп, Уильям К.; ХК Андерсен; П.Х. Беренс; К. Р. Уилсон (1 января 1982 г.). «Метод компьютерного моделирования для расчета констант равновесия образования физических кластеров молекул: применение к небольшим кластерам воды». Журнал химической физики . 76 (1): 648 (Приложение). Бибкод : 1982ЖЧФ..76..637С . дои : 10.1063/1.442716 .
  6. ^ Парикмахер Эрнст; Любич, Кристиан; Ваннер, Герхард (2003). «Геометрическое численное интегрирование, иллюстрированное методом Штермера/Верле». Числовой акт 12 : 399–450. Бибкод : 2003AcNum..12..399H . CiteSeerX   10.1.1.7.7106 . дои : 10.1017/S0962492902000144 . S2CID   122016794 .
  7. ^ Руководство пользователя SuperLU .
  8. ^ Барафф, Д.; Виткин, А. (1998). «Большие шаги в моделировании ткани» (PDF) . Труды компьютерной графики . Серия ежегодных конференций: 43–54.

Внешние ссылки [ править ]


Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 49c906a80ecfd711f5cc005746037382__1719027120
URL1:https://arc.ask3.ru/arc/aa/49/82/49c906a80ecfd711f5cc005746037382.html
Заголовок, (Title) документа по адресу, URL1:
Verlet integration - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)