| 
									
										
										
										
											2009-06-25 17:32:06 +00:00
										 |  |  | # File: tdemo_chaos.py | 
					
						
							|  |  |  | # Author: Gregor Lingl | 
					
						
							|  |  |  | # Date: 2009-06-24 | 
					
						
							| 
									
										
										
										
											2008-06-10 04:44:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-06-25 17:32:06 +00:00
										 |  |  | # A demonstration of chaos | 
					
						
							| 
									
										
										
										
											2008-06-10 04:44:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-09-21 07:32:10 +00:00
										 |  |  | from turtle import * | 
					
						
							| 
									
										
										
										
											2008-06-10 04:44:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-06-25 17:32:06 +00:00
										 |  |  | N = 80 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-10 04:44:07 +00:00
										 |  |  | 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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-06-25 17:32:06 +00:00
										 |  |  | def jumpto(x, y): | 
					
						
							|  |  |  |     penup(); goto(x,y) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def line(x1, y1, x2, y2): | 
					
						
							|  |  |  |     jumpto(x1, y1) | 
					
						
							| 
									
										
										
										
											2008-06-10 04:44:07 +00:00
										 |  |  |     pendown() | 
					
						
							| 
									
										
										
										
											2009-06-25 17:32:06 +00:00
										 |  |  |     goto(x2, y2) | 
					
						
							| 
									
										
										
										
											2008-06-10 04:44:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-06-25 17:32:06 +00:00
										 |  |  | def coosys(): | 
					
						
							|  |  |  |     line(-1, 0, N+1, 0) | 
					
						
							|  |  |  |     line(0, -0.1, 0, 1.1) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-10-09 18:44:32 -04:00
										 |  |  | def plot(fun, start, color): | 
					
						
							|  |  |  |     pencolor(color) | 
					
						
							| 
									
										
										
										
											2008-06-10 04:44:07 +00:00
										 |  |  |     x = start | 
					
						
							| 
									
										
										
										
											2009-06-25 17:32:06 +00:00
										 |  |  |     jumpto(0, x) | 
					
						
							| 
									
										
										
										
											2008-06-10 04:44:07 +00:00
										 |  |  |     pendown() | 
					
						
							|  |  |  |     dot(5) | 
					
						
							| 
									
										
										
										
											2009-06-25 17:32:06 +00:00
										 |  |  |     for i in range(N): | 
					
						
							| 
									
										
										
										
											2008-06-10 04:44:07 +00:00
										 |  |  |         x=fun(x) | 
					
						
							|  |  |  |         goto(i+1,x) | 
					
						
							|  |  |  |         dot(5) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def main(): | 
					
						
							|  |  |  |     reset() | 
					
						
							| 
									
										
										
										
											2009-06-25 17:32:06 +00:00
										 |  |  |     setworldcoordinates(-1.0,-0.1, N+1, 1.1) | 
					
						
							| 
									
										
										
										
											2008-06-10 04:44:07 +00:00
										 |  |  |     speed(0) | 
					
						
							|  |  |  |     hideturtle() | 
					
						
							|  |  |  |     coosys() | 
					
						
							|  |  |  |     plot(f, 0.35, "blue") | 
					
						
							|  |  |  |     plot(g, 0.35, "green") | 
					
						
							|  |  |  |     plot(h, 0.35, "red") | 
					
						
							| 
									
										
										
										
											2009-06-25 17:32:06 +00:00
										 |  |  |     # Now zoom in: | 
					
						
							| 
									
										
										
										
											2008-06-10 04:44:07 +00:00
										 |  |  |     for s in range(100): | 
					
						
							| 
									
										
										
										
											2009-06-25 17:32:06 +00:00
										 |  |  |         setworldcoordinates(0.5*s,-0.1, N+1, 1.1) | 
					
						
							| 
									
										
										
										
											2008-06-10 04:44:07 +00:00
										 |  |  |     return "Done!" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__": | 
					
						
							|  |  |  |     main() | 
					
						
							|  |  |  |     mainloop() |