This is a text for an upper undergraduate/early graduate course in numerical linear algebra. The topic coverage is quite comprehensive: after some preliminary material on floating point arithmetic, stability of algorithms and conditioning of problems, and vector and matrix norms, the rest of the book discusses a number of topics related to the two principal problems of numerical linear algebra, namely solution of linear systems and eigenvalue computation. All the usual suspects appear here, including algorithms and techniques for special kinds of systems (e.g., the Cholesky factorization for positive definite symmetric matrices, and the conjugate gradient method for large sparse linear systems), singular value decomposition (including, in the final chapter of the book, two algorithms, the one-sided Jacobi method and Demmel/Kahan zero-shift downward sweep algorithm, for computing it), least squares, Gram-Schmidt decomposition and the QR factorization (including Givens rotations and Householder reflections), and the basic methods for eigenvalue computation, both for general matrices and in specific cases (examples include the Jacobi, Gauss-Seidel and SOR iteration methods for general matrices, the symmetric QR iteration method for eigenvalues of symmetric matrices, and the Arnoldi and Lanczos methods for eigenvalues of sparse matrices). Some additional topics, such as the polar decomposition of a matrix and Gershgorin disc theorem, are developed in the exercises.

This book has several features that distinguish it from other texts covering this material. For one thing, it does not even assume a prior course in linear algebra; instead, the first six chapters of this text, totaling almost 120 pages, constitute a summary of a basic undergraduate course on the subject. (All of the topics referred to above start in chapter 7.) In view of the fact that this book is already fairly dense and bulky (it is an oversized text, resembling a coffee-table book) and that many people taking a course in numerical linear algebra will have already seen introductory linear algebra, some might question the need for investing this much space on basic linear algebra. However, this criticism is ameliorated to some extent by the inclusion in these chapters of a number of applications of linear algebra to, for example, electrical circuits, cryptography, engineering, and team ranking (which the author describes as a procedure that is related to, but much simpler than, the Google PageRank process). These applications typically take a page or two each to discuss.

Applications appear in the rest of the text as well. Several sections are of an analytic character and discuss topics like Fourier series, vibration and resonance, and partial differential equations (the heat equation in one section, the Poisson equation in another). There are also sections on, for example, image compression (an application of the singular value decomposition) and population ecology (specifically, the Leslie model). In short, this is a text that not only discusses the basic algorithms and techniques of numerical linear algebra but also makes a serious attempt to explain to the reader *why* this material is useful.

In fact, although the book does contain theorems (many, but not all, of which are proved), the overall impression I had was of a text that stressed applications and methods rather than theory. Because of the emphasis on applications and the amount of space used to make this book accessible to people with minimal mathematical background, my sense was of a book that was aimed primarily at an audience of majors in engineering rather than mathematics. Indeed, the 91 references listed in the bibliography in this text are not arranged alphabetically, as is the case in most if not all mathematics texts, but instead in order of appearance in the text, which, I gather, is the engineering custom. And even the publisher’s webpage for this text lists it under “engineering” rather than “mathematics”. However, the book is sufficiently flexible that it could certainly be used as a text for mathematics majors as well.

The book struck me as clearly and carefully written, with adequate explanations. In what struck me as a very sensible decision, algorithms in the text are given in pseudocode, with MATLAB used to implement them. In addition, each chapter ends with a fairly large number of exercises; password-protected solutions for each chapter are available online. The exercises struck me as being primarily computational, though some called for proofs. A particularly attractive feature of the computational exercises is that a number of them call for “pencil and paper” computation rather than computer use; I think that sitting down and actually doing a computation by hand can be a very valuable experience. Other exercises are grouped separately under the heading “MATLAB Problems” and call for that software.

Other useful pedagogical features include: an introduction to each chapter specifying what is to be covered and also listing the prerequisites for that chapter, a summary at the end of each chapter, and a glossary defining many of the terms used in the text.

For these reasons, this is a book that merits careful consideration as a possible text for a course in numerical linear algebra, particularly one stressing applications to engineering and other areas of science.

Mark Hunacek (mhunacek@iastate.edu) teaches mathematics at Iowa State University.