天王星の軌道から海王星を発見する方法(コンピューターシミュレーションによる)


11

天王星軌道の観測と数学的予測の食い違いを調べることで、別の惑星(海王星)の存在を実証したいのですが、この作品はル・ヴェ​​リエから作られ、彼の方法を理解したいと思います。

私は伝記Le Verrierの第2章「海王星の発見(1845-1846)」を読みました-壮大で嫌悪感のある天文学者ですが、それは深すぎて、私は彼の研究をあまりよく理解していませんでした。

ここでは、Matlabを介して3体問題(太陽、天王星、海王星)と2体問題(太陽、天王星)の初期条件を調べています。

http://nssdc.gsfc.nasa.gov/planetary/factsheet/uranusfact.html

私はこの方法を試しました。天王星を近日点に入れて最大にします。軌道速度と私は準主軸を計算し、天王星と海王星をそれぞれの最大で近日点に配置することから得られるものよりも正確です。軌道速度。

ここでMatlabで作られたクールな写真: ここでクールな写真

誰かが私を助けてくれますか?私がしなければならないことと、予測と比較するために必要なデータ 単純なリンクでも役立ちます。

回答:


11

これが私がしたことです:

  • それらの質量に基づいて、最初は木星と土星、および天王星を検討するのが最も安全です。地球を分析に含めたり、相対位置や観測角度などを取得したりすることも有益かもしれません。そのため、私は次のことを検討します。
    • 太陽
    • 地球
    • 木星
    • 土星
    • 天王星
    • ネプチューン
  • それらすべての標準的な重力パラメーター(μ)を取得します。
  • これらすべての惑星のJPL / HORIZONSを介して初期位置と速度を取得します。J2000.5からいくつかのデータがありましたので、2000年1月1日正午の状態ベクトルを使用しました。
  • 組み込みのMATLABツールを使用してN体積分器を記述します。この不完全な太陽系を、海王星を使わずに1回、海王星を含めて1回統合します。
  • 分析して比較してください!

だから、ここに私のデータとN体積分器があります:

function [t, yout_noNeptune, yout_withNeptune] = discover_Neptune()

    % Time of integration (in years)
    tspan = [0 97] * 365.25 * 86400;

    % std. gravitational parameters [km/s²/kg]
    mus_noNeptune = [1.32712439940e11; % Sun
                     398600.4415       % Earth
                     1.26686534e8      % Jupiter
                     3.7931187e7       % Saturn
                     5.793939e6];      % Uranus

    mus_withNeptune = [mus_noNeptune
                       6.836529e6]; % Neptune

    % Initial positions [km] and velocities [km/s] on 2000/Jan/1, 00:00
    % These positions describe the barycenter of the associated system,
    % e.g., sJupiter equals the statevector of the Jovian system barycenter.
    % Coordinates are expressed in ICRF, Solar system barycenter
    sSun     = [0 0 0 0 0 0].';
    sEarth   = [-2.519628815461580E+07  1.449304809540383E+08 -6.175201582312584E+02,...
                -2.984033716426881E+01 -5.204660244783900E+00  6.043671763866776E-05].';
    sJupiter = [ 5.989286428194381E+08  4.390950273441353E+08 -1.523283183395675E+07,...
                -7.900977458946710E+00  1.116263478937066E+01  1.306377465321731E-01].';
    sSaturn  = [ 9.587405702749230E+08  9.825345942920649E+08 -5.522129405702555E+07,...
                -7.429660072417541E+00  6.738335806405299E+00  1.781138895399632E-01].';
    sUranus  = [ 2.158728913593440E+09 -2.054869688179662E+09 -3.562250313222718E+07,...
                 4.637622471852293E+00  4.627114800383241E+00 -4.290473194118749E-02].';
    sNeptune = [ 2.514787652167830E+09 -3.738894534538290E+09  1.904284739289832E+07,...
                 4.466005624145428E+00  3.075618250100339E+00 -1.666451179600835E-01].';

    y0_noNeptune   = [sSun; sEarth; sJupiter; sSaturn; sUranus];
    y0_withNeptune = [y0_noNeptune; sNeptune];

    % Integrate the partial Solar system 
    % once with Neptune, and once without
    options = odeset('AbsTol', 1e-8,...
                     'RelTol', 1e-10);

    [t, yout_noNeptune]   = ode113(@(t,y) odefcn(t,y,mus_noNeptune)  , tspan, y0_noNeptune  , options);
    [~, yout_withNeptune] = ode113(@(t,y) odefcn(t,y,mus_withNeptune),     t, y0_withNeptune, options);

