Project III (MATH3382) 2017-18


Step in time!

A Yeates

Description

Without a doubt, one of the most important tasks in applied mathematics is to solve differential equations. This must almost always be done numerically, since exact solutions cannot be found. In this project, we will learn about time-stepping schemes for solving ordinary differential equations (ODEs). Starting with an initial condition, the solution is advanced forward in time in a series of discrete steps.

In the "real world", engineers and scientists usually use built-in functions such as ode45 in Matlab, or scipy.integrate.ode in Python. In this project we will learn what is going on under the hood. There is a rich and interesting mathematical theory for addressing questions such as accuracy, stability etc, dating back to the pioneering work of famous names such as Adams, Bashforth and Runge in the late 19th Century.

We will begin by looking at the theory of the most commonly used Runge-Kutta methods, and you will write your own implementations in Python. The vast breadth of numerical methods for ODEs will then offer many possible directions for the project.

This material is covered in the Numerical Differential Equations III/IV module which doesn't run this year. But here the emphasis will be on practical coding in Python in addition to the mathematical theory covered in that module.

Prerequisites

Either Numerical Analysis II or Mathematical Modelling II (or both). In particular, you will need to be familiar with the basics of coding in Python.

Resources

You can get an idea for the theory by googling "Runge Kutta method". Or have a look at the nice historical survey by Butcher.

Many textbooks on numerical analysis have a chapter on ODEs, so you may well have one already. For example, Chapter 12 of Suli & Mayers, or Chapter 5 of Burden & Faires. A more specialized book is A First Course in the Numerical Analysis of Differential Equations by Iserles.

email: A Yeates


Back