[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference rusure::math

Title:Mathematics at DEC
Moderator:RUSURE::EDP
Created:Mon Feb 03 1986
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:2083
Total number of notes:14613

1037.0. "Henon graphs anyone??" by MYVAX::ROBERUC () Tue Mar 14 1989 21:57

    { 
    Hi.

    Below is program that prints a scaled plot of a Henon equation.
    This is an equation that produces Henon Attractor (or the squashed 
    banana that is in many Chaos books. Below are the basic equations.)
    
                        /  \2
    X     = 1 + Y  - A ( X  )
     n+1         n      \ n/

    Y     = B Y
     n+1       n
    
    
    Some very interesting pictures can be drawn from some very simple
    A, B, x, y, and number of Iterates to draw values.

     A     B     x    y   Iterates
    1.4   .3     0    0   5000 +            : Henon attractor (banana)
    .005  -1     0    0   5000              : a circle (I think)
    .01   -.999  75   5   5000              : a butterfly (??)
    .005  -.999  75   5   5000              : 4 circles
    -.4   -.999  1.5  0   7000              : a paw print
    -.6   -.999  0    0   5000              : a head to an egg (??)
    .5    -.99   1.8  0   2000              : a spiral ??
    .9    -.999  0    0   2000              : a triangular spiral
    
    Its all very pretty and nice. I especially like the one butterfly
    shape. But could someone tell me why the second one draws a very
    near to a perfect circle??
    
    Rich
    }
    
    [INHERIT ('SYS$LIBRARY:STARLET')] PROGRAM Loop (Input, Output);

VAR
  I : UNSIGNED;
  I_1, X, Y : INTEGER;
  S_1, S_2,
  Factor, X_Hi, X_Lo, Y_Hi, Y_Lo, A_1, B_1, X_1, X_2, Y_1, Y_2 : QUADRUPLE;
  Bel, St, Dcs, Esc, C : CHAR;
  Str : VARYING [80] OF CHAR;
  F : TEXT;                      
BEGIN
  Bel := CHR (7);
  Esc := CHR (27);
  Dcs := CHR (144);
  St  := CHR (156);
         
  WRITE ('A: ');  READLN (A_1); 
  WRITE ('B: ');  READLN (B_1);

  I_1 := 500;
  X_1 := 0.0; 
  Y_1 := 0.0; 
  WRITE ('X: ');  READLN (X_1); S_1 := X_1;
  WRITE ('Y: ');  READLN (Y_1); S_2 := Y_1;
  WRITE ('I: ');  READLN (I_1);

  WRITE ('Graph, File, or Points? [G, F, or P]: ');
  READLN (C);
  IF (C = 'f') THEN C := 'F';
  IF (C = 'g') THEN C := 'G';
  IF (C = 'p') THEN C := 'P';

  IF (C = 'G') OR 
     (C = 'F') THEN BEGIN
    X_Hi := X_1; X_Lo := X_1;
    Y_Hi := Y_1; Y_Lo := Y_1;
    FOR I := 1 TO I_1 DO BEGIN
      X_2 := 1 + Y_1 - (A_1 * (X_1 ** 2));
      Y_2 := X_1 * B_1;
      X_Hi := MAX (X_Hi, X_2);
      X_Lo := MIN (X_Lo, X_2);
      Y_Hi := MAX (Y_Hi, Y_2);
      Y_Lo := MIN (Y_Lo, Y_2);
      X_1 := X_2;
      Y_1 := Y_2;
    END;
    Factor := 478 / MAX (X_Hi - X_Lo, Y_Hi - Y_Lo);
  END;

  X_1 := S_1;
  Y_1 := S_2;

  IF (C = 'G') THEN WRITELN (Esc + 'Pp;S(E); S[0,0]');

  IF (C = 'F') THEN BEGIN
    WRITE ('Filename: ');
    READLN (Str);
    OPEN (F, Str, HISTORY:=NEW);
    REWRITE (F);
    WRITELN (F, Esc + 'Pp;S(E); S[0,0]');
  END;

  FOR I := 1 TO I_1 DO BEGIN
    IF (C = 'G') THEN BEGIN
      X := ROUND ((X_1 - X_Lo) * Factor);
      Y := ROUND ((Y_1 - Y_Lo) * Factor);
      WRITELN ('p[', X:3, ',', Y:3, ']');
      WRITELN ('v[', X:3, ',', Y:3, ']');
    END;
    IF (C = 'F') THEN BEGIN
      X := ROUND ((X_1 - X_Lo) * Factor);
      Y := ROUND ((Y_1 - Y_Lo) * Factor);
      WRITELN (F, 'p[', X:3, ',', Y:3, ']');
      WRITELN (F, 'v[', X:3, ',', Y:3, ']');
    END;
    IF (C = 'P') THEN BEGIN
      WRITELN (I, X_1, Y_1); 
    END;

    X_2 := 1 + Y_1 - (A_1 * (X_1 ** 2));
    Y_2 := X_1 * B_1;

    X_1 := X_2;
    Y_1 := Y_2;
  END;

  IF (C = 'F') THEN WRITELN (F, St);
  IF (C = 'G') THEN WRITELN (St);
END.
T.RTitleUserPersonal
Name
DateLines
1037.1...Oops...MYVAX::ROBERUCWed Mar 15 1989 13:286
    Two asides:
    
    1: That program needs to be compiled in Pascal...
    2: It draws using ReGIS escape sequences
    
    Rich
1037.2one possible idea...CTCADM::ROTHIf you plant ice you'll harvest windFri Mar 17 1989 10:3363
1037.3Henon Heiles DECwindows plotting programsRKBA::TUCKERThat's a hell of a note!Fri Jun 01 1990 19:5928