This page provides a
QBASIC recipe for finding
the positions of the four Galilean moons of Jupiter. Only the
positions along an axis through the equator of Jupiter are
calculated. These 'X' coordinates are expressed in multiples of
the radius of Jupiter. The results for two sets of hourly figures
were compared with those produced by Manfred Dings Ephtool 2.0,
and found to have a maximum error of 0.2 radii, typically better
than 0.1 radii.
Galileo saw the four moons in his newly constructed telescope, and described nightly observations of his 'Medicea sidera' for some days in his book Sidereus Nuncius. His telescope had an angular view of about 12 minutes of arc, an aperture of about 1 inch, and a magnification of 20x [Drake Ch8 p153]. You can see the four 'Galilean' moons of Jupiter using almost any binoculars or small telescope. Some people can see Callisto with the naked eye.
The recipe used here is adapted from Jan Meeus' book, Astronomical Alorithms. His 'lower precision' method is described in Chapters 42 and 43.
The positions of the four Galilean moons are usually listed in ephemerides as a series of X and Y coordinates. The X coordinates tell you the positions of each moon along an axis through the equator of Jupiter. The Y coordinates tell you the displacement from this X axis, and are usually much smaller than the X coordinates. I am interested in predicting what I should be able to see through binoculars, so I have ommitted the Y coordinates completely. I have not applied the correction to the elongation 'U' angles caused by perturbations among the satellites, so the recipe here will only gve accurate results for a few years either side of J2000.0
As a result of these simplifications, I do not need to calculate the heliocentric longitude of Jupiter, or the planocentric declinations of Earth or the Sun. I have calculated the angular width of Jupiter's disc, and I have expressed the X coordinates of the moons in minutes of arc, as well as the more usual Jupiter radii.
I was able to produce a program for my TI-80 programmable calculator based on this recipe, although the large numbers of variables meant I had to use a 'list' to store intermediate values.
Dan Bruton has provided a more pictorial
GALSAT53 and he has included the core
code in the zip file. See;
GALSAT53 is freeware, which is even better!
QBASIC program below embodies my
simplification of Meeus's recipe for the satellites of Jupiter. I
have used a very direct programming style, if you are devious the
number of program statements and variables used could be
To use the program, copy the listing (the text between the
rows of asterisks below) from the browser window to a
text editor, and save as
GALILEO.BAS. The program
should load into
QBASIC and run.
'********************************************************* ' ' This program finds the approximate arrangement of the ' four Gallilean moons of Jupiter using the 'lower ' precision' method in Meeus's book, chapters 42 and 43. ' I have ommitted the corrections detailed by Meeus, ' and I only calculate the 'X' coordinates of the Moons, ' i.e. the separation along the Jovian equator. ' ' QBASIC program by Keith Burnett (firstname.lastname@example.org) ' ' ' Work in double precision and define some constants ' DEFDBL A-Z pr1$ = "\ \###.# ###.#" pr2$ = "\ \#####.#####" pr3$ = "\ \#####.###" pi = 4 * ATN(1) tpi = 2 * pi twopi = tpi degs = 180 / pi rads = pi / 180 ' ' Get the days to J2000 ' h is UT in decimal hours ' FNday only works between 1901 to 2099 - see Meeus chapter 7 ' DEF FNday (y, m, d, h) = 367 * y - 7 * (y + (m + 9) \ 12) \ 4 + 275 * m \ 9 + d - 730531.5 + h / 24 ' ' define an inverse sine function ' DEF FNasin (x) c = SQR(1 - x * x) FNasin = ATN(x / c) END DEF ' ' the function below returns the true integer part, ' even for negative numbers ' DEF FNipart (x) = SGN(x) * INT(ABS(x)) ' ' the function below returns an angle in the range ' 0 to two pi ' DEF FNrange (x) b = x / tpi a = tpi * (b - FNipart(b)) IF a < 0 THEN a = tpi + a FNrange = a END DEF ' CLS PRINT "Galilean moons of Jupiter" PRINT "=========================" PRINT ' ' get the date and time from the user ' INPUT " year : ", y INPUT " month : ", m INPUT " day : ", day INPUT " hour UT : ", h INPUT " minute : ", mins h = h + mins / 60 d = FNday(y, m, day, h) ' ' Find the mean anomaly of the Earth (me) ' me = FNrange((357.529 + .9856003# * d) * rads) ' ' Find mean anomaly of Jupiter (mj), corrected for a long ' period term in the motion (V) ' V = (172.74 + .00111588# * d) * rads pj = .329 * SIN(V) * rads mj = FNrange((20.02 + .0830853# * d) * rads + pj) ' ' Find difference of heliocentric mean longitudes ' for Earth and Jupiter, then the correction ' for the equations of centre for the two planets ' ' k gives the corrected elongation of Jupiter wrt ' Earth ' j = FNrange((66.115 + .9025179# * d) * rads - pj) aj = (1.915 * SIN(me) + .02 * SIN(2 * me)) * rads bj = (5.555# * SIN(mj) + .168# * SIN(2 * mj)) * rads k = j + aj - bj ' ' Work out the Earth Sun distance (res), the Jupiter Sun ' distance (rjs) and the Earth Jupiter distance (rej) ' res = 1.00014 - .01671 * COS(me) - .00014 * COS(2 * me) rjs = 5.20872 - .25208 * COS(mj) - .00611 * COS(2 * mj) rej = SQR(res ^ 2 + rjs ^ 2 - 2 * res * rjs * COS(k)) ' ' find phi ' phi = FNasin(res / rej * SIN(k)) ' ' Find the elongations for each moon ' dd = d - rej / 173 'light travel time correction u1 = FNrange((163.8067 + 203.4058643# * dd) * rads + phi - bj) u2 = FNrange((358.4108 + 101.2916334# * dd) * rads + phi - bj) u3 = FNrange((5.7129 + 50.2345179# * dd) * rads + phi - bj) u4 = FNrange((224.8151 + 21.4879801# * dd) * rads + phi - bj) ' ' Now find the G and H constants, which are related to the ' eccentricity ofthe orbits of satellites III and IV ' Gj = FNrange((331.18 + 50.310482# * dd) * rads) Hj = FNrange((87.4 + 21.569231# * dd) * rads) ' ' Now find the distances from Jupiter for each moon ' r1 = 5.9073 - .0244 * COS(2 * (u1 - u2)) r2 = 9.3991 - .0882 * COS(2 * (u2 - u3)) r3 = 14.9924 - .0216 * COS(Gj) r4 = 26.3699 - .1935 * COS(Hj) ' ' Now find the X coordinates for each moon ' x1 = r1 * SIN(u1) x2 = r2 * SIN(u2) x3 = r3 * SIN(u3) x4 = r4 * SIN(u4) ' ' Now print out the X coords and the angular sep'n in ' minutes of arc. angrad is the radius of Jupiter's disc ' in minutes of arc, based on 196.5" dia at 1 a.u. ' angrad = 1.6375 / rej PRINT PRINT TAB(14); "radii"; TAB(22); "arcmin" PRINT USING pr1$; " Io : "; x1; x1 * angrad PRINT USING pr1$; " Europa : "; x2; x2 * angrad PRINT USING pr1$; "Ganymede : "; x3; x3 * angrad PRINT USING pr1$; "Callisto : "; x4; x4 * angrad PRINT PRINT USING pr3$; "distance : "; rej PRINT USING pr1$; "jup disc : "; angrad * 2 * 60 END '*********************************************************
A sample of the output of the program for 1997 August 7th 22:25 UT is shown below;
Galilean moons of Jupiter ========================= year : 1997 month : 8 day : 7 hour UT : 22 minute : 25 radii arcmin Io : 5.4 2.2 Europa : 7.1 2.9 Ganymede : -14.5 -5.9 Callisto : 24.3 9.8 distance : 4.044 jup disc : 48.6
I feel better about only seeing three of the moons using hand held 7 x 35 binoculars; the separation of Io and Europa is only 0.7 minutes of arc. The diameter of Jupiter's disc is given in arcseconds.
To assess the accuracy of the recipe here, I compared the
results from a modified version of the
program above with results obtained from Manfred Dings Ephtool
2.0. Ephtool is the only freeware program I have found which can
actually produce a list of numerical positions for
Jupiter's moons. Many star chart programs can produce the 'ribbon
diagrams' seen in astronomy magazines, but not numbers.
As can be seen from the table below, the worst case error is of the order of 0.25 Jupiter radii. More typical is an error of 0.1 radii.
Error of recipe For each date, positions were produced for each hour from 16:00 UT to 08:00 UT the following day. error = recipe - Ephtool position Galilean Moons of Jupiter for 8 / 8 / 1997 I II III IV max 0.04 0.03 0.02 -0.13 min -0.08 -0.09 -0.05 -0.23 Galilean Moons of Jupiter for 1 / 1 / 1990 I II III IV max 0.05 0.19 0.02 0.09 min -0.08 0.07 -0.06 -0.04
Galileo at Work: his scientific biography
Dover Books Inc, 1995
Trans. Albert Van Helden
The University of Chicago Press, 1989
1st English edition, 1991
[ Root ]
Last Modified 23rd November 1997