Come scoprire Nettuno dall'orbita di Urano (mediante simulazione al computer)


11

Vorrei dimostrare l'esistenza di un altro pianeta (Nettuno) studiando la discrepanza tra l'osservazione dell'orbita di Urano e la previsione matematica, questo lavoro è stato fatto da Le Verrier e vorrei capire il suo metodo.

Ho letto il capitolo 2, "La scoperta di Nettuno (1845-1846)", nella biografia Le Verrier - Magnifico e detestabile astronomo, ma è troppo approfondito e non ho capito molto bene il suo lavoro.

Sto studiando il problema dei tre corpi (Sole, Urano, Nettuno) tramite Matlab e il problema dei due corpi (Sole, Urano) prendendo da qui la condizione iniziale:

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

Ho provato questo metodo: ho messo Urano nel Perielio con il Max. io e la velocità orbitale calcoliamo l'asse semi-maggiore, ed è più preciso di quello ottenuto mettendo Urano e Nettuno nel Perielio con il loro rispettivo Max. velocità orbitale.

Ecco una bella foto fatta con Matlab: Ecco una bella foto

Qualcuno può aiutarmi? cosa devo fare e con quali dati devo confrontare la mia previsione? Anche un semplice link potrebbe essere utile.

Risposte:


11

Ecco cosa ho fatto:

  • Sulla base delle loro masse, è più sicuro considerare inizialmente Giove, Saturno e Urano. Potrebbe anche essere utile includere la Terra nell'analisi, ottenere posizioni relative, angoli di osservazione, ecc. Quindi, prenderò in considerazione:
    • Sole
    • Terra
    • Giove
    • Saturno
    • Urano
    • Nettuno
  • Ottieni i parametri gravitazionali standard (μ) per tutti loro
  • Ottieni posizioni e velocità iniziali tramite JPL / HORIZONS per tutti questi pianeti. Avevo alcuni dati disponibili su J2000.5, quindi ho usato i vettori di stato dal 1 ° gennaio 2000 a mezzogiorno.
  • Scrivi un integratore N-body con strumenti MATLAB integrati. Integra questo sistema solare incompleto una volta senza Nettuno e una volta con Nettuno incluso.
  • Analizza e confronta!

Quindi, ecco i miei dati e l'integratore 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

Ecco lo script del driver che ho usato per ottenere alcune belle trame:

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

che descriverò qui passo dopo passo.

Innanzitutto, un diagramma del sistema solare per verificare che l'integratore del corpo N funzioni come dovrebbe:

il sistema solare

Bello! Successivamente, volevo vedere la differenza tra le posizioni di Urano con e senza l'influenza di Nettuno. Quindi, ho estratto solo le posizioni di quei due Urani e li ho tracciati:

Due urani, con e senza Nettuno

... non è molto utile. Anche quando si ingrandisce notevolmente e si ruota fuori il diavolo, questo non è solo un diagramma utile. Quindi ho osservato l'evoluzione dell'assoluta distanza euclidea tra i due Urani:

Evoluzione temporale della distanza euclidea tra i due Urani

Sta iniziando a sembrare più simile! Circa 80 anni dopo l'inizio della nostra analisi, i due Urani sono distanti quasi 6 milioni di km!

Per quanto grande possa sembrare, nella scala più grande delle cose questo potrebbe annegare nel rumore quando prendiamo le misure qui sulla Terra. Inoltre, non racconta ancora l'intera storia, come vedremo tra un momento. Quindi, diamo un'occhiata alla differenza angolare tra i vettori di osservazione, dalla Terra verso i due Urani per vedere quanto è grande quell'angolo e se può emergere sopra le soglie di errore osservative:

Separazione angolare tra i due Urani

... Whoa! Ben oltre 300 secondi d'arco di differenza, oltre a ogni sorta di increspatura traballante e tempestosa traballante in corso. Ciò sembra rientrare nelle capacità di osservazione del tempo (anche se non riesco a trovare una fonte affidabile su questo così rapidamente; nessuno?)

Per buona misura, ho anche prodotto quell'ultima trama lasciando Giove e Saturno fuori dal quadro. Sebbene una teoria delle perturbazioni fosse stata sviluppata nel 17 ° e 18 ° secolo, non era molto ben sviluppata e dubito che anche Le Verrier abbia preso in considerazione Giove (ma, di nuovo, potrei sbagliarmi; per favore correggimi se ne sai di più).

Quindi, ecco l'ultima trama senza Giove e Saturno:

Separazione angolare tra i due Urani, lasciando Giove e Saturno fuori dall'equazione

Sebbene ci siano differenze, sono minime e, soprattutto, irrilevanti per scoprire Nettuno.


Risposta brillante!
Zefiro,

4

Se ho capito bene, stai modellando l'orbita di Urano come un'ellisse e vuoi confrontarla con l'orbita reale di Urano come perturbata da Nettuno? Non ho una risposta, ma dove posso trovare / visualizzare pianeti / stelle / lune / posizioni ecc? spiega come usare SPICE, ORIZZONTI e altri strumenti per trovare la vera posizione di Urano in un dato momento tra + -15000 anni, compresi i parametri ellittici più adatti (usando la funzione "elementi orbitali" di HORIZONS).

Ovviamente, qualsiasi cosa tu faccia sarà "circolare" in un certo senso, dal momento che HORIZONS ha calcolato che la posizione di Urano in passato include già le perturbazioni di Nettuno.

Se potessi trovare tabelle delle previsioni di posizione di Urano o qualcosa del passato, potresti avere qualcosa.

A proposito, non esitate a contattarmi (vedere il profilo per i dettagli) se questo progetto si estende oltre una domanda di scambio di stack.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.