0

matlab を使用して 3 体の問題をプログラムしようとしています。宇宙での回転座標系における月の軌道の式を教えてもらいました。基本的には ydotdot、xdotdot=GM/(x^2+y^2)^3/2 式です。式が何であるかは、それほど重要ではありません。

私が直面している問題は、月の軌道方程式を数値的に解くプログラムをコード化することになっているということです。私の目標はODE45と同じ結果を得ることなので、ODE45を使用して比較しています。私の究極の問題は、時間を日数で反復したいので、tspan = [0 365]. 薄いのは、重力定数を秒に変換してから tspace= [0 365] を実行すると、まったく異なる結果が得られます。[0 365*3600*34] を実行すると、1 年の秒と G= 6.67e を表します。 -11. 私のユニットは非常に奇妙に思えます。

ODE 45 を使用しているときになぜこのようなことが起こるのか、誰か説明できるかどうか疑問に思っていました。ODE45 を使用して秒を日に明確に変換できないのはなぜですか? 私がしなければならない余分なステップはありますか?私の問題の唯一の他の変数は、半径、距離、および 3 つの物体の質量です。

どうもありがとう。私はこれに非常に長い間取り組んできました。どんな助けでも大歓迎です。

4

1 に答える 1

2

各軸に沿った重力加速度の式は正しくありません。

質量 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/kg^2 です。したがって、すでに MKS (メートル-キログラム-秒) システムで表されており、この値を使用して計算された加速度の単位はメートル/秒^2 になります。

(x_s, y_s) にある 3 番目の天体 (たとえば、太陽) を使用して、月と太陽の距離を表す新しい R_s を計算し、太陽の質量 M_s を使用して上記のように新しい加速度ベクトルを計算します (ただし、加速度は現在(0,0) ではなく (x_s, y_s) の方向)。地球と太陽の重力による月の加速度は、すべてが共通の座標系 (ここでは地心座標 -- シミュレートしている場合は地心座標の方が便利かもしれませんが) に入れられると、成分ごとに加算されます。太陽地球月システム)。これに初期位置と速度を加えれば、次の時間ステップで位置と速度を計算するのに必要なすべてになります。

于 2011-03-14T03:11:35.050 に答える