The Art of Scientific Computing.
William H. Press, Brian P. Flannery, Saul A. Teukoisky and William I. Vetterling.
Cambridge University Press, New York, 1986. 838pp., illus. $39.50.
Example Book (FORTRAN), 187 pp. Paper, $ 18.95.
Example Book (Pascal), 246 pp. Paper, $18.95.
FORTRAN and Pascal diskettes, $19.95 each.
The use of computers is becoming a larger and larger part of the working life of most scientists. 'Twenty years ago obtaining numerical solutions was an arduous task usually carried out on large centralized computing systems. These tended to be equipped with rigid and complex operating systems designed to defeat the uninitiated. Modern supercomputer installations still retain a certain macho indifference to the comfort of the user, but scientific computing is now primarily done on smaller systems tailored to the needs of individual researchers or research groups.
Many scientists work with personal computers in their offices or homes. For modest problems these can be used as independent sys terns; otherwise they can talk to much larger computers by telephone. They can also serve as instrument controllers, word processors, graphics display devices, even electronic diaries. As a result, they have come to play a major role in the day-to-day conduct of science. Scientific problems that would once have been approached by simplified analytic modeling, or by the examination of asymptotic behavior, are now routinely dealt with by numerical solution of the full equations.
However, while operations software for personal computers is carefully designed to require a minimum of specialized knowledge, choosing appropriate numerical techniques to solve scientific problems can seem an arcane and difficult art, open in full only to the single-minded enthusiast. This situation is vigorously and victoriously attacked by the authors of Numerical Recipes. The effects of the computer revolution can be seen not only in the approach and content of their book, but even in its physical presentation; the entire text is photoreproduced from the output of a computer typesetting program.
Although clearly well versed in the intricacies of numerical analysis, the four authors are first and foremost practicing scientists. Their interest in numerical methods appears to have been generated partly by the need to find optimal techniques for solving a variety of scientific problems and partly by an intelligent curiosity about when and how these techniques work. These attitudes are reflected in their text, which describes the classes of numerical problem most often encountered, as well as their mathematical basis and the strengths and limitations of the algorithms used to treat them. In addition, the text includes programs that implement recommended algorithms in a form suitable for personal computers.
The authors clearly intended to address a number of needs. They provide a library of almost 200 subroutines in both FORTRAN and Pascal. These routines are not treated as black boxes; instead, their workings are exposed and justified to the reader in a way that allows them not only to be easily understood but also to be easily modified to suit any specific problem. The virtues of different approaches to a given problem are compared, and the authors are not afraid to offer their own judgments. Their style is informal and entertaining but also precise; it will come as a revelation to many who are familiar with the dry and technical style of most monographs on numerical analysis.
The scope of Numerical Recipes is remarkable. The range of topics discussed is much wider than that in any other comparable text. Among other things, the authors treat the solution of linear systems, interpolation and extrapolation, evaluation of integrals, calculation of special functions, generation of random numbers, sorting of arrays, finding roots, maxima and minima, Fourier transform methods, statistical testing and fitting of data, and the solution of ordinary and partial differential equations.
In a few areas, most notably the last, the field is so large that the authors can do little more than introduce the reader to some of the most effective methods available for simpler problems and then give pointers to more specialized treatments. In many areas, however, they give a complete introduction to the field and present a sufficient number of schemes to allow an informed choice of an efficient method in any given situation. In general, it is possible to find an adequate method to treat almost any of the commonly encountered problems of scientific computing, and in many cases highly sophisticated methods are presented.
The style and scope of Numerical Recipes should make it invaluable to practicing scientists. Its straightforward and jargon-free approach dispels much of the mystery that so often seems to surround the more complex areas of numerical analysis. It is relatively easy to read the book straight through to get a first appreciation of its contents; thereafter it is most likely to be used for specific problems as they arise. It would make a good text for an advanced undergraduate or beginning graduate course on numerical methods for scientific problems.
Following the philosophy of modern software designers, the authors have taken a lot of trouble to make their book easy to use. Their subroutines are available on diskette in both FORTRAN and Pascal as well as being written out in full in the text. The book is well laid out and well indexed, and it provides many references to the numerical analysis literature for those who need to go beyond the programs provided. In addition, books of examples are available demonstrating the use of the subroutines in programs written in each language. The authors are to be congratulated for providing the scientific community with a valuable resource.
White is an astrophysicist at Steward Observatory, University of Arizona, Tucson, 85721.