First Semester in Numerical Analysis with Python
Yaning Liu, University of Colorado Denver
Publisher: Auraria Institutional Repository
Conditions of Use
The topics covered by the book are overall appropriate and presented at a reasonable level for undergraduate students with a background in calculus, linear algebra, and programming. It gives a brief introduction to python, which would be... read more
The topics covered by the book are overall appropriate and presented at a reasonable level for undergraduate students with a background in calculus, linear algebra, and programming. It gives a brief introduction to python, which would be sufficient for a student with some programming experience. The numerical analysis concepts are often explained through worked (and narrated) examples implemented in python. This pragmatic approach generally works well, though there are times where specific implementation issues crowd out the fundamental idea at issue. On the spectrum between an implementation-focused numerical methods course and a theorem-proof numerical analysis course, this text is definitely more on the methods end. The range of topics is limited for a typical robust undergraduate course in numerical analysis. There is no coverage of numerical methods for differential equations or numerical linear algebra. There are some exercises given throughout the text, and these are often implementation/computation focused. An instructor using the text for a course will likely want to supplement the text with additional exercises, assignments, and/or projects.
The text of the main body of the book is generally clear and error-free. The index has references to code in Julia, where it should be to python. (This seems to be an artifact of the conversion of the original text that used the programming language Julia).
The general subject matter is very relevant to a wide range of disciplines and is unlikely to lose relevance soon. The design of the text incorporates python code throughout the text, so the shelf-life of the book is closely tied to how the language evolves. It will certainly be possible to update examples, code implementations, etc., though not trivially.
The tone of the presentation is generally straightforward and uses typical, concise mathematical conventions. As a stand-alone reference for a student working alone, it is light on providing motivation and context for the subject. As such, this book is better suited as a course text, where the experienced instructor can provide some of this additional framing. The book gives several extended example applications posed with the recurring fictional student Arya. These sections do add some levity to the narrative, but can also be a little distracting. Sometimes they are used as motivation to introduce a new topic, and in other places as a way to illustrate a specific problem. The overall readability of the text would be more clear if these sections were delineated more consistently (... are we still helping Arya understand her problem now, or have we moved on to a new topic?)
Overall the text uses consistent and appropriate terminology throughout. However, it could do a better job of distinguishing between rate and order of convergence. It uses big-O notation somewhat inconsistently throughout.
For the subject matter it is reasonably modular. Much of the material is inherently hierarchical, so there would be little motivation for wanting to rearrange sections. That said, there are a few sections that can be skipped, which is quite appropriate for an advanced undergraduate text. As noted above, it would be helpful to have chapters on numerical ODEs and/or numerical linear algebra.
The organization of the text is appropriate for the subject and the depth of coverage.
There is appropriate use of hypertext links in the pdf version, and these work well. The typesetting, images, and referencing are all done well. Switching between the main text and imbedded python code could be improved if the code were more visually offset (perhaps a light gray background?).
No grammar or copy edit issues were noted.
There is nothing in this book that can be considered culturally insensitive.
There are many forms that a first course in numerical analysis can take, with relative emphasis on different aspects of the field (implementation, empirical testing, applications, theory, etc.). This book could be a good component of a course that wishes to focus on implementation in python and doesn't need to cover topics beyond rootfinding, interpolation and numerical integration/differentiation.
Table of Contents
- 1 Introduction
- 2 Solutions of equations: Root-finding
- 3 Interpolation
- 4 Numerical Quadrature and Differentiation
- 5 Approximation Theory
About the Book
The book is based on “First semester in Numerical Analysis with Julia”, written by Giray Ökten. The contents of the original book are retained, while all the algorithms are implemented in Python (Version 3.8.0). Python is an open source (under OSI), interpreted, general-purpose programming language that has a large number of users around the world. Python is ranked the third in August 2020 by the TIOBE programming community index, a measure of popularity of programming languages, and is the top-ranked interpreted language. We hope this book will better serve readers who are interested in a first course in Numerical Analysis, but are more familiar with Python for the implementation of the algorithms.
The first chapter of the book has a self-contained tutorial for Python, including how to set up the computer environment. Anaconda, the open-source individual edition, is recommended for an easy installation of Python and effortless management of Python packages, and the Jupyter environment, a web-based interactive development environment for Python as well as many other programming languages, was used throughout the book and is recommended to the readers for easy code development, graph visualization and reproducibility.
About the Contributors
Yaning Liu, Department of Mathematical and Statistical Sciences - University of Colorado Denver