Я создаю простой симулятор астрономии, который должен использовать ньютоновскую физику для симуляции движения планет в системе (или любых других объектов). Все тела представляют собой круги в евклидовой плоскости, которые обладают такими свойствами, как положение, скорость, масса, радиус и результирующая сила.
Я хочу обновить юниверс за небольшие промежутки времени, обычно за несколько миллисекунд, но я не уверен, как правильно рассчитать изменения в положении.
Сила проста: fr = sum(G * body.m * bodyi.m / dist(body, bodyi)^2)
.
Но как мне идти дальше?
Я мог бы сделать это:
a = Fr/body.m
v += a*dt
position += v*dt
Но это, конечно, было бы ложным. Может быть, если бы я добавил 0,5 в качестве фактора при расчете позиции?
time-integration
jcora
источник
источник
Ответы:
По сути, вы получили ответ - нет необходимости в коэффициент 0,5.
По сути, у вас есть двумерная система ОДУ первого порядка:
источник
0.5
фактор? Похоже, что вы делаете то же самое, что и скорость,n-1/2dt
измеренную секундами назад, как вы и предлагаете.