# 584 Computational Methods

Tentative Syllabus

## Mark Alford (Jan 16, 23, and 30, 2020)

Mathematica

Goal: Mathematica is an incredibly powerful tool for physics: it does symbolic math, numerical calculations, data plotting, etc.
This part of the course will give students a good basic knowledge of Mathematica.

Requirements: Before starting the class, students should

• Make sure you have easy access to Mathematica. Preferably it should be installed on your own laptop.
• Undergraduates (and non-physics grads): you can buy Mathematica from Wash U. Go to the Software Licensing Catalog (note that this URL is only accessible from within Wash U) and click on the link for Mathematica - Wolfram Research.
• Reproduce all the examples in my Introduction to Mathematica
• Study (and preferably reproduce) the examples in my Mathematica Techniques

Project: Students should bring their laptop, with Mathematica installed, to class.

For this segment of the course we will have teaching help from Dr. Mary Leopold (email here). Please feel free to contact her or Prof. Alford with any questions about the project.

## Francesc Ferrer (February 6, 13 and 20, 2020) ((tentative dates))

Python

• Requirements:
• Make sure that you bring to class your computer with a working Python environment (including Numpy, Scipy and Matplotlib). Consider for example the Anaconda distribution, which is available for free and provides a one-click Python installation for Windows, Linux and Mac.
• Our first goal will be to write a script that produces the bifurcation diagram for the tent-map. To develop the script, and to get used to the language itself, it will be very useful to run Python interactively. It is highly recommended that you use Ipython for this purpose. You can think of Ipython as an equivalent to the Mathematica FrontEnd containing an integrated graphics environment, easily accessible help, and many other useful features. You can launch the shell from the command line ('ipython --pylab' loads the graphics environment automatically), which is faster, or use its web-based notebook environment ('jupyter-notebook').
• Background:
• Some good resources to get acquainted with the basics of the language are listed in the official Python site: Tutorials. An accessible, yet fairly complete, one can be found here; if you have a little bit of programming experience, you might want to browse Google's Python class.
• Matplotlib will allow you to plot functions and it provides the source code for an extensive list of examples.
• Example notebook
• Tent map bare notebook

## Mike Ogilvie (Feb 27; March 5 and 19) ((tentative dates))

Monte Carlo, Metropolis and the Ising Model

• Project

Our goal is to learn to use Monte Carlo simulation to understand the behavior of complex systems with many degrees of freedom. We will study the two-dimensional Ising model, perhaps the most celebrated model in all theoretical physics.

• Background

Introductory material on the Ising model can be found in most graduate-level statistical mechanics texts, as well as here: Ising model.

• Requirements

We will continue with Python. You may use the the iPython environment if you like. Notes and a basic Ising simulation in Python will be sent to you. As written, the Ising simulation requires the use of numpy and matplotlib. If you do not want to use matplotlib for plotting, you can comment out the relevant code. The notes contain a number of problems. You will be expected to do at least three of these, and everyone must do the first problem.

• Lecture Notes on Ising Model
• Ising model python code

File:Ising.pdf This pdf is a hack to give you a downloadable version of the Ising model code, rather than the annotated version in the notes. If you can copy this pdf into a .py file, fine, but I will send out the .py file (text) to everyone registered in the course along with the notes pdf.

## Ryan Ogliore (April 3, 10, and 17) ((tentative dates))

MATLAB

MATLAB stands for matrix laboratory. It is a proprietary, commercial programming language developed by MathWorks. MATLAB is primarily for numerical calculations but can also perform symbolic manipulations. The capabilities of MATLAB can be greatly expanded via toolboxes and packages so that one can build, e.g. graphical-user interfaces in MATLAB. MATLAB is a high-level interpreted language (not compiled), but it can call functions written in C or Fortran. MATLAB is used broadly in science and engineering. MATLAB’s power comes from its ease of use, pre-built set of toolboxes, interactive development environment, and visualization. A feature particular to MATLAB is that arithmetic operations are assumed to be matrix operations unless specified otherwise.