Moon position to within 10 arcsec

[Root ]




This page describes an Excel 95 spreadsheet which can be used to calculate the apparent position of the moon to a worst case accuracy of 20 arcseconds of geocentric longitude and 16 arcseconds of latitude, with 'rms' errors of less than one arcsecond over a 50 year period either side of J2000.0.

The spreadsheet implements an algorithm from Astronomical Algorithms by Jean Meeus, which is itself a truncated version of the ELP-2000/82 lunar theory by Chapront. Modern position calculations are based on summing large numbers of terms of trigonometric series. The 'arguments' of each term in the series are themselves functions of the time (usually in Julian centuries, T) from J2000.0, and are usually polynomials of T. The accuracy of a given algorithm depends on the number of retained terms, and the period of time over which the series can be used depends on the polynomials in T. Not a Kepler ellipse in sight, although careful examination of the series will reveal terms in the 'equation of centre' series!

At this level of accuracy, you must;

The Excel spreadsheet given here is not intended to be a practical application of the algorithm - most people will want to generate an ephemeris of the moon, and an implementation in a programming language would be more effective. The presentation here is designed to show the inner workings of the method, and allow checking of intermediate values when developing code.

The version here has been checked against the worked examples in Meeus' book, and by comparing the RA and DEC calculated with the spreadsheet to the results from the Interactive Computer Ephemeris.



Steve Moshier has investigated the short and long term accuracy of Meeus' version of the series for the planets and the Moon. You can find full details in the file on Steve's web site 'Astronomy and numerical software source codes'. For the Moon over the 'short' term, we find (reformatted from Steve's file short.ans);

                      1949.5 to 2000.0            2000.0 to 2051.6
                       Max      RMS     av         Max     RMS      av
Moon long (")         18.83    0.92   -0.07       15.35    0.95   -0.13
Moon Lat  (")          4.94    0.34   -0.00        5.49    0.34    0.00
Moon dist (10^-8 au)   8.57    0.64   -0.00        7.75    0.62   -0.00

Errors are shown as maxium, 'root mean square', which I take
to be standard deviation, and the simple arithmetic average,
which shows any long term systematic differences -kpb.

The 'max to rms' ratio is very high (19:1), so a graph of error versus time would show a lot of peaks and troughs. Some indication of the periods of the differences would be useful.

Excel spreadsheet for download


You can download the Excel spreadsheet in ZIP format as file (19Kb).

The Excel 'workbook' consists of five 'worksheets';

References and background reading


An essential reference for understanding this method is;

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

This book contains tables with the coefficients in the series for the major planets, apart from a wealth of other methods, calculations and data. You can buy a software disc with the routines already coded in C, a BASIC dialect or a Pascal flavour. The approach definitely like a 'cookbook', and the explanations are given as formulae, you have to devise your own code unless you buy the disc! There are introductory chapters on the basics of numerical programming.

An alternative approach to finding Moon positions is to use the analytical theory derived by Brown - see

Montenbruk and Pfleger
Astronomy on the Personal Computer
3rd English edition
ISBN 3-540-63521-1

This book costs more than Meeus, and has a less wide range of calculations, but is more 'textbook' in flavour. I personally like a more structured approach. Basic definitions are given, rectangular coordinates are used extensively. A disc is included with routines in Pascal, which appear to compile fine under the Free Pascal Compiler. The discussions in the book are based on sample code in Pascal.

[Root ]

Last Modified 11th August 1998
Keith Burnett