Algo & Chaos 2 : Le Papillon de Lorenz

Le travail de modélisation de Lorenz sur la convection atmosphérique nous offre un excellent exemple d’attracteurs étranges chaotiques.

Objectifs

Mathématiques

  • Résoudre numériquement le système d’équations différentielles de Lorenz
  • Visualiser dans l’espace des phases en 3D
  • Visualiser l’influence des conditions initiales

Informatiques

  • Utiliser un générateur Python (yield)
  • Tracer des courbes en 3D
  • Animer une fenêtre matplotlib
  • Enregistrer des animations en .gif ou mp4

L’origine du papillon

En 1962, Edward Norton Lorenz publie un modèle simplifié d’atmosphère basé sur les équations de Navier-Stokes.

Edward Lorenz

En 1972, il propose ce titre célèbre :

Le battement d’ailes d’un papillon au Brésil peut-il provoquer une tornade au Texas ?

C’est l’origine de l’Effet papillon.

Vidéo : Science étonnante – Le chaos

Les équations de Lorenz

Équations de Lorenz

def lorenz(x, y, z, s=10, r=28, b=2.667):
    x_point = s*(y - x)
    y_point = r*x - y - x*z
    z_point = x*y - b*z
    return x_point, y_point, z_point

def lorenz_gen(x0, y0, z0):
    x, y, z = x0, y0, z0
    dt = 0.01
    while True:
        yield x, y, z
        x_point, y_point, z_point = lorenz(x, y, z)
        x = x + x_point * dt
        y = y + y_point * dt
        z = z + z_point * dt

Code sur GitHub

Visualisation 3D

Lorenz 3D

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

NbPasMax = 10000
xs, ys, zs = [], [], []
position = iter(lorenz_gen(0., 1., 3.))

for i in range(NbPasMax):
    x, y, z = next(position)
    xs.append(x)
    ys.append(y)
    zs.append(z)

fig = plt.figure()
ax = plt.axes(projection='3d')
ax.plot(xs, ys, zs, lw=0.5)
plt.show()

Code sur GitHub

Sensibilité aux conditions initiales

En 1961, Lorenz découvrit que des conditions initiales légèrement différentes produisaient des trajectoires complètement divergentes.

« Tout système physique ayant un comportement non périodique est imprévisible. » – Edward Lorenz

Animation 2D

Code de l’animation

Animations spectaculaires

Animation Spider

 

Code sur GitHub

Circuit électronique

Il est possible de construire un circuit électrique réel visualisant le papillon de Lorenz sur oscilloscope :

Circuit Lorenz

Conclusion

Notre incapacité à mesurer les conditions initiales avec précision infinie implique qu’il nous sera à jamais impossible de prédire l’avenir avec certitude !

Documentaire : CHAOS: UNE AVENTURE MATHÉMATIQUE

Dépôt GitHub : algo-chaos/2.PapillonDeLorenz