This book is targeted primarily toward engineers and engineering students of advanced standing (sophomores, seniors, and graduate students). Familiarity with a computer language is required; knowledge of engineering mechanics (statics, dynamics, and mechanics of materials) is useful but not essential.
The text places emphasis on numerical methods, not programming. Most engineers are not programmers but rather problem solvers. They want to know what methods can be applied to a given problem, their strengths and pitfalls, and how to implement them. Engineers are not expected to write computer code for basic tasks from scratch; they are more likely to utilize functions and subroutines that have already been written and tested. Thus programming by engineers is largely confined to assembling existing bits of code into a coherent package that solves the problem at hand.
The “bit” of code is usually a function that implements a specific task. For the user, the details of the code are of secondary importance. What matters is the interface (what goes in and what comes out) and an understanding of the method on which the algorithm is based. Because no numerical algorithm is infallible, the importance of understanding the underlying method cannot be overemphasized; it is, in fact, the rationale behind learning numerical methods.
This book attempts to conform to these views. Each numerical method is explained in detail, and its shortcomings are pointed out. The examples that follow individual topics fall into two categories: hand computations thatillustrate the inner workings of the method and small programs that show how the computer code is utilized in solving a problem. Problems that require programming are marked with ▄.
The material consists of the usual topics covered in an engineering course on numerical methods: solution of equations, interpolation and data fitting, numerical differentiation and integration, solution of ordinary differential equations, and eigenvalue problems. The choice of methods within each topic is tilted toward relevance to engineering problems. For example, there is an extensive discussion of symmetric, sparsely populated coefficient matrices in the solution of simultaneous equations. In the same vein, the solution of eigenvalue problems concentrates on methods that efficiently extract specific eigenvalues from banded matrices.
An important criterion used in the selection of methods was clarity. Algorithms requiring overly complex bookkeeping were rejected regardless of their efficiency and robustness.