Mathematics Source Library
C & ASM


Nystrom's Fifth Order Method

Nystrom's Fifth Order Method

Nystrom's fifth order method is a Runge-Kutta method for approximating the solution of the initial value problem y'(x) = f(x,y);  y(x0) = y0 which evaluates the integrand,f(x,y), six times per step. See the comments in the source code for the algorithm.
This method is a fifth order procedure for which Richardson extrapolation can be used.

Function List

  • double Runge_Kutta_Nystrom( double (*f)(double, double), double y0, double x0, double h, int number_of_steps )

    This function uses Nystrom's fifth order method to return the estimate of the solution of the initial value problem, y' = f(x,y);  y(x0) = y0, at x = x0 + h * n, where h is the step size and n is number_of_steps.

  • double Runge_Kutta_Nystrom_Richardson( double (*f)(double, double), double y0, double x0, double h, int number_of_steps, int richardson_columns )

    This function uses Nystrom's fifth order method together with Richardson extrapolation to the limit to return the estimate of the solution of the initial value problem, y' = f(x,y);  y(x0) = y0, at x = x0 + h * n, where h is the step size and n is number_of_steps. The argument richardson_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.

  • void Runge_Kutta_Nystrom_Integral_Curve( double (*f)(double, double), double y[ ], double x0, double h, int number_of_steps_per_interval, int number_of_intervals )

    This function uses Nystrom's fifth order method to estimate the solution of the initial value problem, y' = f(x,y);  y(x0) = y0, at x = x0 + h * n * m, where h is the step size and n is the interval number 0 ≤ n ≤ number_of_intervals, and m is the number_of_steps_per_interval. The values are return in the array y[ ] i.e.
    y[n] = y(x0 + h * m * n), where m, n are as above.

  • void Runge_Kutta_Nystrom_Richardson_Integral_Curve( double (*f)(double, double), double y[ ], double x0, double h, int number_of_steps_per_interval, int number_of_intervals, int richardson_columns )

    This function uses Nystrom's fifth order method together with Richardson extrapolation to the limit to estimate the solution of the initial value problem, y' = f(x,y);  y(x0) = y0, at x = x0 + h * n * m, where h is the step size and n is the interval number 0 ≤ n ≤ number_of_intervals, and m is the number_of_steps_per_interval. The values are return in the array y[ ] i.e. y[n] = y(x0 + h * m * n), where m, n are as above. The argument richardson_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.

C Source Code

  • The file, runge_kutta_nystrom.c, contains versions of Runge_Kutta_Nystrom( ), Runge_Kutta_Nystrom_Richardson( ), Runge_Kutta_Nystrom_Integral_Curve( ), and Runge_Kutta_Nystrom_Richardson_Integral_Curve( ) written in C.