/* 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;
}
|