Logistic Map and its Bifurcation Diagram

Introduction

The logistic map is a very simple quadratic map, which also is capable of highly chaotic behavior. It’s equation is like the following:

logisticmap_1.png

The constant r is also known as biotic potential, from the fact that this equation is also used as the idealistic population growth model in the field of theoretical ecology. Being idealistic, the model only considers intraspecific interaction based on population density and assumes generations don’t overlap.

Logistic Map is Chaotic

The logistic map is chaotic. Its behaviour significantly varies depending on the value of r. For 0 < r < 1, the population will die eventually, but, for 1 < r ≤ 3, the population will converge to logisticmap_2.png. Beyond 3 ≤ r < 4, it will not converge mostly, and further beyond r ≥ 4, it will diverge.

Let’s see what exactly happens:

In[1]:=

logisticmap_3.png

In[2]:=

logisticmap_4.png

Out[2]=

logisticmap_5.png

For r = 0.6, the population died quickly. For r = 1.3, the population converges quickly, but, for r = 2.95, converges slowly. For r = 3.3, you can observe the oscillation between 2 values, and between 4 values for r = 3.5. Finally, for r = 4, there’s just no pattern.

Since the population diverges for r ≥ 4, a different approach should be used to clearly see what happens. The below plots (n, logisticmap_6.png):

In[3]:=

logisticmap_7.png

Out[3]=

logisticmap_8.png

The Bifurcation Diagram of Logistics Map

While it’s certainly not impossible to poke into the details of logistics map with the above approach, we certainly need a better view on the subject. This is where “Bifurcation Diagram” kicks in. From Wikipedia:

a bifurcation diagram shows the values visited or approached asymptotically 
(fixed points, periodic orbits, or chaotic attractors) of a system

In simpler words, given a system F, a bifurcation diagram plots all possible values of F(x; σ) for bifurcation parameter x and initial condition σ. That is, to plot the bifurcation diagram of the logistic map, we have to

In[4]:=

logisticmap_9.gif

In[6]:=

logisticmap_10.gif

In[14]:=

logisticmap_11.png

The following function returns the population values of n-th generations, where skip < nskip + depth.

In[15]:=

logisticmap_12.png

In[16]:=

logisticmap_13.gif

In[18]:=

logisticmap_14.png

In[19]:=

logisticmap_15.gif

Out[20]=

logisticmap_16.png

In[21]:=

logisticmap_17.gif

Out[22]=

logisticmap_18.png

In[23]:=

logisticmap_19.png