(* * LANGUAGE : ANS Forth * PROJECT : Forth Environments * DESCRIPTION : Bifurcation Diagram based on Verhulst's Growth Model * CATEGORY : Graphic Wonders * AUTHOR : Marcel Hendrix * LAST CHANGE : Tuesday, December 09, 2003 10:09 PM, mhx *) NEEDS -miscutil NEEDS -graphics REVISION -bifurcat2 "ÄÄÄ Verhulst's Bifurcat Version 1.01 ÄÄÄ" PRIVATES DOC (* Bifurcation diagram of x' = ax(1-y); y' = axy *) ENDDOC 0.7e FVALUE y+ 0e FVALUE y- 0e FVALUE a PRIVATE 0e FVALUE x PRIVATE 0e FVALUE y PRIVATE : ITERATE ( ix -- ) S>F TO PenX #800 0 DO 1e x F- y F- x F* a F* ( F: -- x' ) x a F* y F* TO y TO x ( F: -- x' y' ) I #400 > IF x TO PenY Red PLOT-POINT ENDIF LOOP ;P : BIFURCATE ( F: a1 a2 -- ) FDEPTH 2 < ABORT" need 2 parameters" TEXTMODE? IF GRAPHICS ENDIF GCLEAR FLOCALS| a2 a1 | a2 a1 F- Xmax S>F F/ FLOCAL k 0 0 Xmax Ymax 0e y- Xmax S>F y+ SET-GWINDOW Xmax 0 DO I S>F k F* a1 F+ TO a a 1/F TO x 1e x F2* F- 0.01e F+ TO y I ITERATE LOOP TEXT ; :ABOUT CR ." Try a1 a2 BIFURCATE ( where 2.980e < a1,2 < 3.080e when 0.1e < x < 0.5e )" CR ." or a1 a2 BIFURCATE ( where 3.377e < a1,2 < 3.392e when 0.0e < x < 0.7e )" CR ." r1 TO y- r2 TO y+ sets Ymin and Ymax (scale)" CR CR ." Example: GCLEAR 0.25e TO y- 0.35e TO y+ 3.377e 3.392e BIFURCATE" ; .ABOUT -bifurcat2 CR DEPRIVE (* End of Source *)