For Phoenix.
Stephen for next few slides
Linear -> non-linear -> chaotic
Definition: A dynamical system $f$ on a phase space $X$ is said to be topologically mixing if for every two open sets $A$ and $B$ in $X$, there is $N$ sufficiently large such that $f^n(A)\cap B \neq \varnothing$ for all $n \geq N$.
This gives four coupled equations: $$\dot{x}=\frac{P_x}{m}, \dot{y}=\frac{P_x}{m}$$ $$\dot{P_x}=nx^{n-1}, \dot{P_y}=ny^{n-1}$$
Both of these methods can be solved either analytically or numerically for some large $n$
Ryan, Henry, Phoenix, Ryan?
In [2]:
import RectTable as rect
from IPython.display import HTML
videoLength=1500
simargs={}
simargs['balls']={0:[0.5,0.5,1.5,0.5]}
simargs['playbackSpeed']=60
simargs['trace']=True
simargs['width']=2
simargs['height']=2
simargs['nBalls']=1
simargs['friction']=False
simulation=rect.RectTable(**simargs)
ani=simulation.main(videoLength)
HTML(ani.to_html5_video())
Out[2]:
In [3]:
simargs['balls'][0]=[0.5,0.5,1.5*2**(1/2),0.5]
simulation=rect.RectTable(**simargs)
ani=simulation.main(videoLength)
HTML(ani.to_html5_video())
Out[3]:
In [4]:
simargs['balls']={0:[1,0.7,1.5,0.7],1:[1,0.7,1.51,0.7]}
simargs['nBalls']=2
simulation=rect.RectTable(**simargs)
ani=simulation.main(videoLength)
HTML(ani.to_html5_video())
Out[4]:
In [5]:
import random
nballs=75
simargs['trace']=False
simargs['nBalls']=nballs
for i in range(nballs+1):
simargs['balls'][i] = [1.5, 0.75, 1, 0.7]
simargs['balls'][i][2] += random.uniform(-0.1, 0.1)
simargs['balls'][i][3] += random.uniform(-0.1, 0.1)
simulation=rect.RectTable(**simargs)
ani=simulation.main(videoLength)
HTML(ani.to_html5_video())
Out[5]:
In [6]:
import circle
simargs['balls']={0:[0.5,0.5,1.5,0.5]}
simargs['nBalls']=1
simargs['trace']=True
simulation=circle.CircleTable(**simargs)
ani=simulation.main(videoLength)
HTML(ani.to_html5_video())
Out[6]:
In [7]:
simargs['balls']={0:[0,2**0.5,2,0]}
simargs['nBalls']=1
simargs['trace']=True
simulation=circle.CircleTable(**simargs)
ani=simulation.main(600)
HTML(ani.to_html5_video())
Out[7]:
In [8]:
simargs['balls']={0:[1,0.7,1.5,0.7],1:[1,0.7,1.51,0.7]}
simargs['nBalls']=2
simargs['trace']=True
simulation=circle.CircleTable(**simargs)
ani=simulation.main(videoLength)
HTML(ani.to_html5_video())
Out[8]:
In [1]:
simargs['trace']=False
simargs['nBalls']=nballs
for i in range(nballs+1):
simargs['balls'][i] = [1.5, 0.75, 1, 0.7]
simargs['balls'][i][2] += random.uniform(-0.1, 0.1)
simargs['balls'][i][3] += random.uniform(-0.1, 0.1)
simulation=circle.CircleTable(**simargs)
ani=simulation.main(videoLength)
HTML(ani.to_html5_video())
In [10]:
import Buminovich
simargs['balls']={0:[1,0.7,1.5,0.7],1:[1,0.7,1.501,0.7]}
simargs['nBalls']=2
simargs['trace']=True
simulation=Buminovich.Buminovich(**simargs)
ani=simulation.main(videoLength)
HTML(ani.to_html5_video())
Out[10]:
In [11]:
simargs['trace']=False
simargs['nBalls']=nballs
for i in range(nballs+1):
simargs['balls'][i] = [1.5, 0.75, 1, 0.7]
simargs['balls'][i][2] += random.uniform(-0.1, 0.1)
simargs['balls'][i][3] += random.uniform(-0.1, 0.1)
simulation=Buminovich.Buminovich(**simargs)
ani=simulation.main(videoLength)
HTML(ani.to_html5_video())
Out[11]:
In [12]:
import Lorentz
simargs['balls']={0:[1,0.7,1.5,0.7],1:[1,0.7,1.501,0.7]}
simargs['nBalls']=2
simargs['trace']=True
simulation=Lorentz.Lorentz(**simargs)
ani=simulation.main(videoLength)
HTML(ani.to_html5_video())
Out[12]:
In [13]:
simargs['trace']=False
simargs['nBalls']=nballs
for i in range(nballs+1):
simargs['balls'][i] = [1.5, 0.75, 1, 0.7]
simargs['balls'][i][2] += random.uniform(-0.1, 0.1)
simargs['balls'][i][3] += random.uniform(-0.1, 0.1)
simulation=Lorentz.Lorentz(**simargs)
ani=simulation.main(videoLength)
HTML(ani.to_html5_video())
Out[13]:
Possibly move GUI to near beginning?