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