| # 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() |