मैंने जो किया था यह रहा:
- उनके द्रव्यमान के आधार पर, शुरू में बृहस्पति और शनि के साथ-साथ यूरेनस पर विचार करना सबसे सुरक्षित है। यह भी विश्लेषण में पृथ्वी को शामिल करने के लिए फलदायी हो सकता है, सापेक्ष स्थिति, अवलोकन कोण आदि प्राप्त करने के लिए, इसलिए, मैं विचार करूंगा:
- रवि
- पृथ्वी
- बृहस्पति
- शनि ग्रह
- अरुण ग्रह
- नेपच्यून
- जाओ मानक गुरुत्वाकर्षण मापदंडों उन सभी के लिए (μ)
- इन सभी ग्रहों के लिए JPL / HORIZONS के माध्यम से प्रारंभिक स्थिति और वेग प्राप्त करें । मेरे पास J2000.5 के आसपास कुछ डेटा पड़ा हुआ था, इसलिए मैंने 1 जनवरी, 2000 को दोपहर से ही राज्य के वैक्टर का इस्तेमाल किया।
- अंतर्निहित MATLAB टूल के साथ एन-बॉडी इंटीग्रेटर लिखें। नेप्च्यून के बिना एक बार इस अपूर्ण सौर प्रणाली को एकीकृत करें, और एक बार नेपच्यून के साथ शामिल करें।
- विश्लेषण करें और तुलना करें!
तो, यहां मेरा डेटा और एन-बॉडी इंटीग्रेटर है:
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'});
जो मैं यहाँ चरण दर चरण बताता हूँ।
सबसे पहले, सौर मंडल का एक प्लॉट यह जांचने के लिए कि एन-बॉडी इंटीग्रेटर काम करता है:
अच्छा! अगला, मैं नेपच्यून के प्रभाव के साथ और बिना यूरेनस के पदों के बीच अंतर देखना चाहता था। इसलिए, मैंने केवल उन दो यूरेनस के पदों को निकाला, और उन्हें प्लॉट किया:
... यह शायद ही उपयोगी है। यहां तक कि जब बहुत में जूमिंग और इसे से बाहर की ओर घूर्णन, यह सिर्फ एक उपयोगी साजिश नहीं है। इसलिए मैंने दो यूरेनस के बीच पूर्ण यूक्लिडियन दूरी के विकास को देखा:
यह अधिक लग रहा है! मोटे तौर पर हमारे विश्लेषण की शुरुआत के 80 साल बाद, दोनों यूरेनस लगभग 6 मिलियन किमी अलग हैं!
जब हम यहां पृथ्वी पर माप लेते हैं, तो बड़े पैमाने पर ध्वनि हो सकती है, चीजों के अनुदान पैमाने पर यह शोर में डूब सकता है। इसके अलावा, यह अभी भी पूरी कहानी नहीं बताता है, जैसा कि हम एक पल में देखेंगे। तो अगला, आइए पृथ्वी से दो यूरेनस की ओर अवलोकन वेक्टर्स के बीच कोणीय अंतर को देखें, यह देखने के लिए कि वह कोण कितना बड़ा है, और अगर यह अवलोकन संबंधी त्रुटि सीमा से ऊपर खड़ा हो सकता है:
... रुकें! अच्छी तरह से 300 से अधिक धनुषाकार अंतर पर, प्लस सभी प्रकार के डगमगाने वाले बोबीले टाइममी विमी तरंग चल रहे हैं। यह समय की अवलोकन क्षमताओं के भीतर अच्छी तरह से लगता है (हालांकि मैं इस पर इतनी जल्दी कोई विश्वसनीय स्रोत नहीं ढूंढ सकता; कोई भी?)
सिर्फ अच्छे उपाय के लिए, मैंने बृहस्पति और शनि के चित्र से बाहर निकलकर उस अंतिम भूखंड का भी निर्माण किया। यद्यपि कुछ गड़बड़ी सिद्धांत 17 वीं और 18 वीं शताब्दी में विकसित किया गया था, यह बहुत अच्छी तरह से विकसित नहीं हुआ था और मुझे संदेह है कि ले वेरियर ने बृहस्पति को भी ध्यान में रखा (लेकिन फिर से, मैं गलत हो सकता हूं; कृपया मुझे सही करें यदि आप अधिक जानते हैं)।
तो, यहाँ बृहस्पति और शनि के बिना अंतिम भूखंड है:
हालांकि मतभेद हैं, वे मिनट हैं, और नेप्च्यून की खोज के लिए सबसे महत्वपूर्ण अप्रासंगिक हैं।