Який правильний спосіб інтеграції в моделювання астрономії?


15

Я створюю простий симулятор астрономії, який повинен використовувати фізику ньютонів для імітації руху планет у системі (або будь-яких об'єктах, з цього приводу). Усі тіла - це кола в евклідовій площині, які мають такі властивості, як положення, швидкість, маса, радіус та зумовлена ​​сила.

Я хочу оновити Всесвіт невеликими часовими кроками, як правило, за кілька мілісекунд, але я не впевнений, як правильно обчислити зміни положення.

Сила проста: fr = sum(G * body.m * bodyi.m / dist(body, bodyi)^2).

Але як мені далі звідти?

Я міг би це зробити:

a = Fr/body.m
v += a*dt
position += v*dt

Але це, звичайно, було б помилково. Можливо, якби я додав 0,5 як фактор розрахунку позиції?


Це занадто смішно, щоб не коментувати: це справді поширена астрономічна проблема для імітації руху "рослин" ;-)
Вольфганг Бангерт

Відповіді:


17

Ви по суті отримали відповідь - немає необхідності в коефіцієнті 0,5.

По суті, у вас є двовимірна система ODE першого порядку: де все є функцією часу, крім імовірноm, а крапки позначають часові похідні. Якщо ви робите просте розмежування їх у першому порядку, перекладене Ейлером, ви знайдете x n + 1 -xn

х˙=vv˙=Жм,
м або xn+1
хн+1-хнΔт=vнvн+1-vнΔт=Жнм,
хн+1=хн+Δтvнvн+1=vн+ΔтЖнм.
н

тнтн+1тн+1/2х0v1/2

хн+1=хн+Δтvн+1/2vн+1/2=vн-1/2+ΔтЖнм
інтегруватися вперед у часі. Це відомий як стрибковий метод . Завдяки цьому ваша система зберігає енергію свого роду, і орбіти рідше відлітають у нескінченність або щось подібне через експоненціальне зростання помилки округлення.

Єдина уловка - як її дістати v1/2, оскільки, імовірно, ви починаєте з v0. Там ви повинні просто використовувати настільки точну схему, як ви готові до написання, популярним вибором є Runge-Kutta четвертого порядку. Це може бути довгостроково нестабільним, але існує лише стільки помилок, які ви введете за півтора кроку, і ця помилка буде збережена невеликою формою після цього.

Нарешті, ця відповідь стосується будь-якої загальної ньютонівської сили тяжіння. Якщо ви дійсно хочете досконалих кіл, як це було сказано в запитанні, ви не отримаєте таких, крім ідеалізованої системи, в якій планети не взаємодіють одна з одною, і початкові умови вибираються правильно. Якщо це так, то вам взагалі не потрібно інтегруватися, оскільки кутова швидкість (радіани за одиницю часу) такого об’єкта просто

ω=ГМr3,
де М - маса центрального об'єкта і r- радіус орбіти. Це можна використовувати для перевірки точності вашого моделювання.

Гей, чи можете ви пояснити, чому мені не потрібен 0.5фактор? Здається, робиш те саме, що швидкості n-1/2dtсекунди тому, і це те, що, здається, ти пропонуєш.
jcora

Це було б те саме, якщо швидкість на (н-1) було 0. Що ви хочете, це оцінка першого порядку середнього значення vн і vн+1 (останнього ви не знаєте), а не середнього значення vн і 0.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.