| # File: tdemo_chaos.py | 
 | # Author: Gregor Lingl | 
 | # Date: 2009-06-24 | 
 |  | 
 | # A demonstration of chaos | 
 |  | 
 | from turtle import * | 
 |  | 
 | N = 80 | 
 |  | 
 | def f(x): | 
 |     return 3.9*x*(1-x) | 
 |  | 
 | def g(x): | 
 |     return 3.9*(x-x**2) | 
 |  | 
 | def h(x): | 
 |     return 3.9*x-3.9*x*x | 
 |  | 
 | def jumpto(x, y): | 
 |     penup(); goto(x,y) | 
 |  | 
 | def line(x1, y1, x2, y2): | 
 |     jumpto(x1, y1) | 
 |     pendown() | 
 |     goto(x2, y2) | 
 |  | 
 | def coosys(): | 
 |     line(-1, 0, N+1, 0) | 
 |     line(0, -0.1, 0, 1.1) | 
 |  | 
 | def plot(fun, start, colour): | 
 |     pencolor(colour) | 
 |     x = start | 
 |     jumpto(0, x) | 
 |     pendown() | 
 |     dot(5) | 
 |     for i in range(N): | 
 |         x=fun(x) | 
 |         goto(i+1,x) | 
 |         dot(5) | 
 |  | 
 | def main(): | 
 |     reset() | 
 |     setworldcoordinates(-1.0,-0.1, N+1, 1.1) | 
 |     speed(0) | 
 |     hideturtle() | 
 |     coosys() | 
 |     plot(f, 0.35, "blue") | 
 |     plot(g, 0.35, "green") | 
 |     plot(h, 0.35, "red") | 
 |     # Now zoom in: | 
 |     for s in range(100): | 
 |         setworldcoordinates(0.5*s,-0.1, N+1, 1.1) | 
 |     return "Done!" | 
 |  | 
 | if __name__ == "__main__": | 
 |     main() | 
 |     mainloop() |