This book is meant as an upper level undergraduate or graduate text in dynamical systems. There are three other versions of the book, using

MATLAB,

Maple, and

Mathematica. This book also doubles as a nice introduction to the Python programming language, which is particularly well suited to this subject. The author states that the prerequisites for using this text are real and complex analysis, calculus, differential equations and linear algebra, and possibly some familiarity with a programming language. I agree for the most part, but there do not seem to be any instances here where one needs complex analysis as such; a familiarity with the algebra of complex numbers and the Argand plane would seem to be sufficient.

Physically, the book is attractive enough, with high-quality thick paper stock and crisp printing, although the leaves are glued to the spine rather than sewn. The text is well organized on the whole, with each chapter beginning with aims and objectives, then a short paragraph outlining what the chapter will cover, the main content, and finally a listing of the Python programs mentioned in the chapter, a set of exercises and a chapter bibliography. The in-chapter examples are well chosen and mostly completely worked out, and the end of chapter exercises have answers in an appendix at the end. Finally, there is an appendix containing examination-type questions. There are many illustrations, many in full color, showing things like vector fields, surface and contour plots, and any plots that were generated in Python are labeled as such.

Most of the material covered is pretty standard for books on dynamical systems, although this is sometimes written at a higher level, or is terser than, some standard texts such as Strogatz’s

*Nonlinear Dynamics and Chaos*. Here the chapters on local and global bifurcations concentrate more on methods for the analysis of the bifurcations, and include some more advanced methods, such as Poincaré compactification, compared to Strogatz’s more intuition building approach. Students, especially undergraduates with less analysis under their belts would benefit by reading parts of Strogatz or other more elementary books alongside this text in some chapters.

Regarding the areas not covered in most other dynamics books, some of these are quite interesting, such as the second part of Hilbert’s sixteenth problem (what is the location and number of limit cycles that exist for planar polynomial differential equations of degree n?), electromagnetic waves and optical resonators, neural networks and binary oscillator computing. My guess is that some of these are included because they are areas of the author’s research, and that is not a problem here because they are treated at the same level as the rest of the topics. I had a little trouble reading the section on neural networks, however, which is an area I have never studied; there seem to be some holes in his explanations, e.g. there is no discussion of why one would want or need hidden layers. I had to look it up elsewhere.

Overall this is an attractive text, one that I wish I had access to when I was learning dynamical systems, and one that I would be glad to teach from. Given the number of topics covered, and the general terseness in some sections, which might require more intuitive introductions from other sources in some cases, it is unlikely that one could cover all the topics in this book in a single semester. However, with judicious pruning, one could construct a very nice one or two-semester course at an undergraduate, graduate or mixed level.

John Starrett is an emeritus professor of mathematics at the New Mexico Institute of Mining and Technology. His areas of specialization are dynamical systems and topology. Now retired, he spends his time traveling, making guitars and composing music.