Integrators for time stepping

From Medusa: Coordinate Free Mehless Method implementation
Revision as of 12:57, 10 November 2017 by Jureslak (talk | contribs) (Explicit (single step) methods)

Jump to: navigation, search

This page describes how to solve ordinary differential equations numerically with examples from our library.

Introduction and notation

We are solving an initial value problem, given as

\begin{align*} \dot{y}(t) &= f(t, y) \\ y(t_0) &= y_0 \end{align*}

where y is the unknown (possibly vector) function, t_0 is the start time, f is the derivative (the functions we wish to integrate) and y_0 is the initial value of y. Numerically, we usually choose a time step \Delta t and integrate the function up to a certain time t_{\max}. Times os subsequent time steps are denoted with t_i and function values with y_i.

The simplest method is explicit Euler's method: y_{n+1} = y_{n} + \Delta t f(t, y_n)

Explicit (single step) methods

A family of single step methods are exaplicit Runge-Kutta methods

It is given by

y_{n+1} = y_n + h \displaystyle \sum_{i=1}^s \beta_i k_i

where

\begin{align*} k_1 & = f(t_n, y_n), \\ k_2 & = f(t_n+\gamma_2h, y_n+h(\alpha_{21}k_1)), \\ k_3 & = f(t_n+\gamma_3h, y_n+h(\alpha_{31}k_1+\alpha_{32}k_2)), \\ & \ \ \vdots \\ k_s & = f(t_n+\gamma_sh, y_n+h(\alpha_{s1}k_1+\alpha_{s2}k_2+\cdots+\alpha_{s,s-1}k_{s-1})). \end{align*}

To specify a particular method, one needs to provide the integer s (the number of stages), and the coefficients \alpha_{ij}, \beta_i and \gamma_i. This structure is known as the Butcher's tableau of the method.