| # 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, color): | |
| pencolor(color) | |
| 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() | |