#include #include #include "RK.h" /* d^2 x0/dt^2 = -omega^2 ( 2 x0 - x1) d^2 x1/dt^2 = -omega^2 (-x0 + 2 x1 - x2) d^2 x2/dt^2 = -omega^2 (-x1 + 2 x2 - x3) d^2 x3/dt^2 = -omega^2 (-x2 + 2 x3 ) let y0=x0, y1=x1, y2=x2, y3=x3, y4=(d/dt)x0, y5=(d/dt)x1, y6=(d/dt)x2, y7=(d/dt)x3 the above can be converted as (d/dt) y0 = y4 (d/dt) y1 = y5 (d/dt) y2 = y6 (d/dt) y3 = y7 (d/dt) y4 = -omega^2 ( 2 y0 - y1) (d/dt) y5 = -omega^2 (-y0 + 2 y1 - y2) (d/dt) y6 = -omega^2 (-y1 + 2 y2 - y3) (d/dt) y7 = -omega^2 (-y2 + 2 y3) */ #define NumVars 8 static double omega, mass, cmp; void diff(int n, double y[], double t, double value[]) { int i; int h; #if DEBUG printf("comp. diff.\n"); for (i=0; i