$$\newcommand{\D}{\displaystyle} \renewcommand{\eqref}[1]{Eq.~(\ref{#1})}$$

# 2.10 Generic second order Runge-Kutta method

We seek to derive a generic second order Runge-Kutta method for the solution of a generic ODE (2.2) on the form: \begin{align} y_{n+1} &= y_{n} + h \left ( a_1 \, K_1 + a_2 \, K_2 \right ) \tag{2.86} \end{align}

where $$a_1$$ and $$a_2$$ are some weights to be determined and $$K_1$$ and $$K_2$$ are derivatives on the form: \begin{align} K_1 & = f(x_n,y_n) \qquad \text{and} \qquad K_2 = f(x_n + p_1\, h,y_n + p_2 \, K_1 \,h ) \tag{2.87} \end{align}

By substitution of (2.87) in (2.86) we get: \begin{align} y_{n+1} &= y_{n} + a_1 h\;f(x_n,y_n) + a_2 h \; f(x_n + p_1\, h,y_n + p_2 \, K_1 \,h ) \tag{2.88} \end{align}

Now, we may find a Taylor-expansion of $$f(x_n + p_1\, h,y_n + p_2 \, K_1 \,h )$$: \begin{align} f(x_n + p_1\, h,y_n + p_2 \, K_1 \,h ) &= f + p_1 h \; f_x + p_2 K_1 h\; f_y + \text{h.o.t.} \nonumber \\ & = f + p_1 h \; f_x + p_2 h \;f f_y + \text{h.o.t.} \tag{2.89} \end{align} where we for convenience have adopted the common notation for partial derivatives \begin{align} f_x \equiv \frac{\partial f}{\partial x} \qquad \text{and} \qquad f_y \equiv \frac{\partial f}{\partial y} \tag{2.90} \end{align}

By substitution of (2.89) in (2.88) we eliminate the implicit dependency of $$y_{n+1}$$ \begin{align} y_{n+1} &= y_{n} + a_1 h\,f(x_n,y_n) + a_2 h \left ( f + p_1 h \; f_x + p_2 h \; f f_y \right ) \nonumber \\ &= y_{n} + (a_1 + a_2)\; h f + \left ( a_2 p_1 \; f_x + a_2 p_2 \;f f_y \right ) \, h^2 \tag{2.91} \end{align}

Further, a second order derivative of the solution to (2.2) may be obtained by differentiation: \begin{align} y'' = \frac{d^2 y}{dx^2} = \frac{df}{dx} = \partial{f}{x} \; \frac{dx}{dx} + \partial{f}{y} \frac{dy}{dx} = f_x + f f_y \tag{2.92} \end{align} which may be used in a second order Taylor expansion of the solution of (2.2): \begin{align} y(x_n+h) = y_n + h y' + \frac{h^2}{2} \; y'' + O(h^3) \tag{2.93} \end{align} Substitution of (2.92) and (2.2) into (2.93) yields: \begin{align} y(x_n+h) = y_n + h f + \frac{h^2}{2} \left (f_x + f f_y \right ) + O(h^3) \tag{2.94} \end{align}

Now the idea of the generic second order Runge-Kutta method is to select $$a_1$$, $$a_2$$, $$K_1$$, and $$K_2$$ in such a way that (2.91) approximates (2.94), which will be true if: \begin{align} a_1 + a_2 = 1 \nonumber \\ a_2 \, p_1 = \frac{1}{2} \tag{2.95}\\ a_2 \, p_2 = \frac{1}{2} \nonumber \end{align}

Note, that since we have 4 unknowns ($$a_1$$, $$a_2$$, $$K_1$$, and $$K_2$$) and only 3 equations in (2.95), several methods of the kind proposed in (2.86) are possible. 2.9 Heun's method is retrieved by selecting $$a_2=1/2$$, from which we get $$a_1=1/2$$ and $$p_1=p_2=1$$ from (2.95).