1# File: tdemo_chaos.py
2# Author: Gregor Lingl
3# Date: 2009-06-24
4
5# A demonstration of chaos
6
7from turtle import *
8
9N = 80
10
11def f(x):
12    return 3.9*x*(1-x)
13
14def g(x):
15    return 3.9*(x-x**2)
16
17def h(x):
18    return 3.9*x-3.9*x*x
19
20def jumpto(x, y):
21    penup(); goto(x,y)
22
23def line(x1, y1, x2, y2):
24    jumpto(x1, y1)
25    pendown()
26    goto(x2, y2)
27
28def coosys():
29    line(-1, 0, N+1, 0)
30    line(0, -0.1, 0, 1.1)
31
32def plot(fun, start, color):
33    pencolor(color)
34    x = start
35    jumpto(0, x)
36    pendown()
37    dot(5)
38    for i in range(N):
39        x=fun(x)
40        goto(i+1,x)
41        dot(5)
42
43def main():
44    reset()
45    setworldcoordinates(-1.0,-0.1, N+1, 1.1)
46    speed(0)
47    hideturtle()
48    coosys()
49    plot(f, 0.35, "blue")
50    plot(g, 0.35, "green")
51    plot(h, 0.35, "red")
52    # Now zoom in:
53    for s in range(100):
54        setworldcoordinates(0.5*s,-0.1, N+1, 1.1)
55    return "Done!"
56
57if __name__ == "__main__":
58    main()
59    mainloop()
60