Books about celestial mechanics and astronomical calculations
Last updated 1 August 2003
The following are a few of the books on my shelf that I've found useful, at one time or another, in figuring out the mathematical and practical aspects of writing astronomy-oriented software. Standard disclaimers: your mileage may vary. At some point, I may come back and add suitable links to publisher's sites and so on, plus some more books from the shelf. Then again, I may not.
Please note that these comments reflect the prejudices of a guy who does a lot of programming; has a solid math background, but no formal astronomical background; and tends to have interests in certain areas of astronomical computing, but may not get too excited about other areas. Again, your mileage may vary.
There is absolutely no "underlying theory" given here. The algorithms do, of course, have a physical basis behind them, but you wouldn't know that by looking at this book. However, I find that most people are more interested in getting an answer to, say, "Where's the moon?" than they are in the physics. If you do want to understand the physics, look elsewhere.
There is a companion diskette for this book, with source code in C, Pascal, BASIC, and (if I recall correctly) certain other languages. However, the discussions of the algorithms really are quite clear. The main benefit of the diskette is that it can spare you entering long tables of data. (Though in some cases, you can probably edit chunks of source code from this page to get those same tables.)
There's now a second edition of this book for sale. The new version includes chapters on the Hebrew and Islamic calendars, positions of the satellites of Saturn, and an appendix with coefficients for the heliocentric positions of Jupiter through Neptune for 1998 to 2025.
The book gives algorithmic descriptions of how to find the center line of an eclipse, the maximum north/south extents, the area of total (or annular) eclipse, and so on... basically, how to compute everything you would want to know about a given eclipse (and, by generalization, an occultation or transit.) As the title suggests, elements are given for solar eclipses from 1951 to 2200. If you have a burning need for elements outside that date, let me know; I computed them long ago, stored them on my hard drive, then forgot about them. (At one time, I was going to have Guide use them. Now, Guide computes them on-the-fly instead.)
VSOP and ELP are based on an earlier version of the fundamental JPL ephemeris DE200. PS-1996 is based on a later version, DE403. I and others have made use of these analytic theories because they're convenient, small (a few hundred KBytes or so), and reasonably accurate (usually to a fraction of an arcsecond). But for the utmost in precision, one really ought to use the JPL DE ephemerides (the current state-of-the-art is DE405 and DE406). This book describes how to do so, and provides PowerBASIC and C source code for the task, along with the math needed to handle precession, nutation, different time systems, coordinate conversion, and so on (i.e., the auxiliary tools needed to turn the raw data from the DE ephemerides into something useful.)
The book is somewhat single-minded in pursuing planetary and lunar ephemerides. Side issues, such as computing solstice/equinox dates, lunar phases, satellites of other planets, etc. are not treated. (But this is not a big deal, in my opinion. For example, once you've got a function to determine the sun's position, it's not all that tough to write a root-finding function that looks for instants when (solar ecliptic longitude = 0, 90, 180, or 270), thereby giving you equinox and solstice dates.) This is also not a "theory" book; you don't get any idea as to whence all these formulae came. Pages 1-186 are mixed text, equations, and source code, but pages 187-312 are nothing but a listing of the C source code. A floppy is included.
The main reason DE ephemerides don't get more use is because they are huge. You can download them via ftp from the JPL Web site, but you really need a broadband connection to do that effectively. Alternatively, you can get them from Willmann-Bell on a CD-ROM for about $25.
The secondary reason they don't get more use, though, is that few people really need the sort of precision we're talking about here. I am of the opinion that you can never be too accurate, and I have some applications (such as my Find_Orb orbit determination software) that would benefit from the greater speed of DE.
Incidentally, I've posted some C source code to access the JPL DE ephemerides. This code has assorted advantages over that in the book, such as allowing one to handle ephemerides without worrying about byte order or needing to recompile to use different ephemerides. However, the source code does nothing but extract rectangular coordinates; the PowerBASIC and C code from Fundamental Ephemeris Computations includes the other functions discussed above.
It also covers some more obscure topics, such as assorted calendrical systems and ephemerides for natural satellites. There is also what looks to be a pretty good discussion of eclipse/occultation computations, but I must admit that I merely skimmed this; by the time I got this book, I had read Meeus' Elements of Solar Eclipses 1951-2200 and had reverse-engineered his formulae to get the information I needed.
Also discussed are physical ephemerides of planets and satellites (things such as "tilt of the north pole", central meridians, etc.), rise/set times and the complications of refraction.
The first edition was written in 1962, in the pre-computer age. Quite a few things that I would nowadays "brute-force" with numerical integration on a PC were instead treated with very complex mathematics, and this book is far and away the most sophisticated mathematically of any listed on this page. The other books on this page rarely venture into anything beyond high-school algebra; this book uses calculus almost everywhere, along with some pretty complex reasoning. There are places where I must concede that I didn't follow the chain of thinking too well.
However, this book is a second edition, written in 1988, and contains ample evidence of the computer revolution. Numerical techniques are discussed in excellent detail, and a few pieces of BASIC code are occasionally thrown in. (I generally am not a fan of putting source code in books of this ilk, but Danby chose the situations for such code rather well. There are cases where sticking to pure mathematical formulae is insufficient.)
The book has some good discussion of topics such as perturbation theory, basic vectorial mechanics, n-body problems, and the motions of the earth and moon. However, I was mostly interested in the parts discussing orbit determination, and this book is the main source of my knowledge of that subject. Much of my Find_Orb orbit determination software is based on the math in this book, and I'd recommend it to anyone interested in orbit determination.
As a result of its focus on fundamentals, the book would be a decent way to educate yourself on the fundamentals of the orbit determination trade. At some point, it's likely that you will want to understand some slightly more complicated point, such as how to handle oblate planets or relativistic effects or alternative methods for numerical integration. When that happens, you'll need another book or two on the shelf.
The data files and a PostScript document of their use can also be found at this CDS ftp site. For many users, the PostScript documentation is all that is really needed, but the book may help in figuring out a few points here and there.