Программирование задачи на 3 тела с использованием matlab - PullRequest
0 голосов
/ 14 марта 2011

Я пытаюсь запрограммировать проблему с 3 телами, используя matlab.Мне была дана формула для траектории Луны в ее вращательной системе в пространстве.Это в основном формула ydotdot, xdotdot = GM / (x ^ 2 + y ^ 2) ^ 3/2.Что это за формула, не так важно.

Проблема, с которой я сталкиваюсь, заключается в том, что я должен написать программу, которая будет численно решать уравнение траектории Луны.Я использую ODE45 для сравнения, поскольку моя цель - получить те же результаты, что и для ODE45.Моя конечная проблема заключается в том, что я хочу перебирать время по дням, поэтому tspan = [0 365].Суть в том, что когда я конвертирую гравитационную постоянную в секунды, а затем выполняю tspace = [0 365], я получаю совершенно другой результат, чем если бы я должен был сделать [0 365 *3600* 34], представляющий секунды в году, и G = 6,67e-11.Кажется, что мои единицы очень странные.

Мне было интересно, кто-нибудь может объяснить, почему это происходит, когда я использую ODE 45. Почему я не могу четко конвертировать секунды в дни, используя ODE45?Есть ли дополнительный шаг, который я должен сделать?Единственные другие переменные в моей задаче - это радиус, расстояние и масса трех тел.

Большое спасибо.Я работал над этим очень и очень долго.Любая помощь приветствуется.

1 Ответ

2 голосов
/ 14 марта 2011

Эта формула для гравитационного ускорения вдоль каждой оси неверна.

Поместите Землю с массой M_e в начале координат, с Луной (массой M_m) в точке (x, y).Тогда расстояние от Земли до Луны определяется следующим образом:

R_em = sqrt(x^2 + y^2) 

Общая сила Земли и Луны определяется следующим образом:

F_em = G*M_e*M_m/R_em^2 

Общее ускорение силы тяжести Земли определяется следующим образом:

a_em = F_em/M_m = G*M_e/R_em^2

и направлен на начало координат.Тогда ускорение вдоль каждой оси будет:

xdotdot = -F_em*cos(theta) = -F_em*x/R_em = -G*M_e*x/R_em^(3/2)
ydotdot = -F_em*sin(theta) = -F_em*y/R_em = -G*M_e*y/R_em^(3/2)

Обратите внимание на коэффициенты x и y, которые отсутствуют в формуле, которую вы указали.

Я не уверен, что вы подразумеваете под "преобразованием"гравитационная постоянная в секундах ".Значение, которое вы используете для G, имеет единицы ньютон-метр ^ 2 / кг ^ 2.Так что это уже выражено в системе MKS (метр-килограмм-секунда), и ускорения, рассчитанные с использованием этого значения, будут иметь единицы измерения метров в секунду ^ 2.

С третьим телом (скажем, солнцем) в(x_s, y_s), вы вычисляете новые R_s, представляющие расстояние луна-солнце, и вычисляете новые векторы ускорения, как указано выше, используя массу Солнца M_s (за исключением того, что ускорение теперь направлено в направлении (x_s, y_s), а не (0,0)).Ускорения Луны от силы тяжести Земли и Солнца просто добавляют по компонентам, как только все помещено в общую систему координат (здесь, геоцентрические координаты - хотя гелиоцентрический может быть более удобным выбором, если вы моделируетесистема солнце-земля-луна).Это, плюс начальные позиции и скорости, должно быть всем, что вам нужно для вычисления позиций и скоростей на следующем шаге по времени.

...