xvi Preface
and they begin working on this at about the middle of the semester. That is when we
have covered the bulk of item one above, so they have seen a number of different
kinds of problems and understand numerical methods for solving them. The section
on numerical linear algebra is interesting and informative, but students who need
to, for example, invert matrices for their final projects can use a built-in routine
(few students have made the process of matrix inversion the central idea of their
projects) until the relevant material is covered (and even after, in most cases). The
additional topics section has then come at a time when students can take advantage
of the information in them without relying on it for their project (coupled, driven
oscillators can be solved and studied numerically before the nonlinear analysis
tools that are typically used to describe them are introduced).
While I use a subset of the programming language of Mathematica both in
the book, and in the course, I have found that students can re-render the content in
other languages relatively easily, and have had students work out the lab problems
using python, Java, C, Sage, and matlab. For those students with less of a pro-
gramming background, I provide, for each chapter, a Mathematica “notebook”
that contains all the commands used to generate the figures and example solu-
tions for the chapter. Then much of the programming can be done by re-working
examples from the chapter notebook. My intention is for students who are not as
interested in programming to have a way of learning the methods, without wor-
rying about their implementation as much. The computational methods are based
on implementation-independent mathematical ideas, and those are the core targets.
For students who enjoy the implementation side (I always did, although I was never
particularly good at it): optimizing and ordering commands efficiently, don’t look
at the chapter notebooks, work out your own routines from scratch.
This course is one of my favorites to teach – there are limitless physical problems
to set up, so it’s a great place for me to learn about new physics. Then the extent to
which it is difficult to solve most problems (even simple ones) analytically is always
surprising. And, finally, the numerical solutions that allow progress are often simple
and fast. I usually cover each chapter in a week with three lectures: on Monday, we
just set up physical problems, ones that come from different physics, but all end
in a common, fundamental “problem.” On Wednesday, we develop a method that
solves that problem, and then, during “Friday potpourri,” we return to some of the
problems from Monday and solve them, and discuss limitations or extensions of
the method. The chapter structure mimics these lectures, with physical problems
presented first, then methods, then additional items, sometimes additional physics,
other times, more in-depth discussion of the method or its variants.
What is notably missing from the weekly lectures is any sort of implementation
discussion – in addition to the three lectures, I also run three-hour “labs” every
week. Students come to these to work on the lab problems (I assign three or four