home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Basic / MAXONB32.DMS / in.adf / Beispiele_1.3 / Examples / Lyapunov.bas < prev    next >
Encoding:
BASIC Source File  |  1994-04-14  |  2.5 KB  |  110 lines

  1.  
  2. '
  3. ' Lyapunov Space
  4. '
  5. ' written by   scott dhomas trenn
  6. '              797 Mitchell Street, Fredericton, NB, E3B 3S8, CANADA
  7. '              INTERNET: wilkie@jupiter.sun.csd.unb.ca
  8. '
  9.  
  10. REM $OPTION Y+
  11.  
  12. DEFINT a-z
  13.  
  14. SCREEN 1,640,400,LOG2(16),4
  15. WINDOW 1,,(0,0)-(640,400),16+32+128+256,1
  16.  
  17. PALETTE 0, .67,.67,.67 : PALETTE 1, 0,0,0
  18. PALETTE 13, 1,1,0 : PALETTE 7, 1,0,.8 : PALETTE 15, .8,.9,.8
  19.  
  20. LogOf2# = LOG(2)
  21.  
  22. IterationsStable = 100
  23. IterationsChaotic = 10
  24. xOrigin = 542
  25. xScale = 71
  26. yOrigin = 399
  27. ySize = 380
  28. rMin# = 1e-129#
  29. rMax# = 4#
  30.  
  31. PRINT "Lyapunov Space";
  32. LOCATE 2,1
  33. FOR lp = 0 TO 15 : COLOR lp : PRINT "*"; : NEXT lp
  34.  
  35. rStep# = (rMax# - rMin#) / (ySize+1)
  36. rChaotic# = 3.56994571869#
  37.  
  38. DIM counts(15), ranges#(15,2)
  39. FOR lp =  0 TO 15 : READ ranges#(lp,0), ranges#(lp,1), ranges#(lp,2) : NEXT lp
  40. DATA  0,      0,      0
  41. DATA  1,      0,      0
  42. DATA 15, -  .09,      0
  43. DATA 14, -  .20, -  .09
  44. DATA 13, -  .34, -  .20
  45. DATA 12, -  .485, -  .34
  46. DATA 11, -  .66, -  .485
  47. DATA 10, -  .88, -  .66
  48. DATA  9, - 1.12, -  .88
  49. DATA  8, - 1.44, - 1.12
  50. DATA  7, - 1.84, - 1.44
  51. DATA  6, - 2.43, - 1.84
  52. DATA  5, - 3.40, - 2.43
  53. DATA  4, -10.00, - 3.40
  54. DATA  3, -55.00, -10.00
  55. DATA  2,      0,      0
  56.  
  57. r# = rMin#
  58. FOR yCor = yOrigin TO yOrigin-ySize-1 STEP -1
  59.         x# = .5
  60.         total# = 0
  61.  
  62.         ' Eliminate transients
  63.         FOR n = 1 TO 50 : x# = (r# * x#) * (1-x#) : NEXT n
  64.  
  65.         ' Plot logistic system
  66.         IF r# < rChaotic# THEN
  67.                 Iterations = IterationsStable
  68.         ELSE
  69.                 Iterations = IterationsChaotic
  70.         END IF
  71.  
  72.         Total! = 0
  73.         FOR n = 1 TO Iterations
  74.                 x# = (r# * x#) * (1-x#)
  75.                 Total# = Total# + (LOG(ABS(r# - 2*r#*x#))/LogOf2#)
  76.         NEXT n
  77.         Lyap# = Total# / Iterations
  78.  
  79.         IF Lyap# > 0 THEN
  80.                 COLOR 1 : INCR counts(1)
  81.         ELSEIF Lyap# < ranges#(14,1) THEN
  82.                 COLOR 2 : INCR counts(2)
  83.         ELSE
  84.                 t = 2
  85.                 DO
  86.                         IF Lyap# > ranges#(t,1) AND Lyap# <= ranges#(t,2) THEN
  87.                                 COLOR ranges#(t,0) : INCR counts(t)
  88.                                 EXIT LOOP
  89.                         END IF
  90.                         INCR t
  91.                 LOOP
  92.         END IF
  93.  
  94.         xCor = XOrigin + Lyap# * xScale
  95.         IF xCor < 0 THEN xCor = 1 : COLOR 15
  96.         PSET (xCor, yCor)
  97. LINE -STEP (10,0)
  98.  
  99.         r# = r# + rStep#
  100. NEXT yCor
  101.  
  102. LOCATE 6,1
  103. FOR lp = 0 TO 15 : PRINT lp, counts(lp) : NEXT lp
  104.  
  105. WHILE INKEY$ = "" : SLEEP : WEND
  106. WINDOW CLOSE 1
  107. SCREEN CLOSE 1
  108.  
  109. END
  110.