Як виявити Нептуна з орбіти Урана (за допомогою комп'ютерного моделювання)


12

Я хотів би продемонструвати існування іншої планети (Нептуна), вивчивши розбіжність між спостереженням орбіти Урана та математичним передбаченням, ця робота була зроблена з Ле Вер’є, і я хотів би зрозуміти його метод.

Я прочитав Розділ 2 "Відкриття Нептуна (1845-1846)" у біографії "Ле Вер'єр - чудовий і розбірливий астроном", але це занадто глибоко і я не дуже добре зрозумів його творчість.

Я вивчаю проблему з трьома тілами (Сонце, Уран, Нептун) через Матлаб та дві проблеми з тілом (Сонце, Уран), беручи звідси початкове стан:

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

Я спробував цей метод: я поставив Урана в Перигеліон разом із Максом. орбітальною швидкістю, і я обчислюю напівмайорну вісь, і вона точніша за ту, що отримана від введення Урана і Нептуна в Перигеліон з відповідним їм Макс. орбітальна швидкість.

Ось класний малюнок, зроблений з Matlab: Ось класний малюнок

Хтось може мені допомогти? що я маю робити і з якими даними я повинен порівняти свій прогноз? Навіть просте посилання може бути корисним.

Відповіді:


12

Ось що я зробив:

  • Виходячи з їх маси, найбезпечніше спочатку вважати Юпітера та Сатурна, а також Урана. Можливо, також буде корисно включити Землю до аналізу, отримати відносні положення, кути спостереження тощо. Отже, я буду розглядати:
    • Сонце
    • Земля
    • Юпітер
    • Сатурн
    • Уран
    • Нептун
  • Отримайте стандартні параметри гравітації (мк) для всіх них
  • Отримайте початкові положення та швидкості за допомогою JPL / HORIZONS для всіх цих планет. У мене були деякі дані, що лежать в районі J2000.5, тому я просто використовував державні вектори з 1 січня 2000 року опівдні.
  • Напишіть інтегратор N-body із вбудованими інструментами MATLAB. Інтегруйте цю неповну Сонячну систему один раз без Нептуна та один раз з включеним Нептуном.
  • Проаналізуйте та порівняйте!

Отже, ось мої дані та інтегратор 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

Ось сценарій драйвера, за допомогою якого я отримував кілька приємних сюжетів:

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-тіла як слід:

Сонячна система

Приємно! Далі я хотів побачити різницю між позиціями Урана з впливом Нептуна і без нього. Отже, я витягнув лише позиції цих двох Урану і побудував їх:

Дві урани, з Нептуном і без

... це навряд чи корисно. Навіть коли сильно збільшуєте масштаб і обертаєте хек з нього, це просто не корисний сюжет. Тому я подивився на еволюцію абсолютної евклідової відстані між двома Уранами:

Часова еволюція евклідової відстані між двома Уранами

Це починає виглядати більше так! Приблизно через 80 років після початку нашого аналізу дві Урани розташовані майже на 6 мільйонів км!

Як це може здатися, в масштабніших масштабах речей це може заглушити шум, коли ми проводимо вимірювання тут, на Землі. Плюс це все ще не розповідає всієї історії, як ми побачимо за мить. Отже далі, давайте розглянемо кутову різницю між векторами спостереження від Землі до двох Уранів, щоб побачити, наскільки великий цей кут, і чи може він виділятися вище порогових похибок спостереження:

Кутове розділення між двома Уранами

... ось! Більше 300 арсекундних різниць, плюс всілякі хиткі боббі-тайм-віме, що крутяться. Це здається в межах спостережних можливостей того часу (хоча я не можу так швидко знайти надійне джерело про це; хтось?)

Просто для гарного виміру я також продемонстрував останній сюжет, залишивши Юпітера та Сатурна поза картиною. Хоча деякі теорії збурень була розроблена в 17 - й і 18 - й століття, це було не дуже добре розвинена , і я сумніваюся , що навіть Леверье прийняв Юпітер до уваги (але знову ж , я міг би бути неправильно, будь ласка , поправте мене , якщо ви знаєте більше).

Отже, ось останній сюжет без Юпітера та Сатурна:

Кутове розділення між двома Уранами, не виходячи з рівняння Юпітера та Сатурна

Хоча існують відмінності, вони незначні, і головне не мають значення для відкриття Нептуна.


Блискуча відповідь!
зефір

4

Якщо я правильно розумію, ви моделюєте орбіту Урана як еліпса і хочете порівняти його з фактичною орбітою Урана, обуреною Нептуном? У мене немає відповіді, але де я можу знайти / візуалізувати позиції планет / зірок / місяця / тощо?пояснюється, як використовувати СПІС, ГОРИЗОНИ та інші інструменти, щоб знайти справжнє положення Урана в даний момент часу + -15000 років з цього часу, включаючи найкращі параметри еліптичних параметрів (використовуючи функцію "орбітальних елементів" HORIZONS).

Звичайно, все, що ви робите, буде в деякому сенсі "круговим", оскільки обчислена позиція Урана в минулому вже включає в себе збурення Нептуна.

Якщо ви зможете знайти таблиці прогнозів положення Урана або щось із минулого, можливо, у вас є щось.

BTW, не соромтеся зв’язатися зі мною (детальніше див. Профіль), якщо цей проект виходить за рамки питання про зміну стек.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.