#include <stdio.h> #include <math.h> #define STEPSIZE 0.1 /* stepsize in t*/ #define MAX 30.0 /* max for t */ #define BETA 0.1 #define OMEGA_SQUARED 1.0 #define N 301 double euler(double x_prev, double z_prev, int i); main() { FILE *output; double t, x[N], z[N]; int i,j; output=fopen("Euler.dat", "w"); /* initial conditions */ x[0] = 1.0; z[0] = 0.0; fprintf(output, "0\t%f\n", x[0]); for (j=1; j*STEPSIZE<=MAX ;j++) /* time loop */ { t=j*STEPSIZE; i = 0; x[j] = euler(x[j-1], z[j-1], i); i = 1; z[j] = euler(x[j-1], z[j-1], i); fprintf(output, "%f\t%f\n", t, x[j]); } fclose(output); } double euler( double x_prev, double z_prev, int i) { if ( i ==0 ) return (x_prev + STEPSIZE*z_prev); else if (i == 1) return (z_prev +STEPSIZE*( -2*BETA*z_prev - OMEGA_SQUARED*x_prev) ); }