blob: d4656f8914858ff5185930ec2f382c64ddb646c9 [file] [log] [blame]
R. David Murray1666f192009-06-25 17:29:39 +00001# File: tdemo_chaos.py
2# Author: Gregor Lingl
3# Date: 2009-06-24
Martin v. Löwis87184592008-06-04 06:29:55 +00004
R. David Murray1666f192009-06-25 17:29:39 +00005# A demonstration of chaos
Martin v. Löwis87184592008-06-04 06:29:55 +00006
7from turtle import *
8
R. David Murray1666f192009-06-25 17:29:39 +00009N = 80
10
Martin v. Löwis87184592008-06-04 06:29:55 +000011def 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
R. David Murray1666f192009-06-25 17:29:39 +000020def jumpto(x, y):
21 penup(); goto(x,y)
Martin v. Löwis87184592008-06-04 06:29:55 +000022
R. David Murray1666f192009-06-25 17:29:39 +000023def 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, colour):
33 pencolor(colour)
Martin v. Löwis87184592008-06-04 06:29:55 +000034 x = start
R. David Murray1666f192009-06-25 17:29:39 +000035 jumpto(0, x)
Martin v. Löwis87184592008-06-04 06:29:55 +000036 pendown()
37 dot(5)
R. David Murray1666f192009-06-25 17:29:39 +000038 for i in range(N):
Martin v. Löwis87184592008-06-04 06:29:55 +000039 x=fun(x)
40 goto(i+1,x)
41 dot(5)
42
43def main():
Martin v. Löwis87184592008-06-04 06:29:55 +000044 reset()
R. David Murray1666f192009-06-25 17:29:39 +000045 setworldcoordinates(-1.0,-0.1, N+1, 1.1)
Martin v. Löwis87184592008-06-04 06:29:55 +000046 speed(0)
47 hideturtle()
48 coosys()
49 plot(f, 0.35, "blue")
50 plot(g, 0.35, "green")
51 plot(h, 0.35, "red")
R. David Murray1666f192009-06-25 17:29:39 +000052 # Now zoom in:
Martin v. Löwis87184592008-06-04 06:29:55 +000053 for s in range(100):
R. David Murray1666f192009-06-25 17:29:39 +000054 setworldcoordinates(0.5*s,-0.1, N+1, 1.1)
Martin v. Löwis87184592008-06-04 06:29:55 +000055 return "Done!"
56
57if __name__ == "__main__":
58 main()
59 mainloop()