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

In most engineering problems, we encounter a coupled system of jj first-order differential equations evolving with respect to a single independent variable tt:

dy1dt=f1(t,y1,y2,…,yj)dy2dt=f2(t,y1,y2,…,yj)    ⋮dyjdt=fj(t,y1,y2,…,yj)\begin{aligned} \frac{\mathrm{d}y_1}{\mathrm{d}t} &= f_1(t, y_1, y_2, \dots, y_j) \\ \frac{\mathrm{d}y_2}{\mathrm{d}t} &= f_2(t, y_1, y_2, \dots, y_j) \\ &\;\;\vdots \\ \frac{\mathrm{d}y_j}{\mathrm{d}t} &= f_j(t, y_1, y_2, \dots, y_j) \end{aligned}

Happily, extending single-equation Runge-Kutta and multistep methods to coupled systems is completely straightforward! By assembling the state variables into a vector y(t)=[y1(t),y2(t),…,yj(t)]T\mathbf{y}(t) = [y_1(t), y_2(t), \dots, y_j(t)]^{\mathsf{T}} and the right-hand side rates into a vector function f(t,y)\mathbf{f}(t, \mathbf{y}), the system takes the compact vector form dydt=f(t,y)\frac{\mathrm{d}\mathbf{y}}{\mathrm{d}t} = \mathbf{f}(t, \mathbf{y}), and the ss-stage Runge-Kutta update becomes:

yi+1≈yi+h∑n=1sankn\mathbf{y}_{i+1} \approx \mathbf{y}_i + h \sum_{n=1}^{s} a_n \mathbf{k}_n

with vector stage slopes:

kn=f ⁣(ti+pnh,  yi+h∑m=1sqnmkm)\mathbf{k}_n = \mathbf{f}\!\left(t_i + p_n h,\; \mathbf{y}_i + h \sum_{m=1}^{s} q_{nm} \mathbf{k}_m\right)