#include #include #include "RK.h" /* solve dx/dt = -2x + exp(-t) x(0)=0 analytic solution: x(t) = exp(-t) - exp(-2t) */ #define NumVars 1 static void differential(int n, double x[], double t, double value[]) { value[0] = -2.00*x[0] + exp(-t); } main() { int kcnt; double t, dt, tend; double x[NumVars]; char *filename = "rkf-adp-t0.dat"; FILE *fd; if ((fd = fopen(filename,"w")) == NULL) { fprintf(stderr, "cannot open %s\n", filename); exit(1); } kcnt = 1000; dt = 1.00/2/2/2/2/2/2/2; tend = 10.00; /* initial values */ t = 0.0; x[0] = 0.0; RungeKuttaFehlbergAdaptivefprint(fd, NumVars, x, t, dt); // print initial values RungeKuttaFehlbergAdaptive(fd, NumVars, x, differential, &t, &dt, tend, kcnt); //RungeKuttaFehlbergAdaptive(fd, NumVars, x, differential, &t, &dt, kcnt/2); fclose(fd); }