This textbook is intended for advanced undergraduate and beginning graduate students in mathematics seeking a solid foundation in the theory and practice of scientific computing. Students and researchers in other disciplines who want a fuller understanding of the principles underlying these algorithms will also find it useful.
The text is divided into three parts, corresponding to numerical methods for problems in calculus, differential equations, and linear algebra. Each part can be used for a one-term course (quarter or semester), making the book suitable for a two- or three-term sequence in numerical analysis or for largely independent courses on any of the three main topics.
Purchase through the SIAM bookstore (or elsewhere).
Considering adopting the book for your course? Request an examination copy from SIAM and/or ask me for further details about the book that might help in your decision.
Already adopting (adopted) the book for your course? Request a desk copy from SIAM. At the official website, you might also request PDF slides containing the figures and tables (and perhaps additional material) for each chapter, which may make it easier to refer to them during lectures.
Recommendations for additional material if/when a new edition is written? If you write to me, I will keep a record of suggestions.
Please write to me with errors (or possible errors). I will post them below, with the appropriate corrections, and will try to have as many as possible corrected in subsequent printings of the book.
Page 4, Example 1.2, Equation (1.4): 1/24 should be 1/81.
Page 320, Example 6.25: The fourth displayed Runge-Kutta "slope approximation" should be labelled $\mathbf{K}_4$, not $\mathbf{K}_2$.
Page 502, Exercise 4(b): $\sum_{i=1} p_{ij}$ should be $\sum_{i=1}^n p_{ij}$ (the upper limit was missing).
Code for many examples from the book will be provided in C (.c), MATLAB (.m), Python (.py) and Julia (.jl), or some subset of these languages. Example code in the book is given in C and/or MATLAB. An AI-driven code converter such as https://aicodeconvert.com/ can be used to quickly convert code in any of these languages to any of the others. For such well-established languages as these, you will often have to make only minor changes to the generated code (perhaps only stylistic changes) to obtain properly-written code that does what it is supposed to do.
The hope is that the code provided will make it easier for students and instructors to get involved more quickly in actual computing related to the material, and to provide a "base" of code for building up more sophisticated software or modifying it for other computational tasks of interest.
Chapter 1:
Chapter 2:
Chapter 3:
Polynomial interpolation at Chebyshev nodes on [a,b] via barycentric form [Set up for f(x)=1/(1+25 x^2) ] (.c) (.m)
Polynomial interpolation at uniform nodes on [a,b] via barycentric form [Set up for f(x)=1/(1+25 x^2) ] (.c) (.m)
Polynomial interpolation at generic nodes via barycentric form [Set up for f(x)=1/(1+25 x^2) ] (.m)
Divided difference table [Set up for data in Example 3.19] (.c)