Jenab
May 4th, 2005, 06:16 AM
To help me in understanding this procedure, I read the fifth chapter of The Determination of Orbits by A. D. Dubyago, as translated from Russian into English by the RAND Corporation. Much of the nomenclature used in this exposition is patterned after Dubyago.
Initial Data.
For i=1 to 3
The time of observation: t(i)
The position of the sun: Xs(i), Ys(i), Zs(i)
The unit vector in the direction of the planet: RA(i), DEC(i)
The position vectors are in local celestial coordinates.
Handy Constants.
k = 0.01720209895 (mean motion of Earth, radians per day)
A = 0.00577551833 (days required for light to travel 1 AU)
Unit vector in the direction of the planet with rectangular components.
a(i) = cos RA(i) cos DEC(i)
b(i) = sin RA(i) cos DEC(i)
c(i) = sin DEC(i)
First Approximation.
tau(1) = k {t(3)-t(2)}
tau(2) = k {t(3)-t(1)}
tau(3) = k {t(2)-t(1)}
nc(1) = tau(1)/tau(2)
nc(3) = tau(3)/tau(2)
nu(1) = tau(1) tau(3) {1 + nc(1)} / 6
nu(3) = tau(1) tau(3) {1 + nc(3)} / 6
D = a(2) { b(3) c(1) - b(1) c(3) } + b(2) { c(3) a(1) - c(1) a(3) } + c(2) { a(3) b(1) - a(1) b(3) }
For i=1 to 3
d(i) = Xs(i) { b(3) c(1) - b(1) c(3) } + Ys(i) { c(3) a(1) - c(1) a(3) } + Zs(i) { a(3) b(1) - a(1) b(3) }
For i=1 to 3
Re(i) = { Xs(i)^2 + Ys(i)^2 + Zs(i)^2 }^0.5
For i=1 to 3
q(i) = -2 { a(i) Xs(i) + b(i) Ys(i) + c(i) Zs(i) }
K0 = { d(2) - d(1) nc(1) - d(3) nc(3) } / D
L0 = { d(1) nu(1) + d(3) nu(3) } / D
Let r(2) be the distance from the sun to the planet at time 2
Let p(2) be the distance from Earth to the planet at time 2.
We must solve these two equations simultaneously for r(2) and p(2):
p(2) = K0 - L0 / r(2)^3
r(2) = { Re(2)^2 + q(2) p(2) + p(2)^2 }^0.5
This leads to an 8th degree polynomial in r(2):
f{r(2)} = r(2)^8 - { Re(2)^2 + q(2) K0 + K0^2 } r(2)^6 + L0 {q(2) + 2 K0} r(2)^3 - L0^2
f{r(2)} = 0
We will use Newton's method to get the answer.
df/dr(2) = 8 r(2)^7 - 6 { Re(2)^2 + q(2) K0 + K0^2 } r(2)^5 + 3 L0 {q(2) + 2 K0} r(2)^2
As an initial guess at r(2)...
r2(j=0) = 1.0
Then...
Repeat over j
r2(j+1) = r2(j) - f{r2(j)} / df/dr2(j)
Until abs{ r2(j+1) - r2(j) } < 1.0E-12
Assign to r(2) the converged value from the loop:
r(2) = r2(j+1)
p(2) = K0 - L0 / r(2)^3
n(1) = nc(1) + nu(1) / r(2)^3
n(3) = nc(3) + nu(3) / r(2)^3
Dubyago left a system of equations unsolved in his chapter, no doubt figuring that his readers wouldn't mind the exercise. I figured that you probably would mind, so I solved it for p(1) and p(3).
Q1 = n(1) Xs(1) - Xs(2) + n(3) Xs(3) + a(2) p(2)
Q2 = n(1) Ys(1) - Ys(2) + n(3) Ys(3) + b(2) p(2)
Q3 = n(1) Zs(1) - Zs(2) + n(3) Zs(3) + c(2) p(2)
Q4 = a(1) - a(3) c(1) / c(3)
Q5 = b(1) - b(3) a(1) / a(3)
Q6 = b(3) - b(1) a(3) / a(1)
Q7 = a(3) - a(1) c(3) / c(1)
p(1) = { [ Q1 - a(3) Q3 / c(3) ] / [ n(1) Q4 ] + [ Q2 - b(3) Q1 / a(3) ] / [n(1) Q5] } / 2
p(3) = { [ Q2 - b(1) Q1 / a(1) ] / [ n(3) Q6 ] + [ Q1 - a(1) Q3 / c(1) ] / [n(3) Q7] } / 2
r(1) = { Re(1)^2 + q(1) p(1) + p(1)^2 }^0.5
r(3) = { Re(3)^2 + q(3) p(3) + p(3)^2 }^0.5
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 planet 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
tc(i) = t(i) - A p(i)
Where A is the time (in days) required for light to travel 1 astronomical unit.
tau(1) = k {tc(3)-tc(2)}
tau(2) = k {tc(3)-tc(1)}
tau(3) = k {tc(2)-tc(1)}
nc(1) = tau(1)/tau(2)
nc(3) = tau(3)/tau(2)
Recursive Procedure for Successive Approximations.
For i=1 to 3
x(i) = a(i) p(i) - Xs(i)
y(i) = b(i) p(i) - Ys(i)
z(i) = c(i) p(i) - Zs(i)
K(1) = { 2 [ r(2) r(3) + x(2) x(3) + y(2) y(3) + z(2) z(3) ] }^0.5
K(2) = { 2 [ r(1) r(3) + x(1) x(3) + y(1) y(3) + z(1) z(3) ] }^0.5
K(3) = { 2 [ r(1) r(2) + x(1) x(2) + y(1) y(2) + z(1) z(2) ] }^0.5
h(1) = tau(1)^2 / { K(1)^2 [ K(1)/3 + ( r(2)+r(3) )/2 ] }
h(2) = tau(2)^2 / { K(2)^2 [ K(2)/3 + ( r(1)+r(3) )/2 ] }
h(3) = tau(3)^2 / { K(3)^2 [ K(3)/3 + ( r(1)+r(2) )/2 ] }
For i=1 to 3
Begin
Queasy1 = (11/9) h(i)
Queasy2 = Queasy1
Repeat
Queasy3 = Queasy2
Queasy2 = Queasy1 / ( 1 + Queasy2)
Until abs( Queasy2 - Queasy3 ) / Queasy3 < 1E-12;
Yippy(i) = 1 + (10/11) Queasy2
End
n(1) = nc(1) yippy(2) / yippy(1)
n(3) = nc(3) yippy(2) / yippy(3)
nu(1) = nc(1) r(2)^3 { yippy(2) / yippy(1) - 1 }
nu(3) = nc(3) r(2)^3 { yippy(2) / yippy(3) - 1 }
K0 = { d(2) - d(1) nc(1) - d(3) nc(3) } / D
L0 = { d(1) nu(1) + d(3) nu(3) } / D
p(2) = K0 - L0 / r(2)^3
r(2) = { Re(2)^2 + q(2) p(2) + p(2)^2 }^0.5
f{r(2)} = r(2)^8 - { Re(2)^2 + q(2) K0 + K0^2 } r(2)^6 + L0 {q(2) + 2 K0} r(2)^3 - L0^2
f{r(2)} = 0
df/dr(2) = 8 r(2)^7 - 6 { Re(2)^2 + q(2) K0 + K0^2 } r(2)^5 + 3 L0 {q(2) + 2 K0} r(2)^2
The customary initial guess at r(2)...
r2(j=0) = 1.0
Repeat over j
r2(j+1) = r2(j) - f{r2(j)} / df/dr2(j)
Until abs{ r2(j+1) - r2(j) } < 1.0E-12
Assign to r(2) the converged value from the loop:
r(2) = r2(j+1)
p(2) = K0 - L0 / r(2)^3
Q1 = n(1) Xs(1) - Xs(2) + n(3) Xs(3) + a(2) p(2)
Q2 = n(1) Ys(1) - Ys(2) + n(3) Ys(3) + b(2) p(2)
Q3 = n(1) Zs(1) - Zs(2) + n(3) Zs(3) + c(2) p(2)
Q4 = a(1) - a(3) c(1) / c(3)
Q5 = b(1) - b(3) a(1) / a(3)
Q6 = b(3) - b(1) a(3) / a(1)
Q7 = a(3) - a(1) c(3) / c(1)
p(1) = { [ Q1 - a(3) Q3 / c(3) ] / [ n(1) Q4 ] + [ Q2 - b(3) Q1 / a(3) ] / [n(1) Q5] } / 2
p(3) = { [ Q2 - b(1) Q1 / a(1) ] / [ n(3) Q6 ] + [ Q1 - a(1) Q3 / c(1) ] / [n(3) Q7] } / 2
r(1) = { Re(1)^2 + q(1) p(1) + p(1)^2 }^0.5
r(3) = { Re(3)^2 + q(3) p(3) + p(3)^2 }^0.5
Repeat this whole section (Recursive Procedure for Successive Approximations) until your values for r(i) converge.
Higher Approximations.
You see how it works. You just keep taking p(i) from the end of the latest approximation and plugging it back into the top of the next approximation and repeating the math with the improved numbers. You keep repeating the recursive section until all the values for r(i) have converged.
Jerry Abbott
Initial Data.
For i=1 to 3
The time of observation: t(i)
The position of the sun: Xs(i), Ys(i), Zs(i)
The unit vector in the direction of the planet: RA(i), DEC(i)
The position vectors are in local celestial coordinates.
Handy Constants.
k = 0.01720209895 (mean motion of Earth, radians per day)
A = 0.00577551833 (days required for light to travel 1 AU)
Unit vector in the direction of the planet with rectangular components.
a(i) = cos RA(i) cos DEC(i)
b(i) = sin RA(i) cos DEC(i)
c(i) = sin DEC(i)
First Approximation.
tau(1) = k {t(3)-t(2)}
tau(2) = k {t(3)-t(1)}
tau(3) = k {t(2)-t(1)}
nc(1) = tau(1)/tau(2)
nc(3) = tau(3)/tau(2)
nu(1) = tau(1) tau(3) {1 + nc(1)} / 6
nu(3) = tau(1) tau(3) {1 + nc(3)} / 6
D = a(2) { b(3) c(1) - b(1) c(3) } + b(2) { c(3) a(1) - c(1) a(3) } + c(2) { a(3) b(1) - a(1) b(3) }
For i=1 to 3
d(i) = Xs(i) { b(3) c(1) - b(1) c(3) } + Ys(i) { c(3) a(1) - c(1) a(3) } + Zs(i) { a(3) b(1) - a(1) b(3) }
For i=1 to 3
Re(i) = { Xs(i)^2 + Ys(i)^2 + Zs(i)^2 }^0.5
For i=1 to 3
q(i) = -2 { a(i) Xs(i) + b(i) Ys(i) + c(i) Zs(i) }
K0 = { d(2) - d(1) nc(1) - d(3) nc(3) } / D
L0 = { d(1) nu(1) + d(3) nu(3) } / D
Let r(2) be the distance from the sun to the planet at time 2
Let p(2) be the distance from Earth to the planet at time 2.
We must solve these two equations simultaneously for r(2) and p(2):
p(2) = K0 - L0 / r(2)^3
r(2) = { Re(2)^2 + q(2) p(2) + p(2)^2 }^0.5
This leads to an 8th degree polynomial in r(2):
f{r(2)} = r(2)^8 - { Re(2)^2 + q(2) K0 + K0^2 } r(2)^6 + L0 {q(2) + 2 K0} r(2)^3 - L0^2
f{r(2)} = 0
We will use Newton's method to get the answer.
df/dr(2) = 8 r(2)^7 - 6 { Re(2)^2 + q(2) K0 + K0^2 } r(2)^5 + 3 L0 {q(2) + 2 K0} r(2)^2
As an initial guess at r(2)...
r2(j=0) = 1.0
Then...
Repeat over j
r2(j+1) = r2(j) - f{r2(j)} / df/dr2(j)
Until abs{ r2(j+1) - r2(j) } < 1.0E-12
Assign to r(2) the converged value from the loop:
r(2) = r2(j+1)
p(2) = K0 - L0 / r(2)^3
n(1) = nc(1) + nu(1) / r(2)^3
n(3) = nc(3) + nu(3) / r(2)^3
Dubyago left a system of equations unsolved in his chapter, no doubt figuring that his readers wouldn't mind the exercise. I figured that you probably would mind, so I solved it for p(1) and p(3).
Q1 = n(1) Xs(1) - Xs(2) + n(3) Xs(3) + a(2) p(2)
Q2 = n(1) Ys(1) - Ys(2) + n(3) Ys(3) + b(2) p(2)
Q3 = n(1) Zs(1) - Zs(2) + n(3) Zs(3) + c(2) p(2)
Q4 = a(1) - a(3) c(1) / c(3)
Q5 = b(1) - b(3) a(1) / a(3)
Q6 = b(3) - b(1) a(3) / a(1)
Q7 = a(3) - a(1) c(3) / c(1)
p(1) = { [ Q1 - a(3) Q3 / c(3) ] / [ n(1) Q4 ] + [ Q2 - b(3) Q1 / a(3) ] / [n(1) Q5] } / 2
p(3) = { [ Q2 - b(1) Q1 / a(1) ] / [ n(3) Q6 ] + [ Q1 - a(1) Q3 / c(1) ] / [n(3) Q7] } / 2
r(1) = { Re(1)^2 + q(1) p(1) + p(1)^2 }^0.5
r(3) = { Re(3)^2 + q(3) p(3) + p(3)^2 }^0.5
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 planet 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
tc(i) = t(i) - A p(i)
Where A is the time (in days) required for light to travel 1 astronomical unit.
tau(1) = k {tc(3)-tc(2)}
tau(2) = k {tc(3)-tc(1)}
tau(3) = k {tc(2)-tc(1)}
nc(1) = tau(1)/tau(2)
nc(3) = tau(3)/tau(2)
Recursive Procedure for Successive Approximations.
For i=1 to 3
x(i) = a(i) p(i) - Xs(i)
y(i) = b(i) p(i) - Ys(i)
z(i) = c(i) p(i) - Zs(i)
K(1) = { 2 [ r(2) r(3) + x(2) x(3) + y(2) y(3) + z(2) z(3) ] }^0.5
K(2) = { 2 [ r(1) r(3) + x(1) x(3) + y(1) y(3) + z(1) z(3) ] }^0.5
K(3) = { 2 [ r(1) r(2) + x(1) x(2) + y(1) y(2) + z(1) z(2) ] }^0.5
h(1) = tau(1)^2 / { K(1)^2 [ K(1)/3 + ( r(2)+r(3) )/2 ] }
h(2) = tau(2)^2 / { K(2)^2 [ K(2)/3 + ( r(1)+r(3) )/2 ] }
h(3) = tau(3)^2 / { K(3)^2 [ K(3)/3 + ( r(1)+r(2) )/2 ] }
For i=1 to 3
Begin
Queasy1 = (11/9) h(i)
Queasy2 = Queasy1
Repeat
Queasy3 = Queasy2
Queasy2 = Queasy1 / ( 1 + Queasy2)
Until abs( Queasy2 - Queasy3 ) / Queasy3 < 1E-12;
Yippy(i) = 1 + (10/11) Queasy2
End
n(1) = nc(1) yippy(2) / yippy(1)
n(3) = nc(3) yippy(2) / yippy(3)
nu(1) = nc(1) r(2)^3 { yippy(2) / yippy(1) - 1 }
nu(3) = nc(3) r(2)^3 { yippy(2) / yippy(3) - 1 }
K0 = { d(2) - d(1) nc(1) - d(3) nc(3) } / D
L0 = { d(1) nu(1) + d(3) nu(3) } / D
p(2) = K0 - L0 / r(2)^3
r(2) = { Re(2)^2 + q(2) p(2) + p(2)^2 }^0.5
f{r(2)} = r(2)^8 - { Re(2)^2 + q(2) K0 + K0^2 } r(2)^6 + L0 {q(2) + 2 K0} r(2)^3 - L0^2
f{r(2)} = 0
df/dr(2) = 8 r(2)^7 - 6 { Re(2)^2 + q(2) K0 + K0^2 } r(2)^5 + 3 L0 {q(2) + 2 K0} r(2)^2
The customary initial guess at r(2)...
r2(j=0) = 1.0
Repeat over j
r2(j+1) = r2(j) - f{r2(j)} / df/dr2(j)
Until abs{ r2(j+1) - r2(j) } < 1.0E-12
Assign to r(2) the converged value from the loop:
r(2) = r2(j+1)
p(2) = K0 - L0 / r(2)^3
Q1 = n(1) Xs(1) - Xs(2) + n(3) Xs(3) + a(2) p(2)
Q2 = n(1) Ys(1) - Ys(2) + n(3) Ys(3) + b(2) p(2)
Q3 = n(1) Zs(1) - Zs(2) + n(3) Zs(3) + c(2) p(2)
Q4 = a(1) - a(3) c(1) / c(3)
Q5 = b(1) - b(3) a(1) / a(3)
Q6 = b(3) - b(1) a(3) / a(1)
Q7 = a(3) - a(1) c(3) / c(1)
p(1) = { [ Q1 - a(3) Q3 / c(3) ] / [ n(1) Q4 ] + [ Q2 - b(3) Q1 / a(3) ] / [n(1) Q5] } / 2
p(3) = { [ Q2 - b(1) Q1 / a(1) ] / [ n(3) Q6 ] + [ Q1 - a(1) Q3 / c(1) ] / [n(3) Q7] } / 2
r(1) = { Re(1)^2 + q(1) p(1) + p(1)^2 }^0.5
r(3) = { Re(3)^2 + q(3) p(3) + p(3)^2 }^0.5
Repeat this whole section (Recursive Procedure for Successive Approximations) until your values for r(i) converge.
Higher Approximations.
You see how it works. You just keep taking p(i) from the end of the latest approximation and plugging it back into the top of the next approximation and repeating the math with the improved numbers. You keep repeating the recursive section until all the values for r(i) have converged.
Jerry Abbott