next up previous contents
Next: Recording Session Methodology Up: Lorenz Attractor Source Code Previous: lorenz.c: For solving and

lorenz-ng.c: For solving and outputting the Lorenz attractor data to a file

This program was used to create all of the non-quantized images of the lorenz attractor in this document. It simply acts as a functional flat file creation mechanism, generating output in row, column format.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define TIMESTEP 0.0001             /* Numerical timestep for dt        */
#define XSCALE   4                  /* Appropriate scaling factors for  */
#define YSCALE   4                  /*   each axis.                     */
#define ZSCALE   4
#define TSCALE   20                 /* Scaling factor for the time axis */
#define INTERVAL 100                /* Sample function every INTERVAL
                                       points for output */

void main()
{
    double x1, y1, z1, x, y, z, t, dt, t0=0.0;
    FILE  *file, *file2, *file3, *file4;

    file=fopen("output", "w");      /* Holds x-z plane view of
                                       attractor */
    file2=fopen("x", "w");          /* x versus time */
    file3=fopen("y", "w");          /* y versus time */
    file4=fopen("z", "w");          /* z versus time */

    
    x1=(y1=(z1=(t=0.0001)));        /* Initial conditions */
    dt=TIMESTEP;                    
    
    while((t*TSCALE)<639.0)
    {
        x=x1 + ( -10.0*x1  + 10.0*y1    ) * dt;  /* Solve system
                                                    numerically */
        y=y1 + ( 28.0*x1   - y1 - x1*z1 ) * dt;
        z=z1 + ( -(8/3)*z1 + x1*y1      ) * dt;
        t=t  +                              dt;

        if (t>=(t0+INTERVAL*TIMESTEP))        /* Write output to files */
        {
            fprintf(file, "%f %f\n", x, z);
            fprintf(file2, "%f %f\n", t, x);
            fprintf(file3, "%f %f\n", t, y);
            fprintf(file4, "%f %f\n", t, z);
            t0=t;
        }
        
        x1=x;
        y1=y;
        z1=z;
    }
    fclose(file);
    fclose(file2);
    fclose(file3);
    fclose(file4);
}



Mike Andrews
Wed Oct 23 01:18:29 EDT 1996