Le chaos

        

« Dans une casserole, il y a un désordre apparent, mais si l'on
tire sur un spaghetti, on peut le suivre du début à la fin. »
Kjell Nordström

Qu'est-ce que le chaos? Si on posait la question, on obtiendrait probablement des définitions variées autour de la notion de désordre et de grande confusion. Ce mot a acquis une nouvelle signification durant la seconde moitié du 20e siècle soit celle d'un comportement aléatoire à l'intérieur d'un système déterministe.

Pour illustrer ce phénomène, on utilise habituellement la formule logistique

Pi+1 = kPi(1 - Pi)

Imaginez qu'il s'agit d'un modèle de croissance grandement simplifié de la population d'une espèce animale.

  • Pi+1 représente la population de l'espèce animale pour une année donnée et est exprimé en pourcentage du maximum théorique que cette population peut atteindre dans son environnement. Pi+1 est donc compris entre 0 et 1.
  • Pi représente la proportion de l'espèce animale l'année précédente.
  • La valeur de k est un facteur de proportionnalité.

Donnons à k des valeurs comprises entre 0 et 4 et notons pour un P0 donné l'évolution de l'espèce animale pour les 20 prochaines années.

Si Po = 0.5 et k = 2.7, on obtient les proportions suivantes:

0.5, 0.675, 0.591, 0.653, 0.613, 0.640, 0.621, 0.635, 0.626, 0.632, 0.629, 0.629, 0.629, 0.62, 0.629, 0.629, 0.629, 0.629, 0.629, 0.629, 0.629.

Notons que pour ces conditions la population de l'espèce animale tendra à se stabiliser autour de la proportion P=0.629.

[Maple Plot]

Si Po = 0.5 et k = 3.1, on obtient les proportions suivantes:

0.5, 0.775, 0.539, 0.769, 0.552, 0.766, 0.555, 0.766, 0.555, 0.766, 0.555, 0.766, 0.555, 0.766, 0.555, 0.766, 0.555, 0.766, 0.555, 0.766, 0.555.

Le système se stabilise autour de deux valeurs 0.766 et 0.555.

[Maple Plot]

Si Po = 0.5 et k = 3.42, on obtient les proportions suivantes:

0.5, 0.855, 0.423, 0.837, 0.466, 0.849, 0.438, 0.843, 0.452, 0.849, 0.438, 0.843, 0.452, 0.849, 0.438, 0.843, 0.452, 0.849, 0.438, 0.843, 0.452

Le système se stabilise autour de quatre valeurs 0.849, 0.438, 0.843, 0.452.


Si Po = 0.5 et k = 3.6, on obtient les proportions suivantes:

0.5, 0.975, 0.095, 0.336, 0.870, 0.441, 0.963, 0.139, 0.468, 0.971, 0.110, 0.382, 0.920, 0.287, 0.800, 0.624, 0.917, 0.297, 0.815, 0.589, 0.944.

La croissance semble maintenant tout à fait imprévisible.

[Maple Plot]

On peut résumer le phénomène à l'aide d'un diagramme appelé "diagramme de bifurcation". En abscisse, on place les différentes valeurs de k et en ordonnée les valeurs de P après un grand nombre d'années (itérations).


Diagramme de bifurcation
[Maple Plot]
Valeurs de P après 100 itérations en fonction de k

Lorsque le nombre d'itérations augmente et
  • 0 < k < 3 , le système a tendance à se stabiliser autour d'une seule valeur ;
  • 3 < k < 3.45 , le système finit par osciller entre 2 valeurs, on dit qu'il possède un cycle d'ordre 2 ;
  • 3.45 < k < 3.57 , la longueur du cycle augmente de plus en plus rapidement ;
  • 3.57 < k < 4 , la longueur du cycle s'allonge et devient tellement complexe que l'on peut difficilement suivre son évolution, le système passe par une phase que l'on qualifie de chaotique.

Dans sa phase chaotique, le comportement du système est tout à fait imprévisible à long terme. Cette imprévisibilité est essentiellement due à la sensibilité du système aux conditions initiales. Un changement, si petit soit-il, dans les conditions initiales du système aura des conséquences totalement imprévisibles et complexes à long terme.

Pour k = 3.99, donnons d'abord à P0 la valeur 0.3 et ensuite la valeur 0.300001.

