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