| 
 /* runge.c */
#include <stdio.h>
#include <math.h>
int main()
{
    double a = 0.0, b = 1.0;
    double x0;
    double t, x, h, f(double, double);
    double k1,k2,k3,k4;
    int i, N;
    printf(" x0="); scanf("%lf", &x0);
    printf(" N="); scanf("%d", &N);
    h = (b - a) / N;
    t = a; x = x0;
    printf("%g %g\n", t, x);
    for (i = 0; i < N; i++) {
        k1 = h * f(t,x);
        k2 = h * f(t + h / 2, x + k1 / 2);
        k3 = h * f(t + h / 2, x + k2 / 2);
        k4 = h * f(t + h, x + k3);
        t = t + h;
        x = x + (k1 + 2 * k2 + 2 * k3 + k4) / 6;
        printf("%g %g\n", t, x);
    }
    printf("%g %20.15e\n", t, x);
    return 0;
}
double f(double t, double x)
{
    return x;
}
 |