# Bogacki–Shampine method

The Bogacki–Shampine method is a method for the numerical solution of ordinary differential equations, that was proposed by Przemyslaw Bogacki and Lawrence F. Shampine in 1989 (Bogacki & Shampine 1989). The Bogacki–Shampine method is a Runge–Kutta method of order three with four stages with the First Same As Last (FSAL) property, so that it uses approximately three function evaluations per step. It has an embedded second-order method which can be used to implement adaptive step size. The Bogacki–Shampine method is implemented in the ode23 function in MATLAB (Shampine & Reichelt 1997).

Low-order methods are more suitable than higher-order methods like the Dormand–Prince method of order five, if only a crude approximation to the solution is required. Bogacki and Shampine argue that their method outperforms other third-order methods with an embedded method of order two.

The Butcher tableau for the Bogacki–Shampine method is:

 0 1/2 1/2 3/4 0 3/4 1 2/9 1/3 4/9 2/9 1/3 4/9 0 7/24 1/4 1/3 1/8

Following the standard notation, the differential equation to be solved is ${\displaystyle y'=f(t,y)}$. Furthermore, ${\displaystyle y_{n}}$ denotes the numerical solution at time ${\displaystyle t_{n}}$ and ${\displaystyle h_{n}}$ is the step size, defined by ${\displaystyle h_{n}=t_{n+1}-t_{n}}$. Then, one step of the Bogacki–Shampine method is given by:

{\displaystyle {\begin{aligned}k_{1}&=f(t_{n},y_{n})\\k_{2}&=f(t_{n}+{\tfrac {1}{2}}h_{n},y_{n}+{\tfrac {1}{2}}h_{n}k_{1})\\k_{3}&=f(t_{n}+{\tfrac {3}{4}}h_{n},y_{n}+{\tfrac {3}{4}}h_{n}k_{2})\\y_{n+1}&=y_{n}+{\tfrac {2}{9}}h_{n}k_{1}+{\tfrac {1}{3}}h_{n}k_{2}+{\tfrac {4}{9}}h_{n}k_{3}\\k_{4}&=f(t_{n}+h_{n},y_{n+1})\\z_{n+1}&=y_{n}+{\tfrac {7}{24}}h_{n}k_{1}+{\tfrac {1}{4}}h_{n}k_{2}+{\tfrac {1}{3}}h_{n}k_{3}+{\tfrac {1}{8}}h_{n}k_{4}.\end{aligned}}}

Here, ${\displaystyle z_{n+1}}$ is a second-order approximation to the exact solution. The method for calculating ${\displaystyle y_{n+1}}$ is due to Ralston (1965). On the other hand, ${\displaystyle y_{n+1}}$ is a third-order approximation, so the difference between ${\displaystyle y_{n+1}}$ and ${\displaystyle z_{n+1}}$ can be used to adapt the step size. The FSAL—first same as last—property is that the stage value ${\displaystyle k_{4}}$ in one step equals ${\displaystyle k_{1}}$ in the next step; thus, only three function evaluations are needed per step.

## References

• Bogacki, Przemyslaw; Shampine, Lawrence F. (1989), "A 3(2) pair of Runge–Kutta formulas", Applied Mathematics Letters, 2 (4): 321–325, doi:10.1016/0893-9659(89)90079-7, ISSN 0893-9659.
• Ralston, Anthony (1965), A First Course in Numerical Analysis, New York: McGraw-Hill.
• Shampine, Lawrence F.; Reichelt, Mark W. (1997), "The Matlab ODE Suite", SIAM Journal on Scientific Computing, 18 (1): 1–22, doi:10.1137/S1064827594276424, ISSN 1064-8275.