On successful completion of this module, students will be able to:

Write and compile numerical software in C++

Find an appropriate numerical technique to solve common problems in applied mathematics and theoretical physics and to recognise its limitations.

Construct numerical solutions to mathematical and physical problems in C++

Describe the output of their numerical software and interpret results reliably.

Module Content

The module aims to introduce the C++ programming language and object-oriented software concepts by getting students to construct numerical solutions to common problems in applied mathematics and theoretical physics.

C++:

Language basics: the compiler, variables, functions.

Conditions and loops.

Arrays, pointers and references

C++ classes

Numerical analysis:

Ordinary differential equations - solving initial-value problems with Euler and Runge-Kutta methods.

Ordinary differential equations - boundary-value problems and the shooting method.

Hamiltonian dynamics - symplectic integrators and the leap-frog method.

Partial differential equations - solving the 2d Laplace equation using simple iterative schemes (Jacobi, Gauss-Seidel and SOR) with Dirichlet and Von Neumann boundary data.

Introduction to Monte Carlo methods in statistical physics.

Module Prerequisite

MA1241 Mechanics I, and either MA2326 Ordinary Differential Equations or MA2332 Equations of Mathematical Physics II

Assessment Detail

This module will be examined in a 2 hour examination in Trinity term (60%). Four continuous assessment assignments will contribute 40% to the final grade for the module at the annual
examination session.
Supplemental if required will consist of 100% exam.