Подтвердить что ты не робот

"Репа" для моделирования планет

Я написал симуляцию внешних планет солнечной системы, используя yarr, похоже, выполняет примерно x30 быстрее, чем repa.

Учитывая это, я даже не пытался использовать parallelism. Есть ли очевидные проблемы с производительностью в моем коде repa? Репозиторий находится в github. Я могу создать сокращенную версию repa -only, если это полезно, но тогда вы не получите сравнение производительности с yarr.

В качестве альтернативы, как мне отладить проблемы с производительностью в repa?

4b9b3361

Ответ 1

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

Другое место, где моделирование проблемы n-body становится липким, - это когда два тела очень близко, например, луна с очень эксцентричной орбитой вокруг своей планеты. Если вы используете фиксированные временные приращения для моделирования, ошибка при больших изменениях скорости angular может привести к ошибкам деления на нуль или делению на очень малые значения, которые приводят к взрыву симуляции. Использование переменной дельта-t, которая зависит от скорости angular, может быть полезна.

Эти предложения основаны на запуске многих таких симуляций, как проект для курса физики бакалавриата, который я взял в 1973 году, при тестировании различных методов цифровой интеграции. Рунге-Кутта и методы корректора предикторов существуют с самого начала цифровых вычислений и доступно несколько книг. См., Например, Численные рецепты: искусство научных вычислений Уильяма Х. Пресс, Брайана П. Фланнери, Саула А. Теукульского и Уильяма Т. Веттерлинга. (Cambridge University Press, 1989)