end

% The differential equation 
%
%    dy/dt = d/dt [r₀ v₀ r₁ v₁ r₂ v₂ ... rₙ vₙ]    
%          = [v₀ a₀ v₁ a₁ v₂ a₂ ... vₙ aₙ]    
%
%  with 
%
%    aₓ = Σₘ -G·mₘ/|rₘ-rₓ|² · (rₘ-rₓ) / |rₘ-rₓ| 
%       = Σₘ -μₘ·(rₘ-rₓ)/|rₘ-rₓ|³  
%
function dydt = odefcn(~, y, mus)

    % Split up position and velocity
    rs = y([1:6:end; 2:6:end; 3:6:end]);
    vs = y([4:6:end; 5:6:end; 6:6:end]);

     % Number of celestial bodies
    N = size(rs,2);

    % Compute interplanetary distances to the power -3/2
    df  = bsxfun(@minus, permute(rs, [1 3 2]), rs);
    D32 = permute(sum(df.^2), [3 2 1]).^(-3/2);
    D32(1:N+1:end) = 0; % (remove infs)

    % Compute all accelerations     
    as = -bsxfun(@times, mus.', D32);              % (magnitudes)    
    as = bsxfun(@times, df, permute(as, [3 2 1])); % (directions)    
    as = reshape(sum(as,2), [],1);                 % (total)

    % Output derivatives of the state vectors
    dydt = y;
    dydt([1:6:end; 2:6:end; 3:6:end]) = vs;
    dydt([4:6:end; 5:6:end; 6:6:end]) = as;

end

これは、私がいくつかの素晴らしいプロットを取得するために使用したドライバスクリプトです。

clc
close all

% Get coordinates from N-body simulation
[t, yout_noNeptune, yout_withNeptune] = discover_Neptune();

% For plot titles etc.
bodies = {'Sun'
          'Earth'
          'Jupiter'
          'Saturn'
          'Uranus'
          'Neptune'};


% Extract positions
rs_noNeptune   = yout_noNeptune  (:, [1:6:end; 2:6:end; 3:6:end]);
rs_withNeptune = yout_withNeptune(:, [1:6:end; 2:6:end; 3:6:end]);



% Figure of the whole Solar sysetm, just to check
% whether everything went OK
figure, clf, hold on
for ii = 1:numel(bodies)
    plot3(rs_withNeptune(:,3*(ii-1)+1),...
          rs_withNeptune(:,3*(ii-1)+2),...
          rs_withNeptune(:,3*(ii-1)+3),...
          'color', rand(1,3));
end

axis equal
legend(bodies);
xlabel('X [km]');
ylabel('Y [km]');
title('Just the Solar system, nothing to see here');


% Compare positions of Uranus with and without Neptune
rs_Uranus_noNeptune   = rs_noNeptune  (:, 13:15);
rs_Uranus_withNeptune = rs_withNeptune(:, 13:15);

figure, clf, hold on

plot3(rs_Uranus_noNeptune(:,1),...
      rs_Uranus_noNeptune(:,2),...
      rs_Uranus_noNeptune(:,3),...
      'b.');

plot3(rs_Uranus_withNeptune(:,1),...
      rs_Uranus_withNeptune(:,2),...
      rs_Uranus_withNeptune(:,3),...
      'r.');

axis equal
xlabel('X [km]');
ylabel('Y [km]');
legend('Uranus, no Neptune',...
       'Uranus, with Neptune');


% Norm of the difference over time
figure, clf, hold on

rescaled_t = t/365.25/86400;

dx = sqrt(sum((rs_Uranus_noNeptune - rs_Uranus_withNeptune).^2,2));
plot(rescaled_t,dx);
xlabel('Time [years]');
ylabel('Absolute offset [km]');
title({'Euclidian distance between'
       'the two Uranuses'});


% Angles from Earth
figure, clf, hold on

rs_Earth_noNeptune   = rs_noNeptune  (:, 4:6);
rs_Earth_withNeptune = rs_withNeptune(:, 4:6);

v0 = rs_Uranus_noNeptune   - rs_Earth_noNeptune;
v1 = rs_Uranus_withNeptune - rs_Earth_withNeptune;

nv0 = sqrt(sum(v0.^2,2));
nv1 = sqrt(sum(v1.^2,2));

dPhi = 180/pi * 3600 * acos(min(1,max(0, sum(v0.*v1,2) ./ (nv0.*nv1) )));
plot(rescaled_t, dPhi);

xlabel('Time [years]');
ylabel('Separation [arcsec]')
title({'Angular separation between the two'
       'Uranuses when observed from Earth'});

これをここで段階的に説明します。

まず、N体積分器が正しく機能することを確認するための太陽系のプロット:

太陽系

いいね!次に、海王星の影響の有無による天王星の位置の違いを見たかった。そこで、これら2つの天王星の位置だけを抽出してプロットしました。

海王星の有無にかかわらず2つの天王星

...それはほとんど役に立ちません。大きくズームインして全体を回転させる場合でも、これは有用なプロットではありません。それで、私は2つの天王星間のユークリッド絶対距離の進化を見ました:

2つの天王星間のユークリッド距離の時間発展

それはそれのように見え始めています!分析を開始してからおよそ80年後、2つの天王星は約600万km離れています。

それが聞こえるかもしれないほど大きなもので、私たちが地球でここで測定を行うとき、これはより大きなスケールでノイズに溺れるかもしれません。さらに、後で説明するように、それでもすべての話を伝えることはできません。次に、地球から2つの天王星に向かう観測ベクトル間の角度の違いを見て、その角度がどれほど大きいか、そして観測誤差のしきい値を超えて目立つかどうかを確認します。

2つの天王星間の角度分離

...うわあ!300アークセカンドをはるかに超える差に加えて、あらゆる種類のぐらついたボブリーのタイムリーなワイミーな波打つ様子が続いています。それは当時の観測能力の範囲内にあるように思われます(ただし、これに関する信頼できる情報源をすぐに見つけることはできませんが、誰か?)

念のため、木星と土星を写真から除外する最後の計画も作成しました。いくつかの摂動論は17で開発されていたが、と18 番目の世紀、それは非常によく発達していないされ、私もルヴェリエを考慮に木星を取った疑い(しかし、再び、私は間違っている可能性が、あなたがより知っていれば、私を修正してください)。

だから、ここに木星と土星のない最後のプロットがあります:

2つの天王星間の角度分離により、木星と土星は方程式から外れます

違いはありますが、それらは微妙であり、最も重要なことに海王星の発見には無関係です。


素晴らしい答え!
ゼファー2016

4

私が正しく理解していれば、天王星の軌道を楕円としてモデル化していて、海王星によって乱された天王星の実際の軌道と比較したいですか?答えはありませんが、惑星、星、月などの位置をどこで見つけて視覚化できますか?SPICE、HORIZONS、およびその他のツールを使用して、現在から+ -15000年後のある時点における天王星の本当の位置を見つける方法を説明します。

もちろん、過去に天王星の位置を計算したHORIZONSにはすでに海王星の摂動が含まれているため、行うことは何らかの意味で「円形」になります。

天王星の位置予測の表や過去のものを見つけることができれば、何かがあるかもしれません。

ところで、このプロジェクトがstackexchangeの質問を超える場合は、遠慮なく私に連絡してください(詳細はプロファイルを参照)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.