/*** Integrates the pendlum using Euler method ***/ /*** Rechnergestütztes Wissenschaftliches Rechnen ***/ /*** University of Goettingen, Germany 2004 ***/ #include #include #include double f1(double t, double phi, double omega) { return(omega); } double f2(double t, double phi, double omega) { return(-sin(phi)); } int main(int argc, char **argv) { double phi, omega; /* phase space variables */ double phi_new, omega_new; /* variables at next step */ double h; /* stepsize */ int n, n_max; /* step, maximum step */ double t; /* time */ sscanf(argv[1], "%lf", &h); /* first argument = stepsize */ sscanf(argv[2], "%d", &n_max); /*2nd argument = numb. of steps */ phi=0; omega=1.0; t = 0; for(n=1; n<=n_max; n++) /* iterate over all times */ { printf("%f %f %f\n", t, phi, omega); /* print results */ phi_new = phi + h*f1(t,phi,omega); /* integrate */ omega_new = omega + h*f2(t,phi,omega); t += h; phi = phi_new; omega = omega_new; } return(0); }