# Shooting Method for Boundary Value Problems

This module illustrates the shooting method for numerically solving boundary value problems for ordinary differential equations. A general boundary value problem (BVP) consists of an ordinary differential equation (ODE) with side conditions specified at more than one point. This module illustrates the solution of second-order scalar ODEs of the form u″ = f(t, u, u′) on an interval [a, b] with boundary conditions u(a) = α and u(b) = β. The shooting method replaces the given BVP by a sequence of initial value problems (IVPs) for the same ODE with initial conditions u(a) = α and u′(a) = x, where x is a guessed initial slope that is successively refined until the desired boundary condition at b is satisfied. Let u(b; x) be the value at b of the solution produced by a given IVP solver for initial conditions u(a) = α and u′(a) = x. The shooting method employs an iterative method for solving nonlinear equations to find an initial slope x* such that u(b; x*) = β. The solution to this final IVP then coincides with the solution to the original BVP.

The user begins by selecting from the menu provided an ODE and a specific solution to be sought (if there is more than one). Boundary values u(a) = α and u(b) = β are indicated by black dots on the graph. Next the user specifies the order of the Runge-Kutta method to be used as the IVP solver and the number of steps to take in traversing the interval [a, b]. The user also selects either the bisection method or safeguarded secant method as the nonlinear equation solver. The user next clicks Initialize to begin the process of solving the BVP. As part of initialization, predetermined starting guesses x0 and x1 for the nonlinear equation solver are used to bracket the solution to the BVP so that β is between u(b; x0) and u(b; x1), as can be seen from the solutions to the corresponding IVPs drawn on the graph. Such an interval bracketing the solution x* of the nonlinear equation is maintained throughout the solution process. Each iteration is performed by clicking Take Shot, which plots the IVP solution for the chosen initial slope and updates the bracketing interval. The default initial slope (shown by an arrow in the graph) for each iteration is determined by the selected nonlinear equation solver, but the user can adjust the slope within the bracketing interval, if desired, using the slider provided. Progress toward convergence of the iterations can be observed from the IVP solutions plotted in the graph (which go from blue to red as the solution to the BVP is approached) as well as from the printed residual. The meaning of the residual depends on the nonlinear equation solver selected: for the bisection method it is the width of the current bracketing interval, and for the secant method it is u(b; x) − β, where x is the initial slope for the most recent iteration. The initial slope x and the value of u(b; x) for each iteration are printed in the table below.

To compare approximate solutions obtained using different method orders or different numbers of steps, see the alternative Shooting Method module.

Reference: Michael T. Heath, Scientific Computing, An Introductory Survey, 2nd edition, McGraw-Hill, New York, 2002. See Section 10.3.

Developers: Evan VanderZee and Michael Heath