-This zip file contains:
1-A binary file ORB48G ( #46744d / 16185 bytes ) for the HP48G/GX
2-A binary file ORB50G ( #13146d / 16328.5 bytes ) for the HP50G
3-A text file ORB50 with the same programs as ORB50G
4-A 3x6 matrix for the example in GAUSSHG in the
txt file DATA1
5-A 6x6 matrix for the example in HERGET in the
txt file DATA2
6-This html page
-ORB48G & ORB50G are directories.
Notes:
-In all the examples, I've used an HP48GX.
-Though the programs are almost identical, the results given by an
HP50
may be slightly different from the results given by an HP48.
-Execution times are of course smaller with an HP50.
Warning:
-Flags 1 , 2 , 4 are used in these programs.
-There are indicators for these flags on the HP48 but not on the HP50
-So, check the state of these flags carefully if you have an HP50 !
1 CF = Standard Ecliptic J2000.0 = 2000/01/01
12h TT
1 SF = Ecliptic of the Date
4 CF = Gregorian Calendar
4 SF = Julian Calendar
-Flag 2 is also used in the p-iteration method ( cf RR->V )
2 CF = Angle ( Comet Position1 - Sun - Comet Position2
) < 180°
2 SF = Angle ( Comet Position1 - Sun - Comet Position2
) > 180°
Functions | Description |
GAUSSHG
SUN DT->T J2000 J->DAT T PRE0 SUN SP SCOS TADXYZ TLBXYZ HERGET IMPROVE EPS RR->V R V RV->EL RV->R T q E I w W n p a IwW PHEM VP KPL S->R R->S EE AD->LB OBL P->R R->P KG OUT |
Gauss-Herrick-Gibbs Preliminary Orbit Determination
Directory = Sun Date & Time -> T Date -> Number of days since 2000/01/01 12h TT Number of days -> Date Time in millenia since J2000.0 Correction for precession Position of the Sun Sum of Poisson series Sum of trigonometric series DATA = Time-Rightascension-Declination-Rectangular Coordinates DATA = Time-Longitude-Latitude-Rectangular Coordinates Orbit Determination by the method of Herget ( >3 observations ) Improving an Orbit Estimation of the error 2 positions -> Velocity1 ( p-iteration method ) Vector-Position Vector-Velocity Position+Velocity -> Orbital Element Position1+Velocity1 -> Position2 Instant of passage in Perihelion Perihelion Distance Eccentricity Inclination Argument of the Perihelion Longitude of the Ascending Node Mean Motion Parameter Semi-major Axis Reduction of Ecliptic Elements from one Equinox to another one Parabolic-Hyperbolic-Elliptic Motion M , e#1 ---> True Anomaly v & r/q Kepler's Equation: M , e#1 ---> Eccentric anomaly E Spherical->Rectangular Conversion Rectangular->Spherical Conversion Equatorial<->Ecliptic Conversions Takes TADXYZ and creates TLBXYZ Obliquity of the Ecliptic Polar->Rectangular Conversion Rectangular->Polar Conversion Gauss Gravitational Constant = 0.01720209895 Places the orbital elements T q E I w W in level 6-5-4-3-2-1 |
Gauss-Herrick-Gibbs Preliminary Orbit Determination
-Given 3 observations of an asteroid, comet... "GAUSSHG" returns the orbital elements of its orbit.
-Gauss' method computes approximate values of T , q , e , i ,
omega , OMEGA from 3 observations of a comet.
-The method fails if the inclination i = 0 or is very small.
-With the Herrich-Gibbs refinement, the method becomes 4th order in time !
-At an instant t1 the right ascension of the
comet = RA1 its declination = d1 and
the rectangular ecliptic coordinates of the Sun are X1
Y1 Z1
-At an instant t2 the right ascension of the
comet = RA2 its declination = d2 and
the rectangular ecliptic coordinates of the Sun are X2
Y2 Z2
-At an instant t3 the right ascension of the
comet = RA3 its declination = d3 and
the rectangular ecliptic coordinates of the Sun are X3
Y3 Z3
-We must have t1 < t2 < t3
>>> The results will be more accurate if t3 - t2 is equal ( or nearly equal ) to t2 - t1 ( this value is often of the order of a few days )
-Let
li
= cos RAi cos di
mi
= sin obl sin di + cos obl cos di sin RAi
where obl is the obliquity of the ecliptic, i =
1 , 2 , 3
ni
= cos obl sin di - sin obl cos di sin RAi
-Let Di = distance Earth-Comet at the instant ti , ui ( li , mi , ni ) , -Ri = position vector of the Earth , ri = position vector of the Comet
ri = Di ui - Ri ( || ui || = 1 )
-If we neglect the planetary perturbations, the 3 position vectors ri lie in the same plane, so there are coefficients c1 , c3 such that
r2 = c1 r1 + c3 r3 and likewise for the velocity at the second instant: V2 = -d1 r1 + d2 r2 + d3 r3
-One can prove that, approximately: ci = Ai + Bi / r23 ( 1 + B2 / r23 ) ( i = 1 , 3 ) and di = Gi + Hi / ri3 ( i = 1 , 2 , 3 )
where A1 = (t3
- t2)/(t3 - t1) , B1
= k2A1 [ (t3 - t1)2
- (t3 - t2)2 ]/6
with k = 0.01720209895 = Gaussian gravitational
constant
A3 = (t2 - t1)/(t3 - t1)
, B3 = k2A3 [ (t3
- t1)2 - (t2 - t1)2
]/6
and G1
= (t3 - t2)/[(t3 - t1)(t2
- t1)] G3 = (t2
- t1)/[(t3 - t1)(t3 - t2)]
G2 = G1 - G3
H1 = k2(t3 - t2)/12
H3 = k2(t2 - t1)/12
H2 = H1 - H3
-Let A( A1 X1 - X2
+ A3 X3 , A1 Y1 - Y2
+ A3 Y3 , A1 Z1 - Z2
+ A3 Z3 )
and B( B1 X1 + B3
X3 , B1 Y1 + B3 Y3
, B1 Z1 + B3 Z3 )
P1 = A.(
u2
x u3 )/D
Q1 = B.( u2 x u3
)/D
P2 = A.(
u1
x u3 )/D
Q2 = B.( u1 x u3
)/D where
D = u1.( u2 x u3
) ( .
= dot product , x = cross product )
P3 = A.(
u1
x u2 )/D
Q3 = B.( u1 x u2
)/D
-The distance Earth-Comet at the central instant is found by solving the equation
D2 = P2 + Q2 / r23 ( 1 + B2 / r23 ) with r2 = D22 - 2 D2 ( l2 X2 + m2 Y2 + n2 Z2 ) + X22 + Y22 + Z22
-Then, D1 = ( P1 + Q1 / r23
( 1 + B2 / r23 ) )/( A1 + B1
/ r23 ( 1 + B2 / r23
) )
and D3 = ( P3 + Q3
/ r23 ( 1 + B2 / r23
) )/( A3 + B3 / r23 ( 1 + B2
/ r23 ) )
and the rectangular ecliptic coordinates of the comet at the 3 instants are:
xi
= li Di - Xi
yi
= mi Di - Yi
i = 1 , 2 , 3 so we know
the 3 vectors ri's and the velocity V2
= -d1 r1 + d2r2
+ d3 r3 may be computed
zi
= ni Di - Zi
-So the position and velocity vectors at the second instant
are computed and we can call RV->EL
>>>> First store the required data in 'TADXYZ'
and then, execute GAUSSHG
STACK | INPUTS | OUTPUTS |
Level 7 | / | D2 |
Level 6 | / | T |
Level 5 | / | q |
Level 4 | / | E |
Level 3 | / | I |
Level 2 | / | w |
Level 1 | D | W |
Where D is an estimtion of the distance Sun-Comet at the 2nd instant and D2 the computed distance Earth-Comet at this instant.
Example: Comet C/2014 AA52 Catalina, on 2015/02/01 0h TT , 2015/02/10 0h TT , 2015/02/20 0h , astrometric coordinates ( /J2000 ):
2015/02/01 0h 2015/02/10 0h 2015/02/20 0h
t
5509.5
5518.5
5528.5
days
RA 1h07m43s058
0h58m40s151
0h53m53s415
Decl -57°17'23"42
-52°05'21"91
-46°54'15"67
X
0.653892160
0.763553245
0.863088915
Astronomical Units X Y Z
are given by the SOLEX
Y
-0.736974521
-0.624900515
-0.482202751
Astronomical Units software ( cf reference
[1] )
Z
0.000019390
0.000019018
0.000014378
Astronomical Units
-These data are the first 3 rows of the matrix in 'TADXYZ': each row = t RA Decl X Y Z )
>>> So, the columns above = the rows in 'TADXYZ'
-Store the matrix DATA1 in the variable 'TADXYZ'
[[ 5509.5 1.0743058 -57.172342 .65389216 -.736974521 .000019390 ]
[ 5518.5 .5840151 -52.052191 .763553245 -.624900515 .000019018
]
[ 5528.5 .5353415 -46.541567 .863088915 -.482202751 .000014378
]]
-If you choose D = 3 AU
1 CF 3 GAUSS >>>> D2 = 2.403691 ---Execution time = 16s--- with an HP48GX
T = 5536.18831 = 2015/02/27.6883 TT
q = 2.002315
e = 0.999457
i = 105°2133
omega = -67°7290
OMEGA = -29°5133
and we get in the variables 'n' 'P' 'a'
n = 0.000004407 deg/d
P = 4.003542
a = 3684.26703
Notes:
-During the calculation, the HP-48 solves an equation with the nuilt-in
function ROOT
-If a negative solution is found for D, the program stops and displays:
Error: Bad Guess(es)
-Place another value in level 1 and press GAUSSHG again
-In some cases, the problem may have 2 or even 3 possible solutions
-Other observations are required to choose the correct solution.
-Remember that R & V are calculated at the second instant of the DATA in 'TADXYZ'
-The algorithm is very sensitive to roudoff-errors
Time in millenia since J2000.0
DT->T takes the date in level 2 and the time in level 1
and calculates the time in millenia since J2000.0 i-e 2000/01/01
12h TT
STACK | INPUTS | OUTPUTS |
Level 2 | YYYY.MNDD | / |
Level 1 | HH.MNSS | / |
Example: On 2015/05/31 at 12h41m24s77 TT
4 CF
2015.0531 ENTER
12.412477
DT->T stores 1.54114408184 E-2
in 'T'
Warning:
-If flag 4 is clear, the date are Gregorian dates
-If flag 4 is set, the dates are Julian dates.
Date -> Number of days since 2000/01/01 12h TT
STACK | INPUT | OUTPUT |
Level 1 | YYYY.MNDD | days |
Example: On 2015/05/31 at 18 h
4 CF 2015.053175
J2000 returns 5629.25
Warning:
-If flag 4 is clear, the date are Gregorian dates
-If flag 4 is set, the dates are Julian dates.
J->DAT performs the reverse operation
STACK | INPUT | OUTPUT |
Level 1 | days | YYYY.MNDD |
Example: 5629.25
J->DAT >>>> 2015.053175
Warning:
-If flag 4 is clear, the date are Gregorian dates
-If flag 4 is set, the dates are Julian dates.
PRE0 takes the ecliptic longitude & latitude at J2000.0
( i-e on 2000/01/01 12h TT )
and returns the ecliptic longitude & latitude of the date
specifyed by the value in 'T' ( in millenia since J2000.0 )
STACK | INPUTS | OUTPUTS |
Level 2 | L2000 | L |
Level 1 | B2000 | B |
Where all the angles are in decimal degrees
Example: The eclptic coordinates at the standard epoch J2000.0 are L2000 = 49°7891 B2000 = 24°1279
-Calculate L & B for T = 1000 julian years since J2000 ( i-e 3000/01/08 12 TT )
1 'T' STO
49.7891 ENTER
24.1279 PRE0
>>>> L = 63°757208
B = 24°236957
-This program is not very useful if you employ a very accurate software
like SOLEX ( cf reference [1] )
-Otherwise, SUN will give you the ecliptic rectangular coordinates
of the Sun with an error smaller than E-6 AU for the time span [1900-2100]
and still a good precision several millenia around J2000.
1 CF = Coordinate with respect to the standard
ecliptic J2000
1 SF = ------------------------------- ecliptic
of the date
STACK | INPUTS | OUTPUTS |
Level 3 | / | X |
Level 2 | / | Y |
Level 1 | / | Z |
Store T in the variable 'T' before executing SUN , X Y Z are expressed in Astronomical Units ( 1 AU = 149597870.7 km )
Example: On 2100/04/04 21h41m37s TT
2100.0404 ENTER
21.4137
DT->T
( T = 0.100255725943 is now stored in 'T' )
• Standard ecliptic J2000
1 CF SUN
gives X = 0.9710287
AU
---Execution time = 8.0s--- with an HP48GX
Y = 0.2386091 AU
Z = -0.0000776 AU
• Ecliptic of the Date
1 SF SUN
gives X = 0.9649056
AU
---Execution time = 8.4s--- with an HP48GX
Y = 0.2622752 AU
Z = -0.0000026 AU
Warning:
-If flag 4 is clear, the date are Gregorian dates
-If flag 4 is set, the dates are Julian dates.
DATA = Time-Right-ascension-Declination-Rectangular
Coordinates
'TADXYZ' must contain a nx6 matrix ( n = number of observations )
[ [ t1 RA1 Decl1 X1 Y1
Z1 ]
[ t2 RA2 Decl2 X2 Y2
Z2 ]
[ t3 RA3 Decl3 X3
Y3 Z3 ]
at least 3 observations
..................................................
[ tn RAn Decln Xn Yn Zn ] ]
Where t must be expressed in days since J2000.0 =
2000/01/01 12h TT
RA --------------------
hh.mnss
Decl --------------------
sexagesimal degrees ° ' ""
X Y Z = rectangular
ecliptic coordinates of the Sun expressed in Astronomical Units ( 1AU =
149597870.7 km )
DATA = Time-Longitude-Latitude-Rectangular Coordinates
The DATA in 'TADXYZ' are automatically transformed in 'TLBXYZ' by AD->LB
Orbit Determination by the method of Herget ( 3 or more
than 3 observations )
-Herget's method regards the 1st and last observations as exact.
-Assuming there are n observations, you have to give an estimate of
the distances Earth-Asteroid at the first and last instants D1
& Dn
and an estimate of the parameter p.
-So, the HP-48 can compute the position-vectors ri for i = 2 , 3 , .... , n-1 thanks to "RR-V" & "RV-R"
-For i = 2 , .... , n-1 the dot-products
Pi = ( ri + Ri
).Ai
where Ri = rectangular
ecliptic coordinates of the Sun
Li = eclptic longitude
Qi = ( ri + Ri
).Di
Ai = ( -Sin Li , Cos Li , 0 )
Di
= ( -Sin bi Cos Li , -Sin bi Sin Li
, Cos bi )
bi = ecliptic latitude
( Herget uses the right-ascensions & declinations instead of the longitudes & latitudes )
-If there were no errors, we'd have Pi = Qi
= 0
-To find the correct D1 & Dn , we solve non-linear
systems of ( 2n-4 ) equations in 2 unknowns by Newton's method &
least-squares approximation.
(¶Pi/¶D1)DD1
+ (¶Pi/¶Dn)DDn
= - Pi
(¶Qi/¶D1)DD1
+ (¶Qi/¶Dn)DDn
= - Qi
-The partial derivatives are approximated by formulas of the type: ¶f/¶x ~ [ f(x+h) - f(x) ] / h
Warning:
Clear F02 if the angle ( r1
; rn ) < 180°
Set F02 if the angle ( r1
; rn ) > 180°
STACK | INPUTS | OUTPUTS1 | OUTPUTS2 | OUTPUTS3 ... | OUTPUT |
Level 4 | / | / | D'1 | D"1 | orbital elements |
Level 3 | h | / | D'n | D"n | orbital elements |
Level 2 | D1 | D'1 | D"1 | D"'1 ... | orbital elements |
Level 1 | Dn | D'n | D"n | D"'n ... | orbital elements |
Where D1 & Dn are
1st guesses of the distance Earth-Comet at the first & last instant
( D is denoted RHO on the stack )
h = a small value to approximate the partial derivatives ( usually
0.01 AU works well )
HERGET also uses the value in the variable 'P' as a 1st guess of the parameter
Example: Let's take again Comet C/2014 AA52 Catalina, astrometric coordinates ( /J2000 ) with the 6 observations below,
where the right-ascensions have been rounded to 0.1 second and
the declinations to 1 arcsecond
t
5509.5
5518.5
5528.5
5537.5
5546.5
5556.5
RA
1h07m43s1
0h58m40s2
0h53m53s4
0h52m18s7 0h52m13s9
0h53m10s1
Decl -57°17'23"
-52°05'22"
-46°54'16"
-42°45'51" -39°04'47"
-35°27'29"
X
0.653892160
0.763553245
0.863088915
0.930110731 0.974274312
0.995480570
Y
-0.736974521
-0.624900515
-0.482202751 -0.341009813
-0.191511107 -0.020002821
Z
0.000019390
0.000019018
0.000014378 0.000005490
0.000004634 -0.000001613
1st Step Store the matrix
in DATA2 in the variable 'TADXYZ'
[[ 5509.5 1.07431 -57.1723 .65389216 -.736974521 .00001939 ]
[ 5518.5 .58402 -52.0522 .763553245 -.624900515 .000019018 ]
[ 5528.5 .53534 -46.5416 .863088915 -.482202751 .000014378 ]
[ 5537.5 .52187 -42.4551 .930110731 -.341009813 .00000549 ]
[ 5546.5 .52139 -39.0447 .974274312 -.191511107 .000004634 ]
[ 5556.5 .53101 -35.2729 .99548057 -.020002821 -.000001613 ]]
2nd Step Before using "HERGET" , let's execute "GAUSSHG" with the first 3 observations
-With D = 3 in Level 1 , GAUSSHG yields: D2 = 2.406895 AU
T = 5535.913678 = 2015/02/27.4137 TT
q = 2.005546
e = 1.007843
i = 105°1904
omega = -67°8108
OMEGA = -29°4423
and we get in the variable 'P' P = 4.026821 AU
3rd Step Now, we are ready to use 'HERGET'
-A good choice for h is often 0.01 AU
-The results given by "GAUSSHG" suggest
D1 = Dn = 2.407 thus,
2 CF
0.01
ENTER
2.407
ENTER HERGET >>>> RHO1' = 2.324644316
---Execution time = 2m45s--- ( with
an HP48GX )
RHON' = 2.724885559
-To get the next approximation(s), press left shift CONT without clearing the stack , it yields
CONT >>>> RHO1" = 2.315488110
RHON" = 2.715577781
CONT >>>> RHO1"' = 2.315402260
RHON"' = 2.715477404
CONT >>>> RHO1"" = 2.315401995
RHON"" = 2.715477097
-Here, the new position- & velocity- vectors have not yet been calculated.
4th Step If you want to stop the iterations and get the orbital elements, clear the stack and press left shift CONT
CLEAR CONT >>>> T = 5536.16433 = 2015/02/27.6643
and
q = 2.002984
e = 1.000995
I = 105°20839
omega = -67°7296 = 292°2704
OMEGA = -29°4981 = 330°5109
Notes:
-The last D-values are saved in level 8 and level 7
-The method would also converge with D1 = Dn
= 2 , but better guesses will reduce the number of iterations.
-Remember that R & V are calculated at the first instant
of the DATA in 'TADXYZ'
-Of course, the execution time increases with the number of observations
Comparison with the exact elements:
-The exact orbital elements - given for instance by the imcce - are
T = 2015 feb 27,64787 TT ±0,00000 TT = 5536.14787 TT
q = 2,0025966 ±0,0000008
e = 1,0004430 ±0,0000019
i = 105,2112331° ±0,0000262°
omega = 292,2632213°
±0,0000207°
OMEGA = 330,4930204° ±0,0000259°
-The JPL gives almost the same results:
Element Value Uncertainty (1-sigma) Units
T
2015-Feb-27.61499079
0.00040407
q
2.002902188984628
3.7736e-06
AU
e
1.000563179802131
6.0681e-06
i
105.207183638451
3.7436e-05
deg
peri
292.2449325905247
0.00018586
deg
node 330.4895894198529
2.3831e-05
deg
-After finding a preliminary orbit determination, you might want to improve your results.
-IMPROVE uses the values in 'R' & 'V' at a given time t
to evaluate the variation in the positions that results if a
coordinate of R , say x , is replaced by x+h
and similarly if a coordinate of V , say Vx
, is replaced by Vx + h' ( this program uses
h' = h/100 )
-The partial derivatives are approximated by formulas of the type df/dx ~ [ f(x+h) - f(x) ] / h
-This leads to an overdetermined linear system which is solved by a least-square method, via the built-in function LSQ
-Gradually, R & V are improved until you judge that
the changes become negligible.
-Finally, RV->EL is called to give the orbital elements.
STACK | INPUT | OUTPUT | FINAL OUTPUT |
Level 2 | t | / | orbital elements |
Level 1 | h | [dx dy dz dvx dvy dvz ] | orbital elements |
Where t is the number of days since J2000 for
which 'R' & 'V' have been calculated
h is a small increment to approximate the partial derivatives ( usually
h = 0.01 AU )
and [dx dy dz dvx dvy dvz
] is the last correction to the vectors R & V
Example: If we start with the results given by GAUSSHG at the 2nd step of HERGET
5518.5 ENTER
0.01 IMPROVE
>>>> [ -1.511 E-3 4.297 E-4 1.990 E-3 -2.611
E-5 -4.082 E-6 -5.187 E-6 ] ---Execution
time = 131s--- ( HP48GX )
-Press left shiftt CONT without clearing the stack to get the next improvement(s)
CONT >>>> [ -2.970 E-5 1.218 E-5 5.246 E-5 -6.838 E-7 -1.787 E-7 -8.764 E-8 ]
CONT >>>> [ -5.093 E-7 2.251 E-7 9.925 E-7 -1.329 E-8 -3.266 E-9 -1.025 E-9 ]
-If you think the next improvement would be negligible, clear the stack and CONT
CLEAR CONT >>>> T = 5536.17285 = 2015/02/27.6729
and
q = 2.002883
e = 1.000748
I = 105°20911
omega = -67°7271 = 292°2729
OMEGA = -29°5004 = 330°4996
Note:
-Of course, the execution time increases with the number of observations
-EPS calculates the square-root of the sum of the squares of the angular
separations
between the observed positions and the calculated positions (
in decimal degrees ).
-We assume that 'R' & 'V' contain the position- & velocity-
vectors at the instant ( in days since J2000.0 ) specified in level 1
and that 'TLBXYZ' contains the required data.
STACK | INPUT | OUTPUT |
Level 1 | t | eps |
Where t is the number of days since J2000 for which 'R' & 'V' have been calculated
Examples:
1-With the result found by GAUSSHG at the 2nd step of HERGET,
5518.5 EPS gives 2.174 E-3 deg = 7"827
2-With the results finally given by HERGET,
5509.5 EPS returns 2.581 E-4 deg = 0"929
3-With IMPROVE in the paragraph above,
5518.5 EPS yields 2.538 E-4 deg = 0"914 only slightly better than Herget's results
4-With the 1st orbital elements at the top of this page with GAUSSHG
- which were found with much more accurate data -
but compared to the 6 observations in DATA2
5518.5 EPS >>> 5.699
E-4 deg = 2"052
Position1+Velocity1 -> Position2
-We could use RV->EL and PHEM but in order to avoid
a possible loss of accuracy if the eccentricity is very close to 1,
"RV-R" employs the universal variable x to perform the
calculations ( cf reference [2] )
-We solve the equation: f(x) = x3 S(z) + ( r.V / k ) x2 C(z) + r x ( 1 - z S(z) ) - t k = 0 by the method of Newton
here, z = x2 / a where a = semi-major axis 1 / a = 2 / r - V2 / k2
t = ( t2 - t1 ) and k = 0.01720209895 = Gauss gravitational constant
C(z) = ( 1 - Cos z1/2 ) / z = ( 1 - Cosh (-z)1/2 ) / z S(z) = ( z1/2 - Sin (z1/2) ) / ( z3/2) = ( Sinh (-z)1/2 - (-z)1/2 ) / (-z)3/2
-After founding x , we have
f = 1 - x2 C(z) / r
g = t - x3 S(z) / k
and r' = f r + g V
STACK | INPUT | OUTPUT |
Level 1 | t2-t1 | R2 |
Example: R1 = [ 0.16 , 1.38 , 0.24 ] V1 = [ 0.015 , 0.01 , 0.001 ] Find the position 100 days later
-Store these 2 vectors in the variables 'R' & 'V' respectively
100 RV->R returns R2
= [ 1.50929963708 , 1.91954203011 , 0.265117222709 ] in level
1
-We solve Lambert problem: given 2 position-vectors r1
& r2 at different instants t1
& t2
"RR-V" stores the velocity vector V1
at the first instant in the variable 'V'
-It uses an iteration method called the method of Herrick & Liu or p-iteration method ( cf reference [3] )
>>> Flag F02 must be cleared if the angle ( r1
; r2 ) < 180°
>>> Flag F02 must be set if the angle ( r1
; r2 ) > 180°
-Let C = Cos ( v2 - v1 ) = ( r1.r2 ) / ( r1. r2 ) where v is the true anomaly Sin ( v2 - v1 ) = +/- ( 1 - C2 )1/2
-We have f = ( r2 / p ) ( C - 1 ) + 1 & g = ( r1. r2 ) / ( k p1/2 ) Sin ( v2 - v1 )
from which V1 = ( r2 - f r1 ) / g whence an estimate of r2 ( say r* ) whence C* = ( r1.r* ) / ( r1. r* )
-The solution is found if C - C* = 0
STACK | INPUTS | OUTPUTS |
Level 4 | t1 | / |
Level 3 | R1 | / |
Level 2 | t2 | / |
Level 1 | R2 | / |
When the program stops, the velocity vector V1 at the first instant in the variable 'V'
Example: t1 = 0 , R1 = [ 0.16 , 1.38 , 0.24 ] , t2 = 100 days , R2 = [ 1.50929963708 , 1.91954203011 , 0.265117222709 ]
-If you choose 2 CF and p = 1 ,
-Store 1 in the variable 'P'
2
CF
0
ENTER
[ 0.16 , 1.38 , 0.24 ]
ENTER
100
ENTER
[ 1.50929963708 , 1.91954203011 , 0.26511722709 ]
RR-V >>>> /
---Execution time = 12s--- with an HP48GX
and the velocity-vector in 'V' = [ 0.015 , 0.01 , 0.001 ]
( with small differences in the last decimals )
Notes:
R1 is saved in the variable 'R'
The parameter p is in the variable 'p' here, p =1.27633801262
-If the 1st guess for P is too bad, it will lead to an error while solving
the equation,
-In this case, store another - usually smaller - value in 'P' and start
again.
Position+Velocity -> Orbital Element
-If we know the position and velocity vectors R & V
at an instant t , we can deduce the 6 orbital elements T q
e i omega OMEGA
-We calculate the cross-product h = r2 x V2 and then:
-The parameter p = h2/k2
-The inclination i = Acos hz/h = Atan2 (hx2+hy2)1/2/hz
-We have also V2 / k2 - 2 / r = 1 / a whence the eccentricity e
r = p / ( 1 + e Cos v )
-The longitude of the ascending node OMEGA = Atan2 hx/(-hy)
( v + omega ) may be computed by the formula:
v + omega = sign(z) Acos [ ( x Cos OMEGA + y Sin OMEGA ) / r ]
-And the time of passage in perihelion is computed via Kepler's equation.
STACK | INPUT | OUTPUT |
Level 1 | t | / |
The orbital elements are in the variables T q E I w W n p a
Example: With the vectors R & V above: R = [ 0.16 , 1.38 , 0.24 ] , V = [ 0.015 , 0.01 , 0.001 ] and assuming t = 0
0 RV-EL >>>> /
and we find in the corresponding variables ( execute OUT to place them on the satck )
T = -76.072511 days
q = 0.720414 AU
e = 0.771672
i = 169°36068
omega = 15°72463
OMEGA = -163°48430
moreover:
n = 0.175861 deg/d
p = 1.276338 AU
a = 3.155171 AU
Reduction of Ecliptic Elements from one Equinox to another
one
-The 3 following orbital elements of a planet or a comet change when they are referred to different equinoxes
i = inclination
w = argument of perihelion
W = longitude of ascending
node
STACK | INPUTS | OUTPUTS |
Level 5 | i1( deg ) | |
Level 4 | w1 ( deg ) | |
Level 3 | W1 ( deg ) | i2 ( deg ) |
Level 2 | YYYY.MNDDdd1 | w2 ( deg ) |
Level 1 | YYYY.MNDDdd2 | W2 ( deg ) |
where i1 w1W1 are reffered to the 1st date ( level2 ) and i2 w2W2 are reffered to the 2nd date ( level1 ) , all expressed in decimal degrees
Example:
-The elements of a comet are i1 = 47°1234
, w1 = 151°5432 ,
W1
= 34°5678 on 1984/12/28
-Calculate these elements on 2345/07/24
47.1234 ENTER
151.5432 ENTER
34.5678 ENTER
1984.1231 ENTER
2345.0724 iwW
returns
i2 = 47°1590
w2 = 151°5850
W2 = 39°5796
Parabolic-Hyperbolic-Elliptic Motion
-Assuming the orbital elements T q E I w W
are stored in the corresponding variables,
PHEM takes t ( in days since J2000.0 ) in level 1
and returns [ X Y Z ] the rectangular ecliptic coordinates in
level 1
STACK | INPUT | OUTPUT |
Level 1 | t | / |
Assuming the orbital elements are in the variables T q E I w W
Example: With the elements found in the example RV->EL
100 PHEM gives [ 1.50929963708 , 1.91954203009 , 0.265117222712 ]
-Almost the same result we found with RV->R
KPL takes the mean anomaly M in level 2 and the eccentricity e # 1 in
level 1
It returns the eccentic anomaly E
STACK | INPUTS | OUTPUTS |
Level 2 | M ( deg ) | / |
Level 1 | e # 1 | E ( deg ) |
Examples:
0.4 ENTER
1.2 KPL
gives E = 0.987853766458
7 ENTER
0.9 KPL
yields E = 40°4669345175
Spherical -> Rectangular Conversion
-This program employs the usual formulae ( for the astronomers ):
X = R cos B cos L
Y = R cos B sin L
Z = R sin B
STACK | INPUTS | OUTPUTS |
Level 3 | R | X |
Level 2 | L | Y |
Level 1 | B | Z |
Example: R = 7 L = 124° B = 41°
7 ENTER
124 ENTER
41 S->R >>>> X = -2.95419769010
Y = 4.37977818860
Z = 4.59241320294
Notes:
-S->R works in all angular mode
-But in DEG mode, the longitude L & the latitude B must be expressed
in decimal degrees
Rectangular->Spherical Conversion
-This program employs the same formulae as above
X = R cos B cos L
Y = R cos B sin L
Z = R sin B
STACK | INPUTS | OUTPUTS |
Level 3 | X | R |
Level 2 | Y | L |
Level 1 | Z | B |
Example: X = 3 Y = 5 Z = 7
3 ENTER
5 ENTER
7 R->S
>>>> R = 9.11043357915
L = 59°0362434679
( in DEG mode )
B = 50°2059345082
Notes:
-R->S works in all angular mode
-But in DEG mode, the longitude L & the latitude B are expressed
in decimal degrees
Equatorial<->Ecliptic Conversions
Formula:
sin b = cos e sin d - sin e cos d sin a
cos b cos l = cos d cos a
cos b sin l = sin e sin d +
cos e cos d sin a
STACK | INPUTS | OUTPUTS |
Level 3 | A | / |
Level 2 | D | L |
Level 1 | e | B |
Where A = right-ascension , D = declination , e = obliquity of the ecliptic
Example: A = 123° D = 41° e = 23°439279
123
ENTER
41
ENTER
23.439279 EE
>>>> L = 116°028898378
B = 20°4963945697
Notes:
-EE works in all angular mode
-But in DEG mode, all the angles must be expressed in decimal degrees
-To get the reverse conversion, place -e in level 1
AD->LB takes the data in TADXYZ and stores in 'TLBXYZ'
the same data
after performing the equatorial-ecliptic conversion
Note:
-This routine is automatically called by GAUSSHG , HERGET & IMPROVE.
Warning:
-If flag 1 is clear, the obliquity of the ecliptic at the epoch J2000.0
is used.
-If flag 1 is set, this program uses the obliquity of the ecliptic
of the date.
OBL takes the number of days since 2000/01/01 12h TT and
returns the mean obliquity of the ecliptic in decimal degrees.
STACK | INPUT | OUTPUT |
Level 1 | days | obl |
Example: days = 5512.25 = 2015/02/03 18h
5512.25 OBL >>>>
obl = 23°4373159804
Formulae:
X = R cos L
Y = R sin L
STACK | INPUTS | OUTPUTS |
Level 2 | R | X |
Level 1 | L | Y |
Example: R = 12 L = 128°71
12
ENTER
128.71 R->P
X= -7.50454629137
( in DEG mode )
Y = 9.36385524027
Notes:
-R->P works in all angular mode
-But in DEG mode, the angles must be expressed in decimal degrees
Formulae:
X = R cos L
Y = R sin L
STACK | INPUTS | OUTPUTS |
Level 2 | X | R |
Level 1 | Y | L |
Example: X= -7.50454629137 Y = 9.36385524027
-7.50454629137 ENTER
9.36385524027 P->R
>>>> R = 12
L = 128°71
( in DEG mode )
Notes:
-P->R works in all angular mode
-But in DEG mode, the angles must be expressed in decimal degrees
References:
[1] "SOLEX" which may be downloaded from
http://chemistry.unina.it/~alvitagl/solex/
[2] "FUNDAMENTALS
OF ASTRODYNAMICS" - Roger R. Bate Donald D. Mueller Jerry E. White
[3] "Fundamentals of Celestial Mechanics" - JMA Danby - Willmann-Bell
- ISBN 0-943396-20-4
[3] Robin M. Green - "Spherical Astronomy" - Cambridge University
Press - ISBN 0-521-31779-7
[4] John D. Anderson - JPL Technical Report n° 32-497
[5] Dan Boulet - "Methods of Orbit Determination for the Micro
Computer" - Willmann-Bell - ISBN 0-943396-34-4