Como descobrir Netuno da órbita de Urano (por simulação em computador)

11

Eu gostaria de demonstrar a existência de outro planeta (Netuno) estudando a discrepância entre a observação da órbita de Urano e a previsão matemática, este trabalho foi feito por Le Verrier e eu gostaria de entender seu método.

Eu li o capítulo 2, "A descoberta de Netuno (1845-1846)", na biografia Le Verrier - astrônomo magnífico e detestável, mas é muito profundo e eu não entendi muito bem seu trabalho.

Estou estudando o problema de três corpos (Sol, Urano, Netuno) via Matlab e o problema de dois corpos (Sol, Urano), tomando a condição inicial daqui:

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

Eu tentei este método: coloquei Urano no Perihelion com o Max. velocidade orbital e calculo o eixo semi-maior, e é mais preciso do que o obtido ao colocar Urano e Netuno no Perihelion com seus respectivos Max. velocidade orbital.

Aqui uma foto legal feita com o Matlab: Aqui uma foto legal

Alguém pode me ajudar? o que tenho que fazer e com quais dados tenho para comparar minha previsão? Mesmo um link simples pode ser útil.

Sergio Piccione
fonte

Respostas:

11

Aqui está o que eu fiz:

  • Com base em suas massas, é mais seguro considerar inicialmente Júpiter, Saturno e Urano. Também pode ser proveitoso incluir a Terra na análise, obter posições relativas, ângulos de observação etc. Então, vou considerar:
    • Sol
    • Terra
    • Júpiter
    • Saturno
    • Urano
    • Netuno
  • Obtenha os parâmetros gravitacionais padrão (μ) para todos eles
  • Obtenha posições e velocidades iniciais via JPL / HORIZONS para todos esses planetas. Como eu tinha alguns dados do J2000.5, usei apenas os vetores de estado de 1º de janeiro de 2000 ao meio-dia.
  • Escreva um integrador de corpo N com as ferramentas MATLAB integradas. Integre este sistema solar incompleto uma vez sem Netuno e uma vez com Netuno incluído.
  • Analise e compare!

Então, aqui estão meus dados e o integrador 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

Aqui está o script do driver que eu usei para obter alguns gráficos interessantes:

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

que descreverei aqui passo a passo.

Primeiro, uma plotagem do sistema Solar para verificar se o integrador de corpo N funciona como deveria:

o sistema solar

Agradável! Em seguida, eu queria ver a diferença entre as posições de Urano com e sem a influência de Netuno. Então, extraí apenas as posições desses dois Urano e as plotei:

Dois Urano, com e sem Netuno

... isso não é útil. Mesmo ao aumentar bastante o zoom e girá-lo, isso não é um enredo útil. Então olhei para a evolução da distância euclidiana absoluta entre os dois Urano:

Evolução temporal da distância euclidiana entre os dois Urano

Isso está começando a parecer mais! Aproximadamente 80 anos após o início de nossa análise, os dois Urano estão separados por quase 6 milhões de quilômetros!

Por maior que possa parecer, na escala maior das coisas, isso pode se afogar no barulho quando fazemos medições aqui na Terra. Além disso, ele ainda não conta a história toda, como veremos a seguir. Então, a seguir, vejamos a diferença angular entre os vetores de observação, da Terra em direção aos dois Urano, para ver quão grande é esse ângulo e se ele pode se destacar acima dos limites de erro observacional:

Separação angular entre os dois Urano

...Uau! Bem mais de 300 segundos de diferença de arco, além de todos os tipos de ondulações esquisitas e esquisitas. Isso parece bem dentro das capacidades observacionais da época (embora eu não consiga encontrar uma fonte confiável sobre isso tão rapidamente; alguém?)

Apenas por uma boa medida, também produzi o último enredo, deixando Júpiter e Saturno fora de cena. Embora alguns teoria de perturbação tinha sido desenvolvido na 17 ª e 18 ª séculos, não foi muito bem desenvolvido e duvido mesmo Le Verrier levou Júpiter em consideração (mas, novamente, eu poderia estar errado, por favor, corrija-me se você sabe mais).

Então, aqui está o último enredo sem Júpiter e Saturno:

Separação angular entre os dois Urano, deixando Júpiter e Saturno fora da equação

Embora existam diferenças, elas são mínimas e, o mais importante, irrelevantes para a descoberta de Netuno.

Rody Oldenhuis
fonte
Resposta brilhante!
Zephyr
4

Se bem entendi, você está modelando a órbita de Urano como uma elipse e deseja compará-la com a órbita real de Urano, perturbada por Netuno? Não tenho uma resposta, mas onde posso encontrar / visualizar posições de planetas / estrelas / luas / etc? explica como usar o SPICE, HORIZONS e outras ferramentas para encontrar a verdadeira posição de Urano em um determinado momento + -15000 anos a partir de agora, incluindo os parâmetros elípticos de melhor ajuste (usando o recurso "elementos orbitais" de HORIZONS).

Certamente, qualquer coisa que você faça será "circular" em algum sentido, uma vez que HORIZONS calculou a posição de Urano no passado já inclui as perturbações de Netuno.

Se você pudesse encontrar tabelas de previsões de posição de Urano ou algo do passado, poderá ter alguma coisa.

Entre, entre em contato comigo (consulte o perfil para obter detalhes) se este projeto se estender além de uma questão de troca de pilha.

barrycarter
fonte