This was my first attempt at exploring the Lorenz attractor. It simply plots the familiar x-z plane image of the attractor, along with each of the three variables on time axes.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <vga.h>
#define TIMESTEP 0.0001
#define VIDMODE G640x480x16
#define XSCALE 4
#define YSCALE 4
#define ZSCALE 4
#define TSCALE 20
void main()
{
double x1, y1, z1, x, y, z, t, dt;
int xp, yp, tp=0, gxp, gyp, gzp;
FILE *file;
file=fopen("output", "w");
x1=(y1=(z1=(t=0.0001)));
dt=TIMESTEP;
vga_setmode(VIDMODE);
vga_setcolor(1);
vga_drawline(320,0,320,479);
vga_drawline(0,240,639,240);
vga_drawline(0,300,639,300);
vga_drawline(0,380,639,380);
vga_drawline(0,460,639,460);
vga_setcolor(15);
while(tp<639)
{
x=x1 + ( -10.0*x1 + 10.0*y1 ) * dt;
y=y1 + ( 28.0*x1 - y1 - x1*z1 ) * dt;
z=z1 + ( -(8/3)*z1 + x1*y1 ) * dt;
t=t + dt;
xp=320+(int)floor(XSCALE*x);
yp=240-(int)floor(YSCALE*z);
tp=(int)floor(TSCALE*t);
if (tp>639)
{
tp=479;
/* t=0.0;*/
}
gxp=300-(int)floor(XSCALE*x/4);
gyp=380-(int)floor(YSCALE*y/4);
gzp=460-(int)floor(ZSCALE*z/4);
/* vga_setcolor(0);
vga_drawline(tp, 241, tp, 479);
vga_setcolor(1);
vga_drawpixel(tp,300);
vga_drawpixel(tp,380);
vga_drawpixel(tp,460);
if (tp==320) vga_drawline(320,0,320,479);*/
vga_setcolor(15);
vga_drawpixel(xp,yp);
vga_drawpixel(tp,gxp);
vga_drawpixel(tp,gyp);
vga_drawpixel(tp,gzp);
x1=x;
y1=y;
z1=z;
/* fprintf(file, "%f %f %f %f\n", t, x, y, z);*/
}
getchar();
fclose(file);
}