Determining an Orbit by the Method of Gauss
Racist Celestial Mechanics, Lecture 5
My purpose with this page is to show how to determine the elements of an orbit when three angle-only observations (such as right ascension and declination) at known times from a known position with respect to the sun.
—Jerry Abbott
Revised: 13 August 2004
Note: The "symbol" font is REQUIRED for the correct presentation of the equations.
When an asteroid is discovered, the first determination of its orbit is often made without any a priori knowledge of its distance from Earth or its position with respect to the sun. What is known initially is only the position of Earth with respect to the sun, and the right ascension and declination of the asteroid at three times of observation.
Karl Friedrich Gauss, a smart German fellow, figured out how to approximate the geocentric and heliocentric distances of the asteroid, based on the apparent curvature of the orbit along its observed path.
My presentation of this "method of Gauss" for determining the orbital elements of asteroids from three angular positions at three known times was adapted from the fifth chapter of The Determination of Orbits, by A. D. Dubyago, as translated from Russian into English by the RAND Corporation. Like Gauss, Dubyago was a White man. I doubt that many Blacks could even understand Dubyago's explanation of Gauss's method. But if you happen to be a nigger, consider yourself free to make the attempt anyway.
Most of the work will be done in the celestial coordinate system, rather than the ecliptic system that I usually prefer. We'll make the rotation to ecliptic coordinates near the end.
Initial Data.
For i=1 to 3
The time of observation: ti
The position of the sun: Xsi, Ysi, Zsi
The anglular position of the asteroid: ai, di
The position of the sun is in local celestial coordinates, not geocentric celestial coordinates. To get Rs, you would need to subtract the your geocentric position on Earth's surface (in celestial coordinates) from the geocentric position of the sun (in celestial coordinates). If you are White, you should have no trouble handling that.
Some Handy Constants.
k = 0.01720209895 (the mean motion of Earth in radians per day)
A = 0.00577551833 (the number of days required for light to travel 1 AU)
Unit Vector to the Asteroid.
For i=1 to 3
ai = cos ai cos di
bi = sin ai cos di
ci = sin di
The position vectors are in local celestial coordinates.
The First Approximation.
t1 = k { t3 - t2 }
t2 = k { t3 - t1 }
t3 = k { t2 - t1 }
no1 = t1 / t2
no3 = t3 / t2
n1 = t1 t3 {1 + no1} / 6
n3 = t1 t3 {1 + no3} / 6
D = a2 { b3 c1 - b1 c3 } + b2 { c3 a1 - c1 a3 } + c2 { a3 b1 - a1 b3 }
For i=1 to 3
di = Xsi { b3 c1 - b1 c3 } + Ysi { c3 a1 - c1 a3 } + Zsi { a3 b1 - a1 b3 }
Rsi = { Xsi2 + Ysi2 + Zsi2 }1/2
qi = -2 { ai Xsi + bi Ysi + ci Zsi }
K0 = { d2 - d1 no1 - d3 no3 } / D
L0 = { d1 n1 + d3 n3 } / D
r2 : the distance from the sun to the asteroid at time 2.
r2 : the distance from Earth to the asteroid at time 2.
We must solve these two equations simultaneously for r2 and r2:
r2 = K0 - L0 / r23
r2 = { Rs22 + q2 r2 + r22 }1/2
This leads to an 8th degree polynomial in r2.
f{r2} = r28 - { Rs22 + q2 K0 + K02 } r26 + L0 { q2 + 2 K0 } r23 - L02
We are interested in the roots of the function f{r2}. We will use Newton's method to get the answer. The first derivative is
f'{r2} = 8 r27 - 6 { Rs22 + q2 K0 + K02 } r25 + 3 L0 { q2 + 2 K0 } r22
As an initial guess at r2, we'll set it equal to one.
r2,(j=0) = 1.0
Repeat over j
r2,j+1 = r2,j - f{r2,j} / f'{r2,j}Until | r2,j+1 - r2,j | < 10-12
Assign to r2 the converged value from the loop.
r2 = r2,j+1
r2 = K0 - L0 / r23
n1 = no1 + n1 / r23
n3 = no3 + n3 / r23
Q1 = n1 Xs1 - Xs2 + n3 Xs3 + a2 r2
Q2 = n1 Ys1 - Ys2 + n3 Ys3 + b2 r2
Q3 = n1 Zs1 - Zs2 + n3 Zs3 + c2 r2
Q4 = a1 - a3 c1 / c3
Q5 = b1 - b3 a1 / a3
Q6 = b3 - b1 a3 / a1
Q7 = a3 - a1 c3 / c1
r1 = { [ Q1 - a3 Q3 / c3 ] / [ n1 Q4 ] + [ Q2 - b3 Q1 / a3 ] / [ n1 Q5 ] } / 2
r3 = { [ Q2 - b1 Q1 / a1 ] / [ n3 Q6 ] + [ Q1 - a1 Q3 / c1 ] / [ n3 Q7 ] } / 2
r1 = { Rs12 + q1 r1 + r12 }1/2
r3 = { Rs32 + q3 r3 + r32 }1/2
Correction for Planetary Abberation.
Light doesn't travel instantaneously. We must correct the initial times for the amount of time it took light to travel from the asteroid to our eyes. This is done only once, after the first approximation, but before the 2nd approximation. It will not be done between any other successive approximations.
For i=1 to 3
toi = ti - A riWhere A is the time (in days) required for light to travel 1 astronomical unit.
The values toi are the adjusted times of observation.
t1 = k { to3 - to2 }
t2 = k { to3 - to1 }
t3 = k { to2 - to1 }
no1 = t1 / t2
no3 = t3 / t2
Recursive Procedure for Successive Approximations.
For i=1 to 3
xi = ai ri - XsiK1 = { 2 [ r2 r3 + x2 x3 + y2 y3 + z2 z3 ] }1/2
yi = bi ri - Ysi
zi = ci ri - Zsi
h1 = t12 / { K12 [ K1/3 + ( r2+r3 )/2 ] }
h2 = t22 / { K22 [ K2/3 + ( r1+r3 )/2 ] }
h3 = t32 / { K32 [ K3/3 + ( r1+r2 )/2 ] }
For i=1 to 3
j1 = (11/9) hin1 = no1 y2 / y1
j2 = j1
Repeatj3 = j2Until | ( j2 - j3 ) / j3 | < 10-12
j2 = j1 / ( 1 + j2)
yi = 1 + (10/11) j2
n1 = no1 r23 { y2/y1 - 1 }
n3 = no3 r23 { y2/y3 - 1 }
K0 = { d2 - d1 no1 - d3 no3 } / D
L0 = { d1 n1 + d3 n3 } / D
f{r2} = r28 - { Rs22 + q2 K0 + K02 } r26 + L0 { q2 + 2 K0 } r23 - L02
f'{r2} = 8 r27 - 6 { Rs22 + q2 K0 + K02 } r25 + 3 L0 { q2 + 2 K0 } r22
r2,(j=0) = 1.0
Repeat over j
r2,j+1 = r2,j - f{r2,j} / f'{r2,j}Until | r2,j+1 - r2,j | < 10-12
r2 = r2,j+1
r2 = K0 - L0 / r23
Q1 = n1 Xs1 - Xs2 + n3 Xs3 + a2 r2
Q2 = n1 Ys1 - Ys2 + n3 Ys3 + b2 r2
Q3 = n1 Zs1 - Zs2 + n3 Zs3 + c2 r2
Q4 = a1 - a3 c1 / c3
Q5 = b1 - b3 a1 / a3
Q6 = b3 - b1 a3 / a1
Q7 = a3 - a1 c3 / c1
r1 = { [ Q1 - a3 Q3 / c3 ] / [ n1 Q4 ] + [ Q2 - b3 Q1 / a3 ] / [ n1 Q5 ] } / 2
r3 = { [ Q2 - b1 Q1 / a1 ] / [ n3 Q6 ] + [ Q1 - a1 Q3 / c1 ] / [ n3 Q7 ] } / 2
r1 = { Rs12 + q1 r1 + r12 }1/2
r3 = { Rs32 + q3 r3 + r32 }1/2
Take the values for ri at the end of each approximation and use them as input for the next approximation. Continue repeating this procedure until the values for ri converge.
Forming the state vector at adjusted time 2.
When we are finished converging the heliocentric distance of the asteroid at the three times of observation (adjusted for planetary abberation), we are ready to form the state vector (position and velocity) of the asteroid at adjusted time 2.
For i=1 to 3
xi = ai ri - XsiRotate the position vectors into ecliptic coordinates.
yi = bi ri - Ysi
zi = ci ri - Zsi
The obliquity of the Earth was (at the time of this writing)
q = 23.439281 degrees = 0.40909263 radians
Xi = xi
Yi = zi sin q + yi cos q
Zi = zi cos q - yi sin q
The velocity at adjusted time 2.
b1 = [ to2 - to3 ] / { [ to1 - to2 ] [ to1 - to3 ] }
b2 = [ 2 to2 - to1 - to3 ] / { [ to2 - to1 ] [ to2 - to3 ] }
b3 = [ to2 - to1 ] / { [ to3 - to1 ] [ to3 - to2 ] }
Here's a conversion factor,
Vcf = 1731456.8367
When multiplied, it converts a velocity from AU/day to meters/second.
Vx2 = Vcf { b1 X1 + b2 X2 + b3 X3 }
Vy2 = Vcf { b1 Y1 + b2 Y2 + b3 Y3 }
Vz2 = Vcf { b1 Z1 + b2 Z2 + b3 Z3 }
The velocity has been calculated from the derivative of a Lagrange interpolating polynomial (degree two) curvefit to the three points Ri, which are the heliocentric position vectors of the asteroid in ecliptic coordinates at the adjusted times of observation.
The state vector for the asteroid whose orbit you are trying to determine is
[ X2, Y2, Z2, Vx2, Vy2, Vz2 ]
The orbital elements may be calculated from this state vector with the procedure found in Lecture 2.
Worked Example.
This example follows Dubyago's demonstration problem found at the end of Chapter 5 of The Determination of Orbits, in which, however, he makes a number of typographical errors in the presentation of his figures. My own work presents the numbers that I obtained by working the same problem myself. The asteroid for which we seek orbital elements is 1590 Tsiolkovskaja, also known as 1933 NA.
Initial data.
t1 = JD 2427255.460417 = 1 July 1933, 23h 3m 0s UT
Xs1 = -0.169709
Ys1 = +0.919710
Zs1 = +0.398865
a1 = 19.46730000 hours
d1 = -13.86869444 degrees
t2 = JD 2427283.391181 = 29 July 1933, 21h 23m 18s UT
Xs2 = -0.600429
Ys2 = +0.751016
Zs2 = +0.325697
a2 = 19.06218056 hours
d2 = -14.11902778 degrees
t3 = JD 2427312.342083 = 27 August 1933, 20h 12m 36s UT
Xs3 = -0.908371
Ys3 = +0.405220
Zs3 = +0.175716
a3 = 18.98696667 hours
d3 = -15.24394444 degrees
Unit vectors from observer to planet.
a1 = +0.363835156
b1 = -0.900093900
c1 = -0.239697622
a2 = +0.266215600
b2 = -0.932536300
c2 = -0.243937090
a3 = +0.246531192
b3 = -0.932786462
c3 = -0.262929245
First approximation.
t1 = 0.498016281
t2 = 0.978484047
t3 = 0.480467766
no1 = 0.508967195
no3 = 0.491032805
n1 = 0.060177805
n3 = 0.059462580
d1 = 0.015443444
d2 = 0.018648221
d3 = 0.017700437
D = 0.001964676
Rs1 = 1.016740339
Rs2 = 1.015193850
Rs3 = 1.010058035
q1 = 1.970356907
q2 = 1.879285653
q3 = 1.296252781
K0 = 1.067106795
L0 = 1.008749516
f{r2} = r28 - 4.174733956 r26 + 4.048615418 r23 - 1.017575585
f'{r2} = 8 r27 - 25.048403737 r25 + 12.145846255 r22
r2 = 1.898670742
r2 = 0.919728216
n1 = 0.517759189
n3 = 0.499720304
Q1 = +0.303475173
Q2 = -0.930010982
Q3 = -0.255727953
Q4 = +0.139086706
Q5 = +0.476529097
Q6 = -0.322891519
Q7 = -0.152567065
r1 = 0.884503909
r3 = 1.110851828
r1 = 1.886503769
r3 = 1.922018156
Correction for planetary abberation.
to1 = JD 2427255.455309
to2 = JD 2427283.385869
to3 = JD 2427312.335667
t1 = 0.497997293
t2 = 0.978461559
t3 = 0.480464267
no1 = 0.508959486
no3 = 0.491040514
Second approximation.
x1 = +0.491522618
y1 = -1.715846574
z1 = -0.610878483
x2 = +0.845274999
y2 = -1.608695948
z2 = -0.550052825
x3 = +1.182230625
y3 = -1.441407547
z3 = -0.467791433
K1 = 3.801232986
K2 = 3.732555561
K3 = 3.766593197
h1 = 0.005401695
h2 = 0.021826229
h3 = 0.005168609
y1 = 1.005962773
y2 = 1.023636797
y3 = 1.005707071
n1 = 0.061204833
n3 = 0.059919537
n1 = 0.517901529
n3 = 0.499794774
K0 = 1.067097940
L0 = 1.020939404
f{r2} = r28 - 4.174698414 r26 + 4.097521445 r23 - 1.042317267
f'{r2} = 8 r27 - 25.048190484 r25 + 12.292564335 r22
r2 = 1.896390493
p2 = 0.917399712
[Skipping the Q's.]
r1 = 0.882742391
r3 = 1.107232428
r1 = 1.884757972
r3 = 1.918706335
The successive approximations for the heliocentric distance.
The 1st approximation (derived explicitly above) is
r(1,2,3) = 0.884503909, 0.919728216, 1.110851828
r(1,2,3) = 1.886503769, 1.898670742, 1.922018156
The 2nd approximation (derived explicitly above) is
r(1,2,3) = 0.882742391, 0.917399712, 1.107232428
r(1,2,3) = 1.884757972, 1.896390493, 1.918706335
The 3rd approximation is
r(1,2,3) = 0.882277763, 0.917293056, 1.107206810
r(1,2,3) = 1.884297496, 1.896286050, 1.918682897
The 4th approximation is
r(1,2,3) = 0.882223313, 0.917244422, 1.107137725
r(1,2,3) = 1.884243532, 1.896238425, 1.918619694
The 5th approximation is
r(1,2,3) = 0.882212065, 0.917240187, 1.107134081
r(1,2,3) = 1.884232385, 1.896234278, 1.918616361
The 6th approximation is
r(1,2,3) = 0.882210524, 0.917239076, 1.107132612
r(1,2,3) = 1.884230857, 1.896233190, 1.918615016
The 7th approximation is
r(1,2,3) = 0.882210241, 0.917238946, 1.107132476
r(1,2,3) = 1.884230577, 1.896233062, 1.918614892
The 8th approximation is
r(1,2,3) = 0.882210199, 0.917238919, 1.107132442
r(1,2,3) = 1.884230536, 1.896233036, 1.918614861
The 9th approximation is
r(1,2,3) = 0.882210192, 0.917238915, 1.107132438
r(1,2,3) = 1.884230529, 1.896233032, 1.918614857
The 10th approximation is
r(1,2,3) = 0.882210191, 0.917238914, 1.107132437
r(1,2,3) = 1.884230527, 1.896233032, 1.918614856
The 11th approximation is
r(1,2,3) = 0.882210191, 0.917238914, 1.107132437
r(1,2,3) = 1.884230527, 1.896233032, 1.918614856
The three heliocentric positions in celestial coordinates.
x1 = +0.490688082
y1 = -1.713782011
z1 = -0.610328684
x2 = +0.844612308
y2 = -1.606374583
z2 = -0.549445592
x3 = +1.181313679
y3 = -1.437938149
z3 = -0.466813496
The three heliocentric positions in ecliptic coordinates.
X1 = +0.490688082
Y1 = -1.815139083
Z1 = +0.121737398
X2 = +0.844612308
Y2 = -1.692376793
Z2 = +0.134872344
X3 = +1.181313679
Y3 = -1.504970227
Z3 = +0.143685676
The adjusted times of observation.
to1 = 2427255.455309
to2 = 2427283.385869
to3 = 2427312.335667
The velocity at adjusted time 2.
b1 = -0.01822231549
b2 = +0.00126052146
b3 = +0.01696179403
Vx2 = +21055.170 m/sec
Vy2 = +9377.163 m/sec
Vz2 = +673.258 m/sec
The state vector is now completed. I'll finish on this page with the derivation of the orbital elements, even though the procedure is in Lecture 2.
The orbital elements.
to2 = JD 2427283.386
X2 = +0.844612308
Y2 = -1.692376793
Z2 = +0.134872344
Vx2 = +21055.170 m/sec
Vy2 = +9377.163 m/sec
Vz2 = +673.258 m/sec
r2 = 1.896233031 AU = 2.836724238E+11 meters
V2 = 23058.722 m/sec
a = 3.285211608E+11 meters
The semimajor axis: a = 2.1960283 AU
{Note: The book value of the semimajor axis, a, is 2.2300732 AU.}
Angular momentum per unit mass.
hx = -3.596521613E+14 m2 sec-1
hy = +3.397544310E+14 m2 sec-1
hz = +6.515488154E+15 m2 sec-1
h = 6.534245835E+15 m2 sec-1
The eccentricity: e = 0.14387321
{Note: The book value of the eccentricity, e, is 0.15728660.}
The inclination: i = 4.34244 degrees
{Note: The book value of the inclination, i, is 4.34657 degrees.}
Longitude of the ascending node: W = 226.62959 degrees
{Note: The book value of the longitude of the ascending node, W, is 226.70986 degrees.}
True anomaly: f = 21.20895 degrees
Argument of the perihelion: w = 48.73692 degrees
{Note: The book value of the argument of perihelion, w, is 52.63858 degrees.}
ex = 0.1365170037
ey = 0.0454159545
Eccentric anomaly: u = 18.40105 degrees
Mean anomaly: M = 15.79891 degrees
Period: P = 1188.6536 days
Time of perihelion passage: T = JD 2427231.2208
{According to Dubyago, asteroid 1590 Tsiolkovskaja (1933 NA) was at perihelion at JD 2427236.0497, so our figure was about five days early.}
Note: Don't use this set of orbital elements in hopes of locating this asteroid. The data used is over 70 years old, and the orbit calculated isn't good enough to track it for that long. This procedure calculates a preliminary set of orbital elements which needs improving by a more advanced method using a greater number of observations.