Explicit Central Difference MethodThe 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.
- 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 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 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
- The file, explicit_central_difference.c, contains a version of Explicit_Central_Difference_Method( ) written in C.