# Finite Difference Method for Boundary Value Problems

This module illustrates the finite difference 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 finite difference method approximates the solution to the BVP by approximating the derivatives of the solution u at a set of mesh points within [a, b] using finite difference quotients, which transforms the BVP into a system of algebraic equations. Denote the fixed mesh points by ti, i = 0,…,n+1, where t0 = a, and tn+1 = b. Let yi denote the approximation to u(ti ), and let yi(1)( y) and yi(2)( y) denote finite difference approximations to u′(ti ) and u″(ti ), respectively, where y denotes the vector of approximate solution values at the mesh points, on which the finite difference approximations depend. The finite difference method seeks to find a y such that y0 = α, yn+1 = β, and yi(2)( y) = f(ti, yi, yi(1)( y)) for i = 1,…,n. The latter is a system of algebraic equations to be solved for y.

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 finite difference approximations and the number of mesh points (including boundary points). The mesh points are equally spaced, and the finite difference formulas used to approximate derivatives are centered (except near boundaries). The user clicks Initialize to begin the process of solving the BVP. A predetermined starting guess for the solution is drawn, represented as a piecewise linear function connecting the approximate solution values at the mesh points. The user clicks Iterate repeatedly to perform successive iterations of Broyden's Method to solve the system of algebraic equations. At each iteration, the piecewise linear representation of the next approximate solution is added to the graph, and the Euclidean norm of the residual is printed. The approximate solution curves are color coded according to their residuals, so as the solutions converge their colors change from blue to red.

To compare approximate solutions obtained using different method orders or different numbers of mesh points, see the alternative Finite Difference Method module.

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

Developers: Evan VanderZee and Michael Heath