#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) );
}