There is no doubt nowadays that numerical mathematics is an essential component of any educational program. It is probably more efficient to present such material after a strong grasp of (at least) linear algebra and calculus has already been attained - but at this stage those not specializing in numerical mathematics are often interested in getting more deeply into their, chosen field than in developing skills for later use. An alternative approach is to incorporate the numerical aspects of linear algebra and calculus as these subjects are being developed. Long experience has persuaded us that a third attack on this problem is the best and this is developed in the present two volumes, which are, however, easily adaptable to other circumstances.
The approach we prefer is to treat the numerical aspects separately, but after some theoretical background. This is often desirable because of the shortage of persons qualified to present the combined approach and also because the numerical approach provides an often welcome change which, however, in addition, can lead to better appreciation of the fundamental concepts. For instance, in a 6-quarter course in Calculus and Linear Algebra, the material in Volume 1 can be handled in the third quarter and that in Volume 2 in the fifth or sixth quarter.
The two volumes are independent and can be used in either order - the second requires a little more background in programming since the machine problems involve the use of arrays (vectors and matrices) while the first is mostly concerned with scalar computation.
In the first of these, subtitled "Numerical Analysis", we assume that the fundamental ideas of calculus of one variable have been absorbed: in particular, the ideas of convergence and continuity. We then take off with a study of "rate of convergence" and follow this with accounts of "acceleration process" and of "asymptotic series" - these permit illumination and consolidation of earlier concepts. After this we return to the more traditional topics of interpolation, quadrature and differential equations.
Throughout both volumes we emphasize the idea of "controlled computational experiments": we try to check our programs and get some idea of errors by using them on problems of which we already know the solution such experiments can in some way replace the error analyses which are not appropriate in beginning courses. We also try to exhibit "bad examples" which show some of the difficulties which are present in our subject and which can curb reckless use of equipment.
In the Appendix we have included some relatively unfamiliar parts of the theory of Bessel functions which are used in the construction of some of our examples. This is at a markedly higher level than the rest of the volume.
In the second volume, subtitled "Numerical Algebra", we assume that the fundamental ideas of linear algebra: vector space, basis, matrix, determinant, characteristic values and vectors, have been absorbed. We use repeatedly the existence of an orthogonal matrix which diagonalizes a real symmetric matrix; we make considerable use of partitioned or block matrices, but we need the Jordan normal form only incidentally. After an initial chapter on the manipulation of vectors and matrices we study norms, especially induced norms. Then the direct solution of the inversion problem is taken up, first in the context of theoretical arithmetic (i.e., when round-off is disregarded) and then in the context of practical computation. Various methods of handling the characteristic value problems are then discussed. Next, several iterative methods for the solution of systems of linear equations are examined. It is then feasible to discuss two applications: the first, the solution of a two-point boundary value problem, and the second, that of least squares curve fitting. This volume concludes with an account of the singular value decomposition and pseudo-inverses.
Here, as in Volume 1, the ideas of "controlled computational experiments" and "bad examples" are emphasized. There is, however, one marked difference between the two volumes. In the first, on the whole, the machine problems are to be done entirely by the students; in the second, they are expected to use the subroutines provided by the computing system - it is too much to expect a beginner to write efficient matrix programs; instead we encourage him to compare and evaluate the various library programs to which he has access.
The problems have been collected in connection with courses given over a period of almost 30 years beginning at King's College, London, in 1946 when only a few desk machines were available. Since then such machines as SEAC, various models of UNIVAC, Burroughs, and IBM equipment and, most recently, PDP 10, have been used in conjunction with the courses which have been given at New York University, and at the California Institute of Technology.
We recommend the use of systems with "remote consoles" because, for instance, on the one hand, the instantaneous detection of clerical slips and, on the other, the sequential observation of convergents is especially valuable to beginners. The programming language used is immaterial. However, most of the problems in Volume 1 can be dealt with using simple programmable hand calculators, but many of these in Volume 2 require the more sophisticated hand calculators (i.e., those with replaceable programs).
The machine problems have been chosen so that a beginning can be made with very little programming knowledge, and competence in the use of the various facilities available can be developed as the course proceeds. In view of the variety of computing systems available, it is not possible to deal with this aspect of the course explicitly - this has to be handled having regard to local conditions.
We have not considered it necessary to give the machine programs required in the solution of the problems: the programs are almost always trivial and when they are not, the use of library subroutines is intended. A typical problem later in Volume 2 will require, e.g., the generation of a special matrix, a call to the library for a subroutine to operate on the matrix and then a program to evaluate the error in the alleged solution provided by the machine.
Courses such as this cannot be taught properly, no matter how expert the teaching assistants are, unless the instructor has genuine practical experience in the use of computers and a minimum requirement for this is a personal familiarity with a significant proportion of our problems, or of a similar set of problems. Such an experience will be helpful in the selection of problems to be assigned, and in the order in which they should be attacked. Further benefit will accrue from an inquiry, explicit or implicit, as to the objective of the problems: routine manipulation, preparation for future work, alternative approaches to material already covered, etc.
We have occasionally left blanks for numerical values to be filled in by the reader: for instance in cases where the result is sensitive to the machine used, or where it is important that the reader has personally dealt with the material.
Finally, I acknowledge gratefully, on the one hand the continuing courtesy and assistance of the Birkhäuser-Verlag, and, on the other hand, the help of generations of devoted teaching assistants, some now distinguished mathematicians, who bore the brunt of passing on the knowledge I acquired, and whose comments have been of great value.