Cheney and Kincaid’s Numerical Mathematics and Computing, Sixth Edition, is an excellent textbook for those students who are minimally comfortable with Calculus, basic linear algebra, and a computer programming language. The authors provide a very good review of linear algebra concepts in the appendix. For those who have forgotten their linear algebra, the appendix is a terrific reference. This text can certainly be used for self-study. For an instructor of a course on numerical analysis this is an ideal book to use since the material is self-contained.
There are ample problems at the end of each section, allowing for an instructor to focus more on teaching the course than on developing meaningful exercises for the students. The exercises provided are of both the theoretical and the computational type. They are aimed to train the student to recognize in advance the advantages/disadvantages of a given numerical scheme as well as to verify the correctness of the output of a given numerical scheme. Many of the exercises are accompanied with answers (not solutions) towards the end of the book.
The text’s exposition is very friendly to a wide variety of learning styles. There is an abundance of numerical examples and supporting pseudocode for those who learn by example. Each section is replete with problems of all levels of difficulty for those who like to simply tackle problems with only a cursory reading of the section. Finally, all concepts are explained in a rigorous manner with theorems and proofs given as necessary.
The following is a chapter by chapter breakdown, interlaced with commentary as necessary:
Chapter 1 is a basic introduction chapter reviewing some fundamental concepts that are pertinent throughout the text.
Chapter 2 discusses the floating-point representation present in virtually every programming language. The examples and exercises provided in this chapter provide a sobering reminder that ((a + (b – a)) – b) need not always equal zero. Thus, ye be warned that if ye wishes to create a round(x, p) function that takes a (floating-point) number x and rounds it to p decimal places, then round(1.05*.7 , 2) = .73, even though 1.05*.7 = .735. While many programming languages offer infinite precision libraries, they come at a significant computational cost, in terms of both speed and memory required. Indeed, the name “infinite precision” is misleading since when performing calculations in infinite precision, one often must state the level of precision to which the calculations must be performed. As such, it is still finite precision and with enough calculations, the error will grow. Thus, students should not dismiss this section at all. In fact, it is the reviewer’s opinion that this is one of the most important sections of the text!
Chapter 3 provides a description of several standard root finding algorithms. Each method has its advantages and disadvantages and these are thoroughly discussed and supported with many examples and chapter exercises.
Chapters 4, 5, and 6 focus on standard numerical differentiation and integration techniques. For these chapters it is helpful that students remember their Calculus, since the world of analytic solutions is markedly different from the world of numerical solutions. While a good Calculus student may be comfortable with “the limit as h tends to zero of (f(x+h) – f(x))/h”, he/she will have to learn what such a statement means in a computing sense. The authors show that such a passage to the limit is not as trivial as it may initially seem.
Chapters 7 and 8 delve into solving systems of linear equations. In these chapters, concepts from the earlier chapters come into play, for example when attempting to invert large sparse matrices.
Chapters 9 and 12 discuss curve fitting and data smoothing techniques. Chapter 9 focuses on spline functions and Chapter 12 focuses on data smoothing and method of least squares.
Chapters 10, 11, and 14 explain the standard methods used to numerical solve ordinary differential equations. Chapter 10 is about ordinary differential equations, with an emphasis on the use of Taylor Series and the Runge-Kutta scheme. Chapter 11 deals with systems of ordinary differential equations, while Chapter 14 discusses boundary value problems. Chapter 13 is a short excursion into the Monte Carlo method with connecting remarks to numerical integration.
Chapter 15 wades into partial differential equations. While this is a fairly large topic, the discussion in the text is short and to the point. Several common methods, including Crank-Nicolson, Lax-Wendroff, and Gauss-Seidel, are explained with accompanying pseudocode. Chapter 16 is about Minimization of Functions, and Chapter 17 is about Linear Programming techniques.
The last few chapters in this text are meant to be surface-scratching overviews only of very deep and well-researched topics. A student wishing to take more advanced courses on the topics covered in Chapters 13, 15, 16, and 17, can certainly use this text as strong introductory preparation. Certainly the first 11 chapters would be sufficient for a standard one-semester course.
All in all, Numerical Mathematics and Computing Sixth Edition by Cheney & Kincaid is a very well written and very well thought out text.
Manan Shah splits his time as a mathematician in industry during the day and as an academic researcher in the evenings.
1.1 Preliminary Remarks.
1.2 Review of Taylor Series.
2. FLOATING-POINT REPRESENTATION AND ERRORS.
2.1 Floating-Point Representation.
2.2 Loss of Significance.
3. LOCATING ROOTS OF EQUATIONS.
3.1 Bisection Method.
3.2 Newton’s Method.
3.3 Secant Method.
4. INTERPOLATION AND NUMERICAL DIFFERENTIATION.
4.1 Polynomial Interpolation.
4.2 Errors in Polynomial Interpolation.
4.3 Estimating Derivatives and Richardson Extrapolation.
5. NUMERICAL INTEGRATION.
5.1 Lower and Upper Sums.
5.2 Trapezoid Rule.
5.3 Romberg Algorithm.
6. ADDITIONAL TOPICS ON NUMERICAL INTEGRATION.
6.1 Simpson’s Rule and Adaptive Simpson’s Rule.
6.2 Gaussian Quadrature Formulas.
7. SYSTEMS OF LINEAR EQUATIONS.
7.1 Naive Gaussian Elimination.
7.2 Gaussian Elimination with Scaled Partial Pivoting.
7.3 Tridiagonal and Banded Systems.
8. ADDITIONAL TOPICS CONCERNING SYSTEMS OF LINEAR EQUATIONS.
8.1 Matrix Factorizations.
8.2 Iterative Solutions of Linear Systems.
8.3 Eigenvalues and Eigenvectors.
8.4 Power Method.
9. APPROXIMATION BY SPLINE FUNCTIONS.
9.1 First-Degree and Second-Degree Splines.
9.2 Natural Cubic Splines.
9.3 B Splines: Interpolation and Approximation.
10. ORDINARY DIFFERENTIAL EQUATIONS.
10.1 Taylor Series Methods.
10.2 Runge-Kutta Methods.
10.3 Stability and Adaptive Runge-Kutta and Multistep Methods.
11. SYSTEMS OF ORDINARY DIFFERENTIAL EQUATIONS.
11.1 Methods for First-Order Systems.
11.2 Higher-Order Equations and Systems.
11.3 Adams-Bashforth-Moulton Methods.
12. SMOOTHING OF DATA AND THE METHOD OF LEAST SQUARES.
12.1 Method of Least Squares.
12.2 Orthogonal Systems and Chebyshev Polynomials.
12.3 Other Examples of the Least-Squares Principle.
13. MONTE CARLO METHODS AND SIMULATION.
13.1 Random Numbers.
13.2 Estimation of Areas and Volumes by Monte Carlo Techniques.
14. BOUNDARY-VALUE PROBLEMS FOR ORDINARY DIFFERENTIAL EQUATIONS.
14.1 Shooting Method Shooting Method Algorithm.
14.2 A Discretization Method.
15. PARTIAL DIFFERENTIAL EQUATIONS.
15.1 Parabolic Problems.
15.2 Hyperbolic Problems.
15.3 Elliptic Problems.
16. MINIMIZATION OF FUNCTIONS.
16.1 One-Variable Case.
16.2 Multivariate Case.
17. LINEAR PROGRAMMING.
17.1 Standard Forms and Duality.
17.2 Simplex Method.
17.3 Approximate Solution of Inconsistent Linear Systems.
APPENDIX A. ADVICE ON GOOD PROGRAMMING PRACTICES.
A.1 Programming Suggestions.
APPENDIX B. REPRESENTATION OF NUMBERS IN DIFFERENT BASES.
B.1 Representation of Numbers in Different Bases.
APPENDIX C. ADDITIONAL DETAILS ON IEEE FLOATING-POINT ARITHMETIC.
C.1 More on IEEE Standard Floating-Point Arithmetic.
APPENDIX D. LINEAR ALGEBRA CONCEPTS AND NOTATION.
D.1 Elementary Concepts.
D.2 Abstract Vector Spaces.
ANSWERS FOR SELECTED PROBLEMS.