``````

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 [ ]:

``````