Lecturer: John Regan (john.regan@mu.ie)

This website is not maintained. Please see the moodle page for this course for up-to-date information.

Lectures and Tutorials

Lecture schedule: (1) Thursdays 12-1, lecture (2) Thursdays 2-4, lab

Previous exam solutions

Some previous exam solutions below.

The lectures, assignments, and problem collections should provide
orientation for the topics to be addressed in the 2022 exam. (Some
topics might be different from previous years.) In general however,
exam questions will closely align with lab exercises and assignments.

MP468C 2018 exam with solutions.

MP468C 2019 January exam with solutions.

MP468C 2019 Repeat exam with solutions.

Lab Exercises

Lab 01
problems

For the lab on 30th September.

John Brennan's notes

John's notes for MP468: John Brennan has written notes for some part of what used to be covered in this module.

Online external links

Hope some of the following are helpful. Please let me know if any of the links are broken!

- General notes on random variables and
Monte Carlo:
Class slides on random number generation. Similar material as the first two weeks of MP468.

(Author: BenZvi, Rochester)Class slides on random number generation, Monte Carlo integration, etc.. Similar material as the first two weeks of MP468.

(Author: ?, Harvard)Class notes on Monte Carlo methods. (Author: Goodman, NYU)

Chapter 7 of the Numerical Recipes in C.

- Inverse Transorm sampling for generating random variables with desired
distribution:
Also known as Inverse CDF sampling. In previous versions of this module, the phrase Transformation method was used.

1986 book ``Non-Uniform Random Variate Generation ''. Chapter 2 describes inverse transform sampling and the rejection method.

A blog post describing inverse transform sampling. The code is not python but easy to read.

(Author: M.Bonakdarpour) - Rejection method for generating random variables with desired
distribution:
A blog post on rejection sampling, with python code.

(Author: A.Kristiadi)Another blog post on the rejection method, also with python code.

(Author: jyyuan)Wikipedia page. (Not a very easy read, I found.)

A youtube video on rejection sampling. . (The code is in Mathematica and not discussed in detail.)

(Author: Ben Lambert ) - Monte Carlo integration:
Wikipedia page. First part is a pleasant read. Importance sampling is also introduced.

Notes on Monte Carlo integration and importance sampling, with exercises.

(Author: ?, Brigham Y Univ)Lecture slides covering Monte Carlo integration. Also material on random number generation.

(Author: Rummukainen, Helsinki) - Markov chain Monte Carlo, Ising model:
An undergraduate report on MCMC calculations for Ising model.

Easy to read. See derivations, Equations (6) and (7), for specific heat and magnetic susceptibility.Another undergraduate report on same topic.

Easy to read.A detailed description of the 2D Ising model phase transition and its simulation.

Should also be easy to read.Lecture notes from Leuven: ``Advanced Monte Carlo Methods''

Chapter 2 explains the basics of equilibrium MCMC very clearly and in detail.Notes: ``Monte Carlo Simulations of Spin Systems''

(Author: W.Janke, Leipzig)``Introduction to Monte Carlo Methods''

(Author: Katzgraber)``Introduction to Monte Carlo Methods for an Ising Model of a Ferromagnet''

(Author: Kotze)Lecture slides for Monte Carlo, simulations, phase transitions

From Helsinki. - Optimization:

Textbooks and other general sources

- General texts on Numerical Analysis/ Scientific Programming /
Computational techniques:
There are many, many textbooks covering aspects of numerical
techniques. Some are listed or discussed below. Of course, not all
topics of MP468C are covered in every textbook.
*Numerical Recipes in C:*from the mid-1990's. This used to be a standard reference on computational techniques. The most relevant chapters for MP468 are probably Chapters 2, 7, 10, 16, 17 and 19.

It is publicly available --- you can obtain all individual sections from the publisher's webpage. There seem to be also pdf copies all around the internet, but I don't know the legality of those.

