Algo & Chaos 1 : La suite logistique et son diagramme de bifurcation

reproduction-du-lapin.jpeg

Découvrons la suite logistique Un+1 = r Un(1-Un) avec Python et matplotlib pour trouver le chaos qui s’y niche.

Suite Logistique

Objectifs

Mathématiques

  • Découvrir la suite logistique Un+1 = r Un(1-Un)
  • Tracer un graphique pour étudier la convergence d’une suite
  • Tracer le diagramme de bifurcation de cette suite

Informatiques

  • S’initier à l’utilisation de la bibliothèque matplotlib de Python
  • Tracer des courbes avec plot
  • Tracer des nuages de points avec scatter

La suite logistique

Cette suite est une modélisation de la croissance et décroissance des populations animales. Le taux r représente le taux de croissance, et (1-Un) limite la population.

Équation

Le professeur Robert M. May a popularisé cette équation dans Nature en 1976.

Vidéo : Veritasium sur la suite logistique

Coder une visualisation en Python

import matplotlib.pyplot as plt

nmax = 60
r = 2.7
u0 = 0.7

def u(n):
    u=u0
    for i in range(n):
        u=r*u*(1-u)
    return u

x = []
y = []
for n in range(0, nmax):
    x.append(float(n))
    y.append(float(u(n)))

plt.plot(x,y,'bo')
plt.title("Suite logistique")
plt.show()

Code sur GitHub

Étude de la convergence

Pour r=2,7 : convergence rapide

r=2.7

Pour r=3,4 : oscillation entre deux valeurs

r=3.4

Pour r=3,8 : chaos total

r=3.8

Pour r=3,831 : îlot d’ordre dans le chaos

r=3.83

Version interactive

Le diagramme de bifurcation

Bifurcation

import matplotlib.pyplot as plt

nmin, nmax = 40, 200
r, rmax, dr = 1.0, 4.0, 0.001
u0 = 0.6

def u(n, r, u0):
    u = u0
    for i in range(n):
        u = r*u*(1-u)
    return u

x, y = [], []
while r < rmax:
    for n in range(nmin, nmax):
        x.append(float(r))
        y.append(float(u(n,r,u0)))
    r += dr

plt.scatter(x, y, 1)
plt.show()

Code sur GitHub

Zoom sur la fractale

Zoom 1

Zoom 2

Conclusion

Icone

Des équations simples peuvent exhiber des comportements chaotiques complexes. Le physicien Mitchell Feigenbaum a découvert dans ce diagramme une constante universelle.

Dépôt GitHub : algo-chaos/1.SuiteLogistique