Last updated 2011 March 2
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.
Astronomical Algorithms, by Jean Meeus.
Elements of Solar Eclipses 1951-2200, by Jean Meeus.
Fundamental Ephemeris Computations, by Paul J. Heafner.
Explanatory Supplement to the Astronomical Almanac, edited by P. Kenneth Seidelmann.
Methods of Orbit Determination for the Micro Computer, by Dan Boulet.
Fundamentals of Celestial Mechanics, by J. M. A. Danby.
Lunar Tables and Programs from 4000 BC to AD 8000, by Michelle Chapront-Touzé and Jean Chapront.
The Theory of Orbit Determination, by Andrea Milani and Giovanni-Federico Gronchi.
• Astronomical Algorithms, by Jean Meeus. Willmann-Bell. This book has been the basis of more astronomical software, including much of my own, than any other. It's a very "practically" oriented book, with clear algorithms for such tasks as figuring out planetary and lunar positions and phenomena, rise/set/transit times, and positions of the Galilean satellites (but no other satellites). In all cases, the math is given, rather than source code. (Which, in my humble opinion, is how it ought to be. Anybody can understand the math passably well, but not everyone understands C or FORTRAN.)
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.
• Elements of Solar Eclipses 1951-2200, by Jean Meeus. Willmann-Bell. Despite the title, this book ought to be of some interest to anyone working on occultations and transits, because the heart of it is a discussion of the use of Besselian elements, and those can be generalized from "the moon passes in front of the Sun" to "object A passes in front of object B". Besselian elements were essentially new to me until I read this book, but it contained everything I needed to know to implement eclipse/occultation computations in my software. (With one exception: while it's excellent at telling you how to use Besselian elements, there is no discussion whatsoever as to how to generate elements. But given the hints in the book, I was able to figure that one out on my own.)
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.)
• Fundamental Ephemeris Computations, by Paul J. Heafner. Willmann-Bell. Also discussed a bit at Willmann-Bell's site here. This is an excellent introduction to the methods for computing high-precision planetary and lunar positions. Almost all books on this subject rely on analytic theories developed at the Bureau des Longitudes in Paris, such as VSOP, ELP, and PS-1996. Almost all astronomical software, including Guide, Charon, and Find_Orb, do so as well.
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.
• Explanatory Supplement to the Astronomical Almanac, edited by P. Kenneth Seidelmann. This book is enormously useful for certain obscure aspects of astronomical programming. Its discussions of assorted time systems and the vagaries in the earth's rotation are the most thorough I've seen anywhere. Almost every book I've ever seen glosses over the differences between UTC, UT0, UT1, and UT2 and ignores the oddities of "polar wander"; this book gives you a thorough idea as to what all these items are and when you should worry about them. It gives you both details on computation and on the underlying theory, very helpful in giving you some feel as to the logic behind the math. (There does not appear to be a single line of source code, in any language, anywhere in the book.)
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.
• Fundamentals of Celestial Mechanics, by J. M. A. Danby. Willmann-Bell. This book should appeal greatly to mathematically-oriented types (including me, of course). It's more of a "theory" book than anything else, covering such not-especially-practical cases as (for example) the motion of an object in an inverse-cube (not inverse-square) field. That said, I found much of it to be of enormous practical benefit, as will be discussed later on.
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.
• Methods of Orbit Determination for the Micro Computer, by Dan Boulet. Willmann-Bell. This provides a mix of underlying theory and BASIC source code. The book focuses on the very practical problems of how to deal with reference systems, time systems, generating an ephemeris from elements, and generating elements from observations, for objects in both heliocentric and geocentric orbits. It covers only the essential pieces of knowledge needed for these, which makes it a good introduction (none of the common digressions into mathematically interesting areas that are not very relevant to "real-world" applications for basic orbit determination, i.e., motion of an object in an inverse-cube field, or relativistic effects, etc.) For this fundamental layer of knowledge, you get the mathematical reasoning behind the processes involved.
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.
• Lunar Tables and Programs from 4000 BC to AD 8000, by Michelle Chapront-Touzé and Jean Chapront. Willmann-Bell. Gives details of how to use the ELP2000-85 to compute lunar ephemerides over the given time span. Using the formulae, you can compute ephemerides at "low", "medium", or "high" precision, the difference being in how many terms of a Poisson series are included.
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.
• The Theory of Orbit Determination, by Andrea Milani and Giovanni-Federico Gronchi. You can read a table of contents and some supplemental materials here, and a review here.
This is a very mathematically demanding book, and there are large chunks of it on which I do not feel qualified to comment. The parts that I do understand have proven to be quite useful. The range of the book is large; certain areas such as satellite geodesy are not ones where I expect to do much of anything, but they're interesting to read about.