Mathematics Source Library

Explicit Central Difference Method

Explicit Central Difference Method

The explicit central difference method is an explicit second order method for approximating the solution of the second order differential equation y''(x) = f(x, y) with initial conditions
y(x0) = y0, y'(x0) = y'0.

Note that the integrand f(x,y) does not depend upon y'.

The algorithm for the explicit central difference method is derived by using the central difference approximations for y'(x) and y''(x):

y'(x) = (y(x+h) - y(x-h) ) / 2h,

y''(x) = (y(x+h) - 2y(x) + y(x-h)) / h2.

Let xn = x0 + nh, yn be the approximation to y(xn), and fn = f(xn, yn), the procedure proceeds recursively via the explicit equation for yn + 1 as follows:
yn + 1 = 2 yn - yn - 1 + h2 fn.

In order to begin the recursion, two successive starting values of y are required, one of which is y0 and the other starting value y1 is approximated by
y1 = h y'(x0) + h2 f(x0, y0) / 2.

Particular classes of problems may have a more accurate estimate for y1.

Richardson extrapolation may be used to increase to increase both the order and accuracy.

Function List

  • void Explicit_Central_Difference_Method( double (*f)(double, double), double y[], double x0, double c, double h, int max_columns, int number_of_steps )

    This function uses the explicit central difference method to estimate the solution of the initial value problem, y'' = f(x,y); y(x0) = y[0] and y'(x0) = c, at x0 + nh where for
    n =1, …, number_of_steps and h is the step size. The argument max_columns is the number of step size halving + 1 used in Richardson extrapolation so that if richardson_columns = 1 then no extrapolation to the limit is performed. On input, y[0] is the value of y(x) at x = x0. On output y[n] is the value of y(x) at x = x0 + n h for
    n = 0, …, number_of_steps.

C Source Code