Dans la vie de tous les jours, on n'a pas de mal à se convaincre que de petites causes peuvent avoir de grands effets. J'ai cassé mon lacet, ce qui m'a fait perdre 5 min, alors j'ai raté mon bus puis mon train, j'ai donc pris ma voiture qui n'était pas bien révisée, j'ai eu un accident sur l'autoroute ce qui a provoqué un carambolage… Tout ça pour un lacet cassé.
Tout cela n'a rien de révolutionnaire : le monde est très complexe, 1000 trajectoires se croisent sans que l'on puisse les suivre toutes et la succession hasardeuse donnée précédemment semble n'être qu'un cas extrême de hasards imprédictibles dans un monde foisonnant.
Ce n'est pas de cela qu'il s'agit dans la théorie du chaos.
La théorie du chaos s'intéresse à des situations parfaitement bien décrite par des équations mathématiques où il n'y a aucune trace de hasard, des équations peu complexes de surcroît, et qui pourtant peuvent entraîner des comportement très complexes en apparence et imprédictibles.
Henri Poincaré a ainsi démontré que le système solaire est chaotique. Plutôt que d'expliquer ce que cela signifie, je vais plutôt poursuivre avec le cas de la météo qui a donné lieu au concept d'effet papillon.
Notez que la théorie du chaos est d'abord une théorie mathématique. Nos exemples s'appuient sur des applications physiques car c'est plus parlant mais une des idées principales de la théorie du chaos est qu'une équation simple peut engendrer une grande complexité. Appliquée à la physique, elle montre que la description d'un phénomène d'apparence complexe ne nécessite pas forcément des équations compliquées (comme par exemple la grande tache rouge de Jupiter !)
Vers 1970, la météorologie utilisait les plus gros ordinateurs. Edward Lorenz utilisait un ordinateur pour étudier un modèle mathématique très simplifié décrivant la météo d'une planète fictive. Ses équations décrivaient l'évolution de grandeurs comme la pression de l'air, le taux d'humidité, la température…
Nous appellerons $x$, $y$ et $z$ ces paramètres (peu importe ce qu'ils représentent). Ce sont des fonctions du temps, il faut donc comprendre $x(t)$, $y(t)$ et $z(t)$ mais pour alléger l'écriture, on ne précise pas $(t)$. Donc $x' = x'(t)$ représente la dérivée de $x(t)$.
Voici les équations (simplifiées) de Lorenz :
$$\begin{cases}x' = 10 (y-x)\\y' = 28 x - y - x z\\z' = -8/3 z + x y\end{cases}$$
Ce sont des équations différentielles : les inconnues sont les fonctions $x$, $y$ et $z$ et les équations portent sur ces fonctions et leurs dérivées.
Il y a généralement plusieurs solutions à un tel système. Le physicien s'intéresse à une solution pour laquelle les valeurs initiales sont données : $x(0)$, $y(0)$ et $z(0)$ sont connus.
Partant de ces valeurs initiales, on peut obtenir les valeurs pour tous les temps. Pour cela on va utiliser la méthode d'Euler.
Le principe en est simple : un dérivée comme $x'$ correspond à un taux de variation. Si dans petit temps $dt$, $x$ varie d'une quantité $dx$, la dérivée est $x' = \frac{dx}{dt}$.
$dx$ et $dt$ sont des notations de physicien. $d$ signifie que l'on parle d'une variation infinitésimale, infiniment proche de $0$. $dx$ est donc une variation de $x$ et $dt$ une variation de $t$.
Les équations se réécrivent alors :
$$\begin{cases}dx = 10 (y-x) dt\\dy = (28 x - y - x z) dt\\dz = (-8/3 z + x y)dt\end{cases}$$
Pour que ces équations restent justes mathématiquement, il faudrait $dt \to 0$. La méthode d'Euler consiste à se contenter d'une approximation en prenant simplement $dt$ assez petit.
Donc, en résumé :
def historique(x0, y0, z0, T, N):
'''
fonction réalisant la simulation suivant la méthode de Euler
x0 = valeur initiale de x
y0 = valeur initiale de y
z0 = valeur initiale de z
T = durée de la simulation
N = nombre d'étapes : T = N*dt
retour : tableaux tab_x, tab_y, tab_z des valeurs de x, y et z pour la durée T
'''
# à vous de compléter !
# principe du calcul :
# créer les tableaux tab_x, tab_y et tab_z en y mettant les valeurs initiales
# calculer la bonne valeur de dt
# répéter N fois le calcul :
# calcul de dx, dy et dz selon les équations de Lorenz
# en déduire les nouvelles valeurs de x, y et z
# stocker ces valeurs dans les tableaux
Complétez cette fonction puis ajouter le code suivante afin d'exécuter une simulation.
# Les deux déclarations qui suivent serviront à faire des graphiques import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # première simulation avec les paramètres x=0, y=0.1, z=0 x1,y1,z1 = historique(0,0.1,0,100,100000) # deuxième simulation très proche, le y0 passe à 0.099 x2, y2, z2 = historique(0,0.099,0,100,100000) # affichage du 1er graphique fig, ax = plt.subplots() ax.plot(x1[0:30000],'b') # courbe de x1 en bleu ax.plot(x2[0:30000],'r') # courbe de x2 en rouge plt.figure() # 2e graphique en 3D ax = plt.gca(projection='3d') ax.plot(x1, y1, z1, lw=0.5) plt.show()
La première figure est celle avec les courbes bleue et rouge.
Dans le programme précédent, nous avons lancé deux fois la simulation avec des paramètre initiaux très proche : $y(0)$ passe de $0,1$ dans le premier cas à $0,099$ dans le second cas. $x(0)$ et $z(0)$ sont inchangés.
La figure représente l'évolution de $x(t)$ dans les deux cas (la première simulation en bleu, la seconde en rouge)
Vous visualisez avec les outils d'aujourd'hui ce qu'Edward Lorenz découvrit en 1972 avec un ordinateur de l'époque et un une imprimante avec papier à listing en guise d'écran !
Vous observez deux courbes d'abord si proches qu'elles se superposent (on ne voit que la rouge, la bleue est en-dessous). Cela n'a rien de surprenant puisque les valeurs initiales étaient quasi-identiques. On s'attendrait à ce que cela continue ainsi longtemps et que peut-être les deux courbes s'écartent doucement… Mais non ! Après un temps où elles restent quasiment identiques, les deux courbes se séparent brusquement et deviennent très différentes.
On appelle ce phénomène la dépendance aux conditions initiales et c'est typique des phénomènes chaotiques. Un écart infinitésimal au début, semble d'abord rester sans importance mais finit par tout changer.
C'est de là que vient le concept d'effet papillon : dans nos équations, une différence comme un $0,1$ qui devient $0,099$ finit par entraîner une futur tout différent. De la même façon, un papillon qui bat des ailes ou ne bas pas des ailes au Brésil, cela fait une différence minuscule dans les conditions de pression atmosphérique a un moment donné, et cette différence, si petite soit-elle, finit par changer tellement le futur du climat qu'il pourrait aussi bien y avoir une différence aussi grande qu'une Tornade au Texas.
Cette idée est résumée dans le titre de l'article de Lorenz : « Predictability: Does the Flap of a Butterfly's Wings in Brazil Set off a Tornado in Texas? »
Cela peut sembler paradoxal mais le chaos a une forme de stabilité.
J'ai dit qu'un phénomène aussi petit que le battement d'aile de papillon pouvait changer le climat futur. Cela peut donner à penser que les équations de Lorenz prédisent un climat instable pouvant être totalement chamboulé par pas grand chose et alors on peut s'étonner de voir le climat se maintenir assez stable au cours des années (il n'y avait pas le changement climatique du temps de Lorenz !)
En vérité, si on reprend l'image du papillon et de la tornade, il faut préciser que le battement d'aile n'a aucune chance de provoquer une tornade là où il n'y en a jamais. Il y aurait eu de toute façon une tornade au Texas. Là seule différence est qu'elle arrive un peu plus tôt ou un peu plus tard.
Si vous regardez les courbes bleues et rouge, vous pouvez voir que, même quand elles se séparent, elles continuent à avoir en gros la même forme.
La deuxième courbe est en 3D. Vous pouvez la faire tourner avec la souris. Elle décrit l'évolution des 3 paramètres $x$, $y$ et $z$.
La courbe ne se recoupe jamais ! Elle fait des tours autour de deux zones et passe d'un côté à l'autre de façon brusque et imprévisible.