Cara menemukan Neptunus dari orbit Uranus (dengan simulasi komputer)

11

Saya ingin menunjukkan keberadaan planet lain (Neptunus) dengan mempelajari perbedaan antara pengamatan orbit Uranus dan prediksi matematika, karya ini dibuat dari Le Verrier dan saya ingin memahami metodenya.

Saya telah membaca Bab 2, "Penemuan Neptunus (1845-1846)," dalam biografi Le Verrier - Astronom yang Luar Biasa dan Menjijikkan, tetapi terlalu mendalam dan saya tidak mengerti betul karyanya.

Saya mempelajari masalah tiga tubuh (Sun, Uranus, Neptunus) melalui Matlab dan masalah dua tubuh (Sun, Uranus) mengambil kondisi awal dari sini:

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

Saya telah mencoba metode ini: Saya menempatkan Uranus di Perihelion bersama Max. kecepatan orbital dan saya menghitung sumbu semi-utama, dan itu lebih akurat daripada yang diperoleh dari menempatkan Uranus dan Neptunus di Perihelion dengan masing-masing Max. kecepatan orbital.

Ini foto keren yang dibuat dengan Matlab: Ini foto keren

Adakah yang bisa membantu saya? apa yang harus saya lakukan dan dengan data apa saya harus membandingkan prediksi saya? Bahkan tautan sederhana bisa sangat membantu.

Sergio Piccione
sumber

Jawaban:

11

Inilah yang saya lakukan:

  • Berdasarkan pada massa mereka, awalnya paling aman adalah mempertimbangkan Jupiter dan Saturnus serta Uranus. Mungkin bermanfaat untuk memasukkan Bumi dalam analisis, untuk mendapatkan posisi relatif, sudut pengamatan, dll. Jadi, saya akan mempertimbangkan:
    • Matahari
    • Bumi
    • Jupiter
    • Saturnus
    • Uranus
    • Neptunus
  • Dapatkan parameter gravitasi standar (μ) untuk semuanya
  • Dapatkan posisi awal dan kecepatan melalui JPL / HORIZONS untuk semua planet ini. Saya memiliki beberapa data di sekitar J2000.5, jadi saya hanya menggunakan vektor negara dari 1 Januari 2000, pada siang hari.
  • Tulis integrator N-body dengan alat MATLAB bawaan. Integrasikan tata surya yang tidak lengkap ini sekali tanpa Neptunus, dan sekali dengan Neptunus disertakan.
  • Analisis dan bandingkan!

Jadi, inilah data saya, dan integrator N-body:

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

Berikut ini adalah skrip driver yang saya gunakan untuk mengeluarkan beberapa plot yang bagus:

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

yang saya akan jelaskan di sini langkah demi langkah.

Pertama, sebidang tata surya untuk memeriksa apakah integrator N-body berfungsi sebagaimana mestinya:

sistem tata surya

Bagus! Selanjutnya, saya ingin melihat perbedaan antara posisi Uranus dengan dan tanpa pengaruh Neptunus. Jadi, saya mengekstraksi posisi kedua Uranus itu saja, dan merencanakannya:

Dua Uranus, dengan dan tanpa Neptunus

... itu hampir tidak berguna. Bahkan ketika memperbesar sangat dan memutar sih keluar dari itu, ini bukan plot yang berguna. Jadi saya melihat evolusi jarak Euclidian absolut antara dua Uranus:

Evolusi waktu dari jarak Euclidian antara kedua Uranus

Itu mulai terlihat lebih seperti itu! Sekitar 80 tahun setelah dimulainya analisis kami, kedua Uranus terpisah hampir 6 juta km!

Besar kedengarannya, dalam skala besar hal ini mungkin tenggelam dalam kebisingan ketika kita melakukan pengukuran di Bumi. Plus, itu masih tidak menceritakan keseluruhan cerita, seperti yang akan kita lihat sebentar lagi. Jadi selanjutnya, mari kita lihat perbedaan sudut antara vektor pengamatan, dari Bumi ke dua Uranus untuk melihat seberapa besar sudut itu, dan jika bisa menonjol di atas ambang kesalahan pengamatan:

Pemisahan sudut antara kedua Uranus

... tunggu! Lebih dari 300 perbedaan arcseconds, ditambah segala macam riak yang bergelombang bobrok timey terjadi. Itu tampaknya baik dalam kemampuan pengamatan waktu (walaupun saya tidak dapat menemukan sumber yang dapat diandalkan tentang ini begitu cepat; siapa pun?)

Sebagai tambahan, saya juga membuat plot terakhir yang membuat Jupiter dan Saturnus keluar dari gambar. Meskipun beberapa teori gangguan telah dikembangkan di 17 th dan 18 th abad, itu tidak berkembang dengan baik dan aku ragu bahkan Le Verrier mengambil Jupiter mempertimbangkan (tapi sekali lagi, saya bisa salah; perbaiki saya jika Anda tahu lebih banyak).

Jadi, inilah plot terakhir tanpa Jupiter dan Saturnus:

Pemisahan sudut antara kedua Uranus, membuat Jupiter dan Saturnus keluar dari persamaan

Meskipun ada perbedaan, mereka kecil, dan yang paling penting tidak relevan untuk menemukan Neptunus.

Rody Oldenhuis
sumber
Jawaban yang brilian!
Zephyr
4

Jika saya mengerti benar, Anda memodelkan orbit Uranus sebagai elips dan ingin membandingkannya dengan orbit aktual Uranus yang terganggu oleh Neptunus? Saya tidak punya jawaban, tetapi Di mana saya bisa menemukan / memvisualisasikan posisi planet / bintang / bulan / dll? menjelaskan cara menggunakan SPICE, HORIZONS, dan alat lainnya untuk menemukan posisi sebenarnya Uranus pada waktu tertentu + -15000 tahun dari sekarang, termasuk parameter elips yang paling sesuai (menggunakan fitur HORIZON "elemen orbital").

Tentu saja, apa pun yang Anda lakukan akan "melingkar" dalam arti tertentu, karena HORIZON menghitung posisi Uranus di masa lalu sudah termasuk gangguan Neptunus.

Jika Anda dapat menemukan tabel prediksi posisi Uranus atau sesuatu dari masa lalu, Anda mungkin memiliki sesuatu.

BTW, jangan ragu untuk menghubungi saya (lihat profil untuk detail) jika proyek ini melampaui pertanyaan stackexchange.

barrycarter
sumber