In [1]:
%run Steppers.ipynb #Import stepper functions (Euler, RK4, etc)
%run ODEs.ipynb #Import ODEs (Pendulum etc)
import matplotlib as mpl
mpl.rc("savefig", dpi=500) #Set inline dpi for notebook images
import matplotlib.pyplot as plt
In [2]:
def LogisticMap(x0, n, r):
x=np.zeros(n)
x[0]=x0
for i in range(1,n):
x[i]=r*x[i-1]*(1-x[i-1])
return(x)
In [3]:
fig = plt.figure()
n = 100
x0= 0.5
r = 3
x = LogisticMap(x0=x0, n=n, r=r)
ns = range(n)
plt.plot(ns,x,label="$x_0= ${x0:.0f}$r= ${r:.0f}".format(x0=x0, r=r))
plt.show()
In [4]:
transient=300
duration=200
n = transient + duration
x0= 0.5
rs = np.linspace(0,4,50000)
#Preallocate arrays because appending is slow
xPlot=np.empty(len(rs)*duration)
yPlot=np.empty(len(rs)*duration)
for i,r in enumerate(rs):
x = LogisticMap(x0=x0, n=n, r=r)
xPlot[i*duration:(i+1)*duration]=r
yPlot[i*duration:(i+1)*duration]=x[transient:]
In [5]:
fig = plt.figure()
fig.set_size_inches(15,15)
plt.plot(xPlot, yPlot,"o", markersize=0.05, alpha=0.1)
plt.savefig("Figures/LogisticBifurcation.png", format="png", dpi=500)
plt.show()
In [6]:
transient=300
duration=200
n = transient + duration
x0= 0.5
rs = np.linspace(2.8,4,50000)
#Preallocate arrays because appending is slow
xPlot=np.empty(len(rs)*duration)
yPlot=np.empty(len(rs)*duration)
for i,r in enumerate(rs):
x = LogisticMap(x0=x0, n=n, r=r)
xPlot[i*duration:(i+1)*duration]=r
yPlot[i*duration:(i+1)*duration]=x[transient:]
In [7]:
fig = plt.figure()
fig.set_size_inches(15,15)
plt.plot(xPlot, yPlot,"o", markersize=0.05, alpha=0.1)
plt.savefig("Figures/LogisticBifurcationZoom.png", format="png", dpi=500)
plt.show()
In [ ]: