Computing Reviews

Numerical linear approximation in C (Chapman & amp; Hall/CRC Numerical Analy & Scient Comp. Series)
Abdelmalek N., Malek W., Chapman & Hall/CRC,2008. 968 pp.Type:Book
Date Reviewed: 01/30/09

Overdetermined linear systems of simultaneous equations contain more equations than necessary to determine the value of all their variables. This work is a treatise on techniques to provide approximate solutions for overdetermined linear systems of simultaneous equations. Loosely speaking: if there are n equations in m unknowns, with n>m, what are the best values for the m unknowns that satisfy the problem? Many legitimate issues arise--for instance, what does “best” mean, exactly? This work proposes three meanings for “best,” and proceeds to explain how to “satisfy” the problem in several ways. C code is provided as part of the book, in both printed and machine-readable format.

Notwithstanding its mathematical nature, this book is written for an audience that looks at mathematics as a tool to compute answers, rather than as an internally coherent logical system suitable for theoretical exploration. The work is deliberately addressed to practitioners in the experimental sciences with a problem to solve: how can one reduce results from n experiments in m variables, n>m, to the most fitting values of the variables?

The three meanings of “best” provided are: least absolute value residuals; least square residuals; and Chebyshev residuals. The first two are well-known approaches to adjust for errors, respectively, from long-tailed and short-tailed probability distributions. Chebyshev residuals are chosen to fit the set of residuals all “close enough” in magnitude to each other: in the extreme, all identical residuals. There are only marginal notes with regard to the applicability of each of the three techniques to specific experimental problems; this part is delegated, as appropriate, to the judgment and expertise of the practitioner.

The authors claim inspiration from the popular “Numerical Recipes” series [1]. Yet, the style of “Numerical Recipes” is more captivating, and its printed presentation much cleaner. On the other hand, this work is more academic, without being overbearing: whereas “Numerical Recipes” is at times scanty in referencing literature, this work cites literature liberally. Also, contrary to “Numerical Recipes,” this book presents original work by the authors’ team.

The book begins with a refresher on applied matrix algebra that is abundantly short of a tutorial. It proceeds quickly to the heart of the matter, introducing derivations and techniques, sometimes with, and other times without, proofs. (It is often not clear why proofs may or may not be present.) The prose is generally readable, and even superficial readers will grasp many of the fundamental principles explained. However, careful reading is necessary to understand the details. Alternate solution paths are addressed systematically, each in a dedicated section. A superficial reader can return to a careful examination of a section of interest with relative ease.

The code provided includes all algorithms presented in the text, with 25 corresponding test drivers. It is designed for Microsoft Visual C++; almost all of it, however, compiles without problems with GNU C 4.1.2 after trivial corrections (missing headers). The exception is main.c (the comprehensive test driver), which includes MS Windows code and requires minor extra work. Code performance in the text is referenced at times to personal computer (PC) hardware so old that it is irrelevant. Execution on i86_64 hardware is successful for all but one of the test drivers, which terminates with a segmentation fault.

The code is unfortunately plagued by misguided good intentions. The author proudly documents and applies stratagems to provide to C some “fortranesque” properties, such as array indices offset from one rather than from zero. This makes otherwise easily readable and self-contained code less adaptable to the use of libraries such as Basic Linear Algebra Subprograms (BLAS) and Linear Algebra Package (LAPACK).

There is only modest attention paid in the text (and in the code) to the application of algorithms for sparse matrices. This complicates this truly unfortunate choice: overall, the code becomes only marginally applicable to large problems. Yet, one must acknowledge that solutions of truly large problems were never among the authors’ goals.

This book is a valuable contribution to solving problems relevant to overdetermined systems of simultaneous equations, common to experimental scientists: it handles the mathematical background with sufficient grace to make the underlying theory understandable, and provides computer code adequate for the numerical solutions of small- and medium-size problems. The book and code will be a good starting point for a numerical analyst inclined to produce code capable of handling truly large problems. The printed presentation of the book could be improved using typesetting better suited for math, and it is unfortunate that the C sources are polluted by inappropriate gimmickry. This notwithstanding, this work belongs on the shelves of any experimental laboratory for quantitative disciplines. Students and practitioners who work in such laboratories can do no wrong owning a copy.


1)

Press, W.H.; Teukolsky, S.A.; Vetterling, W.T.; Flannery, B.P.; , Numerical recipes: the art of scientific computing (3rd ed.)Numerical Recipes: Numerical Recipes. Cambridge University Press, New York, NY, 2007.

Reviewer:  A. Squassabia Review #: CR136471 (0912-1129)

Reproduction in whole or in part without permission is prohibited.   Copyright 2024 ComputingReviews.com™
Terms of Use
| Privacy Policy