천왕성 궤도에서 해왕성을 발견하는 방법 (컴퓨터 시뮬레이션)


11

천왕성 궤도의 관측과 수학적 예측 사이의 불일치를 연구하여 다른 행성 (Neptune)의 존재를 보여주고 싶습니다.이 작품은 Le Verrier에서 만들어졌으며 그의 방법을 이해하고 싶습니다.

나는 전기 Le Verrier-Magnificent and Detestable Astronomer에서 2 장 "해왕성의 발견 (1845-1846)"을 읽었지만 너무 심도 있고 그의 작품을 잘 이해하지 못했습니다.

Matlab을 통해 3 신체 문제 (Sun, Uranus, Neptune)와 여기에서 초기 상태를 취하는 2 신체 문제 (Sun, Uranus)를 연구하고 있습니다.

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

나는이 방법을 시도했다 : 나는 천왕성을 Perihelion에 넣었다. 궤도 속도와 나는 반 장축을 계산하며 천왕성과 해왕성을 Perihelion에 각각 최대로 넣은 것보다 정확합니다. 궤도 속도.

Matlab으로 만든 멋진 그림은 다음과 같습니다. 여기 멋진 그림

아무도 나를 도울 수 있습니까? 내가해야 할 일과 내 예측을 비교할 데이터는 무엇입니까? 간단한 링크조차 도움이 될 수 있습니다.

답변:


11

여기 내가 한 일이 있습니다.

  • 질량을 기준으로 처음에는 천왕성과 목성과 토성을 고려하는 것이 가장 안전합니다. 분석에 지구를 포함시키고 상대 위치, 관측 각도 등을 얻는 것도 유익 할 수 있습니다. 따라서 다음을 고려할 것입니다.
    • 태양
    • 지구
    • 목성
    • 토성
    • 천왕성
    • 해왕성
  • 가져 오기 표준 중력 매개 변수 모두에 대해 (μ)를
  • 이 모든 행성에 대해 JPL / HORIZONS 를 통해 초기 위치와 속도를 얻으십시오 . J2000.5에서 데이터를 가져 왔으므로 정오에 2000 년 1 월 1 일의 상태 벡터를 사용했습니다.
  • MATLAB 툴이 내장 된 N- 바디 통합기를 작성하십시오. 이 불완전한 태양 광 시스템을 Neptune없이 한 번 통합하고 Neptune과 함께 한 번 통합하십시오.
  • 분석하고 비교하십시오!

자, 여기 내 데이터와 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-body 통합자가 다음과 같이 작동하는지 확인하기위한 태양계 플롯입니다.

태양계

좋은! 다음으로, 나는 해왕성의 영향 유무에 관계없이 천왕성의 위치의 차이를보고 싶었습니다. 그래서 나는 그 두 우라누스의 위치를 ​​추출하고 그 그림을 그렸습니다.

해왕성 유무에 따른 두 개의 천왕성

...별로 유용하지 않습니다. 크게 확대하고 지옥을 회전 시켜도 유용한 플롯은 아닙니다. 그래서 나는 두 우라누스 사이의 절대 유클리드 거리의 진화를 보았습니다.

두 천왕성 사이의 유클리드 거리의 시간 진화

더 좋아 보이기 시작합니다! 우리의 분석이 시작된 지 약 80 년이 지난 후 두 우라누스는 6 백만 킬로미터 떨어져 있습니다!

그것이 큰 소리로 들릴 수 있지만, 더 큰 규모의 물체에서는 지구에서 측정을 할 때 소음에 빠질 수 있습니다. 게다가, 우리는 잠시 후에 볼 수 있듯이 여전히 전체 이야기를하지 않습니다. 다음으로, 지구에서 두 개의 천왕성에 이르는 관측 벡터 사이의 각도 차이를 살펴보고 그 각도가 얼마나 큰지, 관측 오차 임계 값보다 눈에 띄는지를 살펴 보겠습니다.

두 우라누스 사이의 각도 분리

우와! 300 arcsecs 이상의 차이와 더불어, 모든 종류의 엉뚱한 번쩍 거리는 시시한 엉망진창이 계속됩니다. 그것은 당시의 관측 능력 내에서 잘 보이는 것 같습니다 (그러나 믿을만한 출처를 빨리 찾을 수는 없지만 누구입니까?)

좋은 측정을 위해 목성과 토성을 떠나는 마지막 줄거리도 만들었습니다. 약간의 섭동 이론은 17에서 개발 된했지만 , 18 세기, 그것은 매우 잘 개발되지 않았고 심지어 르 베리어 (Verrier)가 고려 목성했다 의심 (그러나 다시, 내가 잘못 될 수있다, 당신은 더 알고있는 경우에 저를 수정하시기 바랍니다).

목성과 토성이없는 마지막 줄거리는 다음과 같습니다.

목성과 토성을 방정식에서 제외하고 두 천왕성 사이의 각 분리

차이점은 있지만, 넵튠을 발견하는 데는 중요하지 않으며 가장 중요하지 않습니다.


훌륭한 답변!
zephyr

4

내가 올바르게 이해한다면 천왕성의 궤도를 타원으로 모델링하고 있으며 해왕성에 의해 교란 된 천왕성의 실제 궤도와 비교하고 싶습니까? 답이 없지만 행성 / 별 / 달 / 등 위치를 어디에서 찾고 시각화 할 수 있습니까? SPICE, HORIZONS 및 기타 도구를 사용하여 가장 적합한 타원형 매개 변수 (HORIZONS "궤도 요소"기능 사용)를 포함하여 지금부터 +15000 년 후 지정된 시간에 천왕성의 실제 위치를 찾는 방법을 설명합니다.

물론 과거에 천왕성의 HORIZONS 계산 위치에는 이미 해왕성의 섭동이 포함되어 있기 때문에 어떤 의미에서든 "원형"일 것입니다.

천왕성 위치 예측 표 또는 과거의 무언가를 찾을 수 있다면 무언가가있을 수 있습니다.

이 프로젝트가 스택 교환 문제를 넘어 서면 BTW, 저에게 연락하십시오 (자세한 내용은 프로파일 참조).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.