Galilean moons of Jupiter

[ Root ]

Contents

Overview

[ Top ]

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 QBASIC program, called GALSAT53 and he has included the core of the QBASIC code in the zip file. See;

http://www.isc.tamu.edu/~astro/dansoftware.html

GALSAT53 is freeware, which is even better!

QBASIC program

[ Top ]

The 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 considerably reduced.

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 (kburnett@geocity.com)
'
'
'   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.

Accuracy

[ Top ]

To assess the accuracy of the recipe here, I compared the results from a modified version of the QBASIC 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. See my 'resources' page for a link to Manfred's page about Ephtool.

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

References

[ Top ]

Stillman Drake
Galileo at Work: his scientific biography
Dover Books Inc, 1995
ISBN 0-486-28631-2

Galileo Galilei
Sidereus Nuncius
Trans. Albert Van Helden
The University of Chicago Press, 1989
ISBN 0-226-27903-0

Meeus, Jean
Astronomical Algorithms
Willmann-Bell
1st English edition, 1991
ISBN 0-943396-35-2

[ Root ]


Last Modified 23rd November 1997
Keith Burnett

kburnett@btinternet.com