Neptün'ü Uranüs yörüngesinden nasıl keşfederim (bilgisayar simülasyonuyla)


12

Uranüs yörüngesinin gözlemlenmesi ve matematiksel tahmin arasındaki tutarsızlığı inceleyerek başka bir gezegenin (Neptün) varlığını göstermek istiyorum, bu çalışma Le Verrier'den yapıldı ve yöntemini anlamak istiyorum.

Le Verrier - Muhteşem ve Saptanabilir Gökbilim biyografisinde "Neptün'ün Keşfi (1845-1846)" başlıklı 2. Bölümü okudum, ama çok derinlemesine ve işini çok iyi anlamadım.

Matlab aracılığıyla üç beden problemini (Sun, Uranus, Neptune) ve buradan ilk koşulu alan iki beden problemini (Sun, Uranus) inceliyorum:

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

Bu yöntemi denedim: Uranüs'ü Max ile Perihelion'a koydum. yörünge hızı ve ben yarı majör ekseni hesaplıyorum ve Uranüs ve Neptün'ü Perihelion'a kendi Max'leriyle koymaktan elde edilenden daha doğrudur. yörünge hızı.

İşte Matlab ile yapılmış harika bir resim: İşte harika bir resim

Birisi bana yardım edebilir mi? tahminlerimi karşılaştırmak için ne yapmam ve hangi verilerle yapmam gerekiyor? Basit bir bağlantı bile yardımcı olabilir.

Yanıtlar:


12

İşte yaptığım şey:

  • Kitlelerine dayanarak, başlangıçta Jüpiter ve Satürn'ün yanı sıra Uranüs'ü düşünmek en güvenlidir. Dünyayı analize dahil etmek, göreli konumlar, gözlem açıları, vb. Elde etmek de verimli olabilir.
    • Güneş
    • Dünya
    • Jüpiter
    • Satürn
    • Uranüs
    • Neptün
  • Hepsi için standart yerçekimi parametrelerini (μ) alın
  • Tüm bu gezegenler için JPL / HORIZONS aracılığıyla başlangıç ​​pozisyonlarını ve hızlarını alın . J2000.5'ten bazı verilerim vardı, bu yüzden 1 Ocak 2000'de öğleden sonra eyalet vektörlerini kullandım.
  • Yerleşik MATLAB araçlarıyla bir N-gövde entegratörü yazın. Bu eksik Güneş sistemini bir kez Neptune olmadan ve bir kez de Neptune dahil ile entegre edin.
  • Analiz edin ve karşılaştırın!

İşte verilerim ve N-gövde entegratörü:

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

İşte bazı güzel araziler almak için kullanılan sürücü komut dosyası:

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'});

ki burada adım adım açıklayacağım.

İlk olarak, N-vücut entegratörünün gerektiği gibi çalıştığını kontrol etmek için Güneş sisteminin bir grafiği:

Güneş Sistemi

Güzel! Sonra, Neptün'ün etkisiyle ve etkisiz Uranüs'ün pozisyonları arasındaki farkı görmek istedim. Bu yüzden, sadece bu iki Uranüs'ün pozisyonlarını çıkardım ve bunları çizdim:

Neptün olsun ve olmasın iki Uranüs

... bu pek kullanışlı değil. Büyük ölçüde yakınlaştırıp halkı dışarı döndürürken bile, bu sadece yararlı bir arsa değildir. Bu yüzden iki Uranüs arasındaki mutlak Öklid mesafesinin evrimine baktım:

İki Uranüs arasındaki Öklid mesafesinin zaman evrimi

Bu daha çok benzemeye başlıyor! Analizimizin başlamasından yaklaşık 80 yıl sonra, iki Uranüs yaklaşık 6 milyon km uzaklıktadır!

Kulağa büyük gelebilir, şeylerin büyük ölçeğinde, burada Dünya'da ölçümler aldığımızda gürültüde boğulabilir. Ayrıca, bir anda göreceğimiz gibi, tüm hikayeyi hala anlatmıyor. Şimdi, bu açının ne kadar büyük olduğunu ve gözlemsel hata eşiklerinin üstünde olup olmadığını görmek için gözlem vektörleri arasındaki, Dünya'dan iki Uranusa doğru açısal farka bakalım:

İki Uranüs arasında açısal ayrım

... dalga! 300'den fazla arcseconds farkı, artı her türlü titrek bobbley timey wimey dalgalanma devam ediyor. Bu, o zamanın gözlemsel yetenekleri içinde iyi görünüyor (bu kadar hızlı bir şekilde güvenilir bir kaynak bulamamam; kimse?)

Sadece iyi bir ölçü için, Jüpiter ve Satürn'ü resimden çıkaran o son komployu da ürettim. Bazı pertürbasyon teorisi 17'de geliştirilmiş olmasına rağmen inci ve 18 inci yüzyıllarda, çok iyi gelişmiş değildi ve hatta Le Verrier dikkate Jüpiter aldı şüphe (ama yine ben yanlış olabilir; Daha fazla bilgi varsa düzeltin lütfen).

İşte, Jüpiter ve Satürn olmadan son arsa:

Jüpiter ve Satürn'ü denklemin dışında bırakarak iki Uranüs arasındaki açısal ayrım

Farklılıklar olmasına rağmen, Neptün'ü keşfetmek için çok az ve en önemlisi ilgisizdirler.


Mükemmel cevap!
zephyr

4

Doğru anlarsam, Uranüs'ün yörüngesini bir elips olarak modelleyiyorsunuz ve Uranüs'ün Neptune tarafından bozulan gerçek yörüngesiyle karşılaştırmak mı istiyorsunuz? Cevabım yok, ama gezegenleri / yıldızları / uyduları / vs pozisyonlarını nerede bulabilirim / görselleştirebilirim? Uranüs'ün belirli bir zamanda + -15000 yıl sonra en uygun eliptik parametreleri (HORIZONS "orbital elements" özelliğini kullanarak) dahil olmak üzere gerçek konumunu bulmak için SPICE, HORIZONS ve diğer araçların nasıl kullanılacağını açıklar.

Tabii ki, yaptığınız her şey bir anlamda "dairesel" olacaktır, çünkü geçmişte Uranüs'ün HORIZONS hesaplanmış konumu zaten Neptün'ün rahatsızlıklarını içerir.

Uranüs pozisyon tahminleri veya geçmişten bir şey bulabilirseniz, bir şey olabilir.

BTW, bu proje bir yığın değişim sorusunun ötesine uzanırsa benimle iletişime geçmekten çekinmeyin (ayrıntılar için profile bakın).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.