Étant donné le faible écart qui existe entre les deux proportions initiales, on pourrait penser que les suites associées à ces valeurs soient sensiblement les mêmes. Ce n'est pas ce qui se produit. On constate que les deux suites sont identiques jusqu'au 17e terme. À partir du 17e terme, il n'y a plus aucune comparaison possible. La suite (rouge) sur le graphique a été obtenue en prenant Po=0.3 tandis que la suite (verte) correspond à Po=0.300001.

Le météorologue Edward Lorenz, mathématicien de formation, fut un des premiers à constater ce phénomène au début des années 60. On l'appelle «effet papillon» et on le décrit souvent de la façon suivante : «un battement d'aile de papillon au Brésil est susceptible de déclencher beaucoup plus tard une tornade au Texas». La très faible perturbation créée par le vol d'un papillon pourrait en principe faire varier les conditions initiales du système atmosphérique et engendrer plus tard un changement climatique en un endroit quelconque de notre planète.

En biologie, on a longtemps observé ce phénomène dans des populations animales. Au siècle dernier, les trappeurs du Canada avaient constaté de grandes fluctuations dans la population des lynx. Plusieurs théories avaient alors été avancées avant que l'on pense à mettre en relation ces fluctuations avec celles obtenues sur des modèles semblables à celui que l'on vient de présenter. Il est maintenant classique d'expliquer les fluctuations des populations animales par l'effet d'un mécanisme déterministe simple reliant le nombre de prédateurs au nombre de proies. Ce mécanisme peut aboutir soit à des équilibres (populations stables), soit à des cycles ou à des évolutions chaotiques. Si on arrive à contrôler artificiellement le taux de reproduction d'une espèce animale, on peut constater tous les phénomènes que l'on vient de mettre en évidence.


Les suites et les graphiques de cette page ont été obtenus à l'aide du logiciel Maple. Copiez les programmes (en rouge) sur une feuille de travail du logiciel et changez les paramètres indiqués.

    Programme I  (les suites de proportions)

    P:=proc(i,nonnegint)
    option remember;

    Digits:=3;

    if i<1 then .5;

    else k*P(i-1)*(1-P(i-1));

    fi;

    end:

    k:=3.1;# < entrez la valeur de k
    seq(P(i),i=0..20);

    Programme II  (les graphiques)

    graphique := proc(Po,k,n)
    local i,d,P,f;

    P := Po;

    d := [[0,P]];

    f := P ->k*P*(1-P);

    for i from 1 to n do

    P := f(P);

    d := [op(d), [i, P]];

    od;

    plot(d,labels=["années","P"]);

    end:

    Po:=0.5;#  < entrez la proportion initiale
    k:=2.7;#  < entrez la valeur de k

    n:=20;#  < entrez le nombre d'itérations

    graphique( Po, k, n );

    Programme III  (le diagramme de bifurcation)

    Valeurs:= proc(Table,xo,a,b,n)
    local x,i,j,k;
    j:=0;
    for k from a to b by 20*(b-a)/(n-1) do;
    x:=xo;
    for i to 120 do;
    x:=k*x*(1-x);
    if i>100 then j:=j+1; Table[j,1]:=k; Table[j,2]:=x; fi;
    od;
    od;
    end:

    xo:=0.5:
    a:=0:
    b:=4:
    n:=30000:
    Table:= array(1..n,1..2):
    evalhf(Valeurs(var(Table),xo,a,b,n)):
    plots[pointplot](Table, symbol=POINT, color=green,labels=["k","P"]);

Programme IV  (sensibilité aux conditions initiales)

iterplot := proc(Po,P1,k,n)
local i,d1,d2,P,f;
P := Po;
d1 := [[0,P]];
f := P ->k*P*(1-P);
for i from 1 to n do
P := f(P);
d1 := [op(d1), [i, P]];
od;

P := P1;
d2 := [[0,P]];
f := P ->k*P*(1-P);
for i from 1 to n do
P := f(P);
d2 := [op(d2), [i, P]];
od;

plot([d1,d2],labels=["années","P"]);
end:

Po:=0.3; # entrez la proportion initiale
P1:=0.300001; # entrez une nouvelle proportion initiale
k:=3.99; # entrez la valeur de k
n:=50; # entrez le nombre d'itérations

iterplot(Po,P1,k,n);