Some parts of the NRC are considered outdated, e.g., (1) the practice of using `float' instead of `double'; (2) the description of available software; (3) some naming conventions.

Nevertheless, you can learn a lot from this large text.MP468C was designed around Numerical Recipes, so many topics will be found there.

*Scientific Computing and Differential Equations: An Introduction to Numerical Methods*by G.Golub and and J.Ortega, 1992.

I like this book a lot and have learned a lot from it over the years.

Although this is also from the 1990's, the authors focus on fundamental principles which have not changed.*A Concise Introduction to Numerical Methods*by A.C.Faul, 2016.

A recent text; short and modern.*Numerical Methods in Physics with Python*by A.Gezerlis, 2020.

A new text; covers many topics in good detail.*Scientific Computing: An Introductory Survey*by M.T.Heath, 2nd ed. 2018.

Covers many of the MP468 topics.- The following two seem to be standard undergraduate texts on
numerical analysis nowadays. (I haven't used either of them myself.)
*Numerical Analysis*by Burden, Faires, Burden, 10th ed. 2015.*Numerical Analysis*by T.Sauer, 3rd ed. 2017.

- Python-specific information/texts:
- Information on python, numpy and scipy are widely available
online. Because there is so much information, avoiding unreliable
pages can be a problem.

I recommend whenever possible relying on the official documentation, e.g, the

official documentation for python, the

official documentation for numpy, and the

official documentation for Scipy.Regarding Q-and-A sites: my impression is that currently answers on stackoverflow.com tend to be reasonably informative and reliable, compared to many other sites.

Here is some serious documentation (``lectures'') for Scipy.

- There are by now quite a number of texts on scientific programming in
python. E.g.,
*A Primer on Scientific Programming with Python*by H.P.Langtangen, kindly made available online by the author.

- Information on python, numpy and scipy are widely available
online. Because there is so much information, avoiding unreliable
pages can be a problem.
- Texts on specific subjects covered in MP468C:
There are many texts on each of the following topics. In MP468C we can only introduce the basics of each topic, very superficially and very selectively. I list a (random-ish and very limited) selection of texts. Each of these texts covers the topic in far more depth than we can hope for in this module.

- Monte Carlo, random numbers, MCMC simulations:
In the next section, there are links to online sources for this part of the module. Some texts on the topic:

*Monte Carlo Methods in Statistical Physics*by M.E.J.Newman und G.T.Barkema, Oxford Univ. Press*Statistical Mechanics: Algorithms and Computations*by W.Krauth, Oxford Univ. Press*Explorations in Monte Carlo Methods*by R.W.Shonkwiler and F.Mendivil, Springer*A Guide to Monte Carlo Simulations in Statistical Physics*by D.P.Landau and K.Binder, Cambridge Univ. Press - Optimization:
*Nonlinear optimization: Methods and Applications*by H.A.Eiselt and C.-L.~Sandblom, Springer.*Algorithms for optimization*by M.J.Kochenderfer and T.A.Wheeler, MIT Press*Convex optimization*by S.Boyd and L.Vanderberghe, Cambridge Univ. Press*Numerical Optimization*by J.Nocedal and S.J.Wright, Springer - Linear equations, linear algebra,
matrices:
*Numerical Linear Algebra*by L.Trefethen and D.Bau, SIAM*Numerical Linear Algebra: An Introduction*by H.Wendland, Cambridge Univ. Press*Numerical Linear Algebra and Matrix Factorizations*by T.Lyche, Springer - Partial differential equations:
*Numerical Solution of Partial Differential Equations: An Introduction*by K.W.Morton and D.F.Mayers, Cambridge Univ. Press*Partial Differential Equations with Fourier Series and Boundary Value Problems*by N.Asmar, Dover

- Monte Carlo, random numbers, MCMC simulations:

Unix/ linux tutorial

Unix tutorial prepared by Jonivar some years ago