Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

 Open In Colab

Explicit solver methods take information up to the current solution yiy_i in order to directly predict the next step yi+1y_{i+1}.

Runge-Kutta Methods

The Runge-Kutta methods are a class of time-stepping techniques where the next time step is calculated from the current time step and an estimate of its slope (rate of change). Increased accuracy is achieved through approximating higher-order derivatives to improve our time step. Since we don’t generally have analytical higher derivatives, we sample the rate function f(t,y)f(t, y) at different positions across the step to approximate them.

Since we are time stepping, our independent variable is tt, and discretizing in time generates discrete times tit_i and their corresponding solutions y(t=ti)=yiy(t=t_i) = y_i.

For first-order (in time) equations, which include parabolic PDEs:

dydt=yi′=f(ti,yi)\frac{\mathrm{d}y}{\mathrm{d}t} = y'_i = f(t_i, y_i)

Consider the Taylor expansion:

yi+1=yi+yi′h+yi′′2h2+yi′′′6h3+⋯=yi+f(ti,yi)h+f′(ti,yi)2h2+f′′(ti,yi)6h3+⋯≈yi+h∑n=1sankn\begin{aligned} y_{i+1} &= y_i + y'_i h + \frac{y''_i}{2}h^2 + \frac{y'''_i}{6}h^3 + \cdots \\ &= y_i + f(t_i,y_i) h + \frac{f'(t_i,y_i)}{2}h^2 + \frac{f''(t_i,y_i)}{6}h^3 + \cdots \\ &\approx y_i + h \sum_{n=1}^s a_n k_n \end{aligned}

where the last line is the general form of the Runge-Kutta methods. The weights ana_n are constants and knk_n are the slope function evaluated at different positions in the interval [ti,ti+1][t_i, t_{i+1}]. The goal is to match:

∑n=1sankn≈f(ti,yi)+f′(ti,yi)2h+f′′(ti,yi)6h2+⋯\sum_{n=1}^s a_n k_n \approx f(t_i,y_i) + \frac{f'(t_i,y_i)}{2}h + \frac{f''(t_i,y_i)}{6}h^2 + \cdots

as closely as possible with a series truncated in ss terms (called stages). Let’s build up to the general form step by step.