The Python programming language is an excellent choice for learning, teaching, or doing computational physics. It is a well-designed, modern programming language that is simultaneously easy to learn and very powerful. It includes a range of features tailored for scientific computing, including features for handling vectors, inverting and diagonalizing matrices, performing Fourier transforms, making graphs, and creating 3D graphics.
This page contains a selection of resources I've developed for teachers and students interested in computational physics and Python.
I'm in the process of writing a book on computational physics using the Python programming language. Here are some of the completed chapters, which you're welcome to print out, use in class, or just read for yourself. These are drafts and they may contain the occasional typo, but I believe them to be reasonably error-free. If you spot any mistakes I'd be happy to hear about them.
The following files contain copies of the example programs from the chapters above. All programs are in Python version 3, but they will work fine in version 2 also (technically version 2.6 or later) if you add this line to the beginning of the program:
from __future__ import print_function,divisionThe file names below correspond to the names printed in the margins of the chapter pages next to each program.
Chapter 2:
evenodd.py – Check two
integers to ensure one is even and the other odd
fibonacci.py – Print out
the Fibonacci numbers up to 1000
polar.py – Convert from polar
to Cartesian coordinates
rydberg.py – Print out the
wavelengths of hydrogen lines
Chapter 3:
circular.py – Make a
density plot from the data in a file
hrdiagram.py – Calculate
and display a Hertzsprung–Russell diagram for a catalog of nearby
stars
lattice.py – Create a 3D
visualization of a simple cubic lattice
revolve.py – Create an
animation of a moving sphere
ripples.py – Calculate and
display the interference pattern generated by two circular sets of waves
Chapter 4:
qsho.py – Calculate the
internal energy of a quantum simple harmonic oscillator at temperature
T
Chapter 5:
gaussint.py – Evaluate an
integral using Gaussian quadrature
intinf.py – Evaluate an
integral over an infinite domain
trapezoidal.py –
Evaluate an integral using the trapezoidal rule
Here are some data sets that accompany the chapters and problem sets above:
altitude.dat – Altitude
above sea level, or depth below it, of points on the Earth's
surface, measured on a grid
circular.dat – Data file
for the density plots in Figure 2.3
stars.dat – Catalog of
temperatures and magnitudes for 7860 nearby stars
stm.dat – STM measurements of
the (111) surface of silicon
sunspots.dat – Data on
sunspots since 1749
velocities.dat –
Velocity of a moving particle as a function of time
Here are a few other pieces of Python code that are useful for some of the exercises.
banded.py – Solve a
tridiagonal or banded system of linear equations using Gaussian
elimination
colormaps.py –
Definitions of some useful colormaps for density plots
dcst.py – Perform forward and
inverse fast cosine and sine transforms
gaussxw.py – Calculate
positions and weights of integration points for Gaussian quadrature
Last modified: February 3, 2012
Special thanks to Gus Evrard, Brad Orr, Len Sander, and Bruce Sherwood for
Python info and comments.
Sources for data sets: