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 ri
Where 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 - Xsi
yi = bi ri - Ysi
zi = ci ri - Zsi
K1 = { 2 [ r2 r3 + x2 x3 + y2 y3 + z2 z3 ] }1/2
K2 = { 2 [ r1 r3 + x1 x3 + y1 y3 + z1 z3 ] }1/2
K3 = { 2 [ r1 r2 + x1 x2 + y1 y2 + z1 z2 ] }1/2

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) hi

j2 = j1

Repeat
j3 = j2

j2 = j1 / ( 1 + j2)
Until | ( j2 - j3 ) / j3 | < 10-12

yi = 1 + (10/11) j2
n1 = no1 y2 / y1
n3 = no3 y2 / y3

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 - Xsi
yi = bi ri - Ysi
zi = ci ri - Zsi
Rotate the position vectors into ecliptic coordinates.

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.


Racist Celestial Mechanics
Jerry's Aryan Battle Page