retour index

chapitre 8

Attracteurs étranges

Application logistique

Application tente

L'attracteur noeud papillon

Attracteur de Mira

Attracteur de Ikéda

L'attracteur de Hénon

L'attracteur de Curry et Yorke

Attracteur de Rössler

L'attracteur de Chua

L'attracteur de Lorenz

 

Les systèmes comportant des frottements sont des systèmes dissipatifs. A la différence des systèmes conservatifs hamiltoniens qui conservent l'aire dans le diagramme de phase, le système dissipatif diminue l'aire.

De même que le régime transitoire d'un oscillateur amorti finit par disparaitre et que seul subsiste le régime permanent, un système dissipatif va tendre après les transitoires vers un attracteur dans l'espace de phase.

Dans un espace de phase à 2 dimensions, le théorème de Poincaré-Bendixson enseigne que les seuls attracteurs possibles dans le cas général sont des points fixes ou des cycles limites.

A 3 dimensions la situation se complique :aux attracteurs précédents, il faut ajouter les mouvements quasipériodiques comportant deux ou plusieurs fréquences sur un tore (une fréquence pour tourner autour du petit cercle du tore et une fréquence différente pour faire le tour du tore suivant l'axe) et les mouvements chaotiques constituant les attracteurs étranges. Ces attracteurs surnommés étranges par ceux qui les ont vu pour la première fois sur leur ordinateur sont des fractales souvent très esthétiques.

Nous allons en tracer un certain nombre dans ce chapitre et dans les suivants en étudiant leurs propriétés. Ces attracteurs apparaissent dans le cas de systèmes chaotiques dissipatifs, comme le sont les systèmes naturels, le climat par exemple.

On commencera par les systèmes itératifs à 1, puis à 2 dimensions, puis on passera à des systèmes comportant au moins 3 dimensions gouvernés par des équations différentielles.

Application logistique

C'est la plus connue des itérations pouvant mener au chaos par le scénario du doublement de période. On la trouve sous le nom d'application logistique, ou d'application quadratique ou encore de modèle de population de Verhulst. Elle peut prendre diverses formes, que l'on démontre équivalentes :
MATH

On utilise généralement la dernière forme. On fait varier k de 0 à 4. L'itération est facilement suivie de façon graphique avec une succession de segments verticaux et horizontaux joingnant la courbe et la première bissectrice pour avoir le nouveau point de départ :c'est la toile d'araignée.

Traçons la toile d'araignée en partant d'une valeur arbitraire de x, par exemple 0,34. On prend ici a = 3,5. On trace la fonction, la bissectrice et la toile d'araignée avec 50 points :

> restart:with(plots):

> f:=x->3.5*x*(1-x):x:=0.34:s:=[x,0]:n:=50:for i from 1 to n do

y:=f(x):s:=s,[x,y],[y,y];x:=y od:

> plot({f,t->t,[s]},0..1,0..1,color=black);


chap8__2.pngfigure 8.1 : application logistique avec k = 3,5 partant de x = 0,34

On obtient un mouvement de période 4, l'itéré revenant à sa position après 4 itérations une fois les transitoires disparus.

Pour connaitre le comportement de l'itération en fonction de k, on peut tracer le diagramme de l'état final, c'est-à-dire la valeur des points obtenus une fois que les transitoires ont disparu en fonction du paramètre de contrôle k de 0 à 4 par pas de 0,1 ;pour cela, on construit une procédure popu qui calcule le n$^{i\grave{e}me}$ itéré :

> popu:=proc(k,n) local u,x: x:=x0:

for u from 1 to n do x:=evalf(k*x*(1-x)): od: end:

>nmin:=100:nmax:=150:kmin:=0.1:kmax:=4:kstep:=0.1:

>liste:=0,0:x0:=0.21:

> for k from kmin to kmax by kstep do:

for n from nmin to nmax do liste:=liste,k,popu(k,n):od:od:

> pointplot([liste],labels=[parametre,'x'])


chap8__4.pngfigure 8.2 : diagramme de l'état final de l'application logistique

Pour $k\leqslant 1,$ l'origine est le seul point fixe attractif stable. Pour MATH l'origine est devenue instable, et il existe un point fixe attractif non nul dont l'abcisse augmente. On a, pour k = 1, une bifurcation transcritique. Pour la valeur 3, le point fixe qui était stable devient à son tour instable et l'itéré tend vers un ensemble de 2 points par lesquels il passe à tour de rôle avec une période 2. On a une bifurcation par doublement de période$.$

Le doublement de période se reproduit ensuite de plus en plus rapidement pour aboutir au chaos pour k = 3,5699456.

Ce scénario par doublement de période s'appelle scénario de Feigenbaum. Il est commun à un grand nombre de phénomènes (dont la courbe d'itération présente une bosse) et fait intervenir pour les rapports successifs le nombre de Feigenbaum $\delta =4,6692...$ qui est un nombre universel.

Détaillons le diagramme pour k compris entre 3,4 et 3,7 ;on ajoute les lignes critiques, c'est-à-dire les itérations $f^{i}(0,5)$ de la valeur critique 0,5. Ces lignes donnent une structure en bandes au diagramme de l'état final. Les fenêtres correspondent aux valeurs où les courbes se coupent en étant tangentes. On voit par exemple qu'au début de la fenêtre de période 3, la courbe $f^{4}(0.5)$ est tangente à la courbe $f(0.5)$ (en haut sur la figure), ce qui s'explique puisque dans la fenêtre de période 3, le point revient sur lui-même au bout de 3 itérations ;de même, $f^{5}(0.5)$ est tangente à $f^{2}(0.5)$ et $f^{6}(0.5)$ à $f^{3}(0.5).$

> nmin:=100:nmax:=200:kmin:=3.5:kmax:=3.9:

kstep:=0.01:liste:=0,0:x0:=0.21:

> for k from kmin to kmax by kstep do:

for n from nmin to nmax do liste:=liste,k,popu(k,n):od:od:

> p:=pointplot([liste],labels=[parametre,'x'],

view=[3.5..3.9,0..1]):

> f:=x->a*x*(1-x):

> for i to 8 do g[i]:=a->(f@@i)(0.5):

h[i]:=plot(g[i](a),a=3.5..3.9) od:

> display(p,seq(h[i],i=1..8));


chap8__16.pngfigure 8.3 : détail du diagramme de l'état final entre 3,5 et 3,9

On remarque une fenêtre de période 6 à 3,63, une de période 5 à 3,74 et la fenêtre de période 3 de 3,8284 à 3,857.

Détaillons la fenêtre d'ordre 3 :

>nmin:=100:nmax:=160:kmin:=3.825:kmax:=3.86:kstep:=0.001:

liste:=0,0:x0:=0.21:

>for k from kmin to kmax by kstep do:

for n from nmin to nmax do liste:=liste,k,popu(k,n):od:od:

> pointplot([liste],labels=[parametre,'x'],view=[3.825..3.86,0..1]);


chap8__17.pngfigure 8.4 : fenêtre d'ordre 3

La sortie de la fenêtre se fait par le scénario de doublement de période de Feigenbaum, la période passant de 3 à 6, puis à 12.

Par contre, l'entrée dans la fenêtre fait intervenir un autre scénario, l'intermittence ;pour le voir, traçons la valeur de l'itéré en fonction du temps :

> k:=3.82835:x:=0.21:s:=0,0:for i to 600 do

> y=k*x*(1-x):s:=s,i,y:od:

> pointplot([s],style=line,color=black,view=[200..600,0..1]);

chap8__19.pngfigure 8.5 : intermittence à $k=3,82835$

On voit un mouvement régulier correspondant au cycle de période 3 entrecoupé de bouffées chaotiques. C'est le scénario de l'intermittence, que l'on observe également avec la toile d'araignée :

> restart:with(plots):

> f:=x->k*x*(1-x):

> k:=3.82835:x:=0.21:y:=0:for i to 300 do y:=f(x):x:=y:od:

> s:=[x,y]:for i from 300 to 450 do y:=f(x):s:=s,[x,y],[y,y]:x:=y:od:

> plot({f,t->t,[s]},0..1,0..1,color=black);


chap8__20.pngfigure 8.6 : intermittence

Le point passe la plupart de son temps sur le cycle de période 3 ;cependant, son abcisse au voisinage de 0,5 augmente très doucement ;il finit par sortir du cycle, fait en spiralant le tour du point fixe sur la bissectrice et revient sur le cycle par la gauche ;le phénomène d'intermittence recommence.

On peut voir également le phénomène d'intermittence en traçant l'itération d'ordre 3 $f@@3,$ qui fait passer directement du premier itéré au quatrième :

> f:=x->k*x*(1-x):

> k:=3.82835:x:=0.21:y:=0:for i to 140 do y:=(f@@3)(x):x:=y:od:

> s:=[x,y]:for i from 140 to 164 do

y:=(f@@3)(x):s:=s,[x,y],[y,y]:x:=y:od:

> plot({f@@3,t->t,[s]},0..1,0..1,color=black);


chap8__22.pngfigure 8.7 : itération d'ordre 3

> plot({f@@3,t->t,[s]},0.159..0.166,0.159..0.166,color=black);


chap8__23.pngfigure 8.8 : canal de l'intermittence

Le système passe l'essentiel de son temps au voisinage d'un point fixe où il progresse le long d'un canal étroit. Lorsqu'il finit par en sortir, il fait le tour et retombe sur le même point fixe ou un autre parmi les trois où le phénomène recommence. Ce scénario d'intermittence correspond au voisinage d'une bifurcation selle-noeud, lorsqu'un canal étroit subsiste entre le graphe de l'itération et le bissectrice (figure 7.7).

début chapitre

Aplication tente

C'est une application de forme triangle d'équation
MATH

> restart:with(plots):

> f:=x->piecewise(x>=0 and x<=0.5,k*x,x>0.5 and x<=1,k*(1-x)):

> k:=1.6:x:=0.4123:s:=[x,0]:n:=100:

> for i from 1 to n do y:=f(x):s:=s,[x,y],[y,y]:x:=y od:

> plot({f,x->x,[s]},0..1,0..1,color=red);


chap8__25.pngfigure 8.9 : chaos de l'application tente avec k = 1,6

Traçons le diagramme de l'état final :

> popu:=proc(k,n) local i,x:x:=x0: for i to n do x:=f(x):od:end:

> nmin:=50:nmax:=100:kmin:=0:kmax:=2:

kstep:=0.05:liste:=0,0:x0:=0.1:

> for k from kmin to kmax by kstep do:

for n from nmin to nmax do liste:=liste,k,popu(k,n) od od:

> pointplot([liste]);


chap8__26.pngfigure 8.10 : diagramme de l'état final pour l'application tente

Jusqu'à k = 1, les itérés tendent vers le point fixe attracteur 0. Pour k = 1, tous les points communs à l'application tente et à la bissectrice sont des points fixes, ce qui explique la valeur (1 , 0,1) sur le diagramme, qui est en fait la valeur initiale.

Pour k > 1, on a un régime chaotique avec 2 bandes, l'itéré passant d'une bande à l'autre ;ces 2 bandes d'abord très étroites, s'élargissent jusqu'à en former une seule qui envahit l'intervalle entier pour k = 2.

Le chaos provient ici de la présence d'une source au point d'intersection de l'application et de la bissectrice (pente de la droite < -1). Cette source éloigne les itérés (phénomène d'étirement) ;les itérés sont ramenés au voisinage de la source par la partie à pente positive de l'application (phénomène de repliement).

début chapitre

L'attracteur ''noeud papillon''

On considère l'itération :
MATH

et
MATH

sgn est la fonction signe ;on prend a = 0,5 et b = 1,1. On remplace x par z dans le calcul pour distinguer $x_{n}$ et $x_{n+1}$ :

> restart:with(plots):

> x:=0.1:y:=0:a:=0.50:b:=1.1:liste:=x,y:

> for n to 5000 do z:=x:

if abs(z)<0.5 then x:=-b*y+(2-a)*z:y:=a*y-b*z

else x:=a*z-b*y+(1-a)*sign(z):y:=b*z+a*y-b*sign(z) fi:

liste:=liste,x,y od:

> pointplot([liste],style=point,color=red);


chap8__31.pngfigure 8.11 : attracteur en ''noeud papillon'' de Mira

On a choisi le point de départ proche de l'attracteur pour ne pas avoir à retirer les transitoires. On vérifie que l'on arrive au même attracteur quel que soit le point de départ. Le point circule de façon chaotique sur l'attracteur, comme on peut le voir en traçant la valeur de y en fonction du numéro de l'itération :

>plot([seq([i,[liste][2*i]],i=100..250)]);


chap8__33.pngfigure 8.12 : tracé de valeurs de $y_{n}$ pour l'attracteur noeud papillon


début chapitre

Attracteur de Mira

On considère l'itération
MATH

F(x) peut prendre diverses formes. On prendra
MATH

Si b < 1, le système est dissipatif et peut mener à un attracteur étrange.

Avec a = -0,48, b = 0,93, en partant du point (x = 4, y = 0), on obtient la figure suivante ayant une forme d'oiseau :

> restart:with(plots):

> x:=4:y:=0:a:=-0.48:b:=0.93:

w:=a*x+(1-a)*2*x^2/(1+x^2):liste:=x,y:

> for n to 5000 do z:=x:x:=b*y+w : w:=a*x+(1-a)*2*x^2/(1+x^2):

y:=w-z: liste:=liste,x,y od:

> pointplot([liste],style=point,color=red);


chap8__36.pngfigure 8.13 : a = -0,48 et b = 0,93

Il s'agit ici d'un attracteur étrange, car la trajectoire tend vers cette figure quelles que soient les conditions initiales.

Avec a = -0,4 et b = 0,99, on obtient :


chap8__37.pngfigure 8.14 : a = -0,4 et b = 0,99

Là encore, il s'agit d'un attracteur étrange, vers lequel tendent toutes les trajectoires partant de points quelconques.

début chapitre

Attracteur de Ikéda

L'itération d'Ikeda, proposée comme modèle de cellule pouvant servir à un ordinateur optique, correspond à la formale:
MATH

On prendra R = 1, $C_{1}=0,4,$ $C_{2}=0,9$ et $C_{3}=6.$

Suivant le choix des conditions initiales, l'attracteur est un point fixe ou un attracteur étrange :

> restart:with(plots):

> r:=1:c1:=0.4:c2:=0.9:c3:=6:

> x:=0:y:=0:liste:=x,y:

> for i to 6000 do z:=x:tau:=c1-c3/(1+z^2+y^2):

x:=r+c2*(z*cos(tau)-y*sin(tau)):y:=c2*(z*sin(tau)+y*cos(tau));

liste:=liste,x,y od:

> pointplot([liste],color=red);


chap8__42.pngfigure 8.15 : attracteur d'Ikéda

On retrouvera dans beaucoup d'attracteurs étranges cette structure en couches minces repliées. Elle est le signe d'un processus de mélange par étirement-repliement analogue au processus de pétrissage de la pâte qui consiste à l'étaler puis à la rassembler un grand nombre de fois pour la rendre homogène.

Partons du point (2,0) :

> x:=2:y:=0:liste:=x,y:

> for i to 1000 doz:=x:tau:=c1-c3/(1+z^2+y^2):

x:=r+c2*(z*cos(tau)-y*sin(tau)):

y:=c2*(z*sin(tau)+y*cos(tau));liste:=liste,x,y od:

> pointplot([liste],color=red);


chap8__43.pngfigure 8.16 : attracteur ponctuel d'Ikéda

Les points se dirigent vers le point fixe attracteur.

Suivant les conditions initiales, les points se dirigent donc vers l'un ou l'autre des deux attracteurs qui coexistent simultanément. L'ensemble des points qui convergent vers un attracteur donné constitue le bassin de l'attracteur. Les frontières entre bassins peuvent être des fractales (cas des fractales de Julia).

début chapitre

L'attracteur de Hénon

C'est l'un des plus connus et il sert souvent de modèle pour mettre en évidence les propriétés des attracteurs étranges, car ses équations sont très simples.

Les équations de l'itération de Hénon peuvent prendre plusieurs formes. On les prendra sous la forme :
MATH

a et b sont 2 nombres réels. Le seul terme non linéaire vient de la présence de $x_{n}^{2}$ dans $x_{n+1}.$

Le déterminant de la matrice jacobienne est égal à -b. SiMATH alors l'application conserve les aires :c'est le cas déjà traité dans le chapitre des mouvements hamiltoniens. Si MATH alors on aura un ou plusieurs attracteurs, qui pourront éventuellement être étranges.

Traçons l'attracteur de Hénon pour a = 1,2 et b = 0,4 :

> restart:with(plots):

> x:=0:y:=0:liste:=x,y:a:=1.2:b:=0.4:

> for n from 1 to 3000 do

z:=x:x:=a-z^2+b*y:y:=z:liste:=liste,x,y:od:

> pointplot([liste],color=red);


chap8__49.pngfigure 8.17 : attracteur de Hénon avec a = 1,2 et b = 0,4

On peut voir l'évolution de l'attracteur lorsque a varie de 0,9 à 1,2, b restant fixé à 0,4 :

> for j in [0.9,0.988,1,1.0293,1.045,1.2] do

x:=0:y:=0:liste:=x,y:a:=j:b:=0.4:

for n from 1 to 2000 do

z:=x:x:=a-z^2+b*y:y:=z:liste:=liste,x,y:od:

p[j]:=pointplot([seq(op(i,[liste]),i=1001..nops([liste]))],

color=red,scaling=constrained,axes=none):od:

> display(p[0.9],p[0.988],p[1],p[1.0293],p[1.045],p[1.2],

insequence=true):

> display(%);


chap8__55.pngfigure 8.18 : attracteur de Hénon avec $b=0,4$ ; $a=0,9,$ $0,988,$ $1,$ (première ligne) $1,0293, $ 1,045, 1,2 (deuxième ligne)

On voit que les attracteurs changent :

On peut tracer le diagramme de bifurcation, b étant fixé à 0,4 et a variant de 0 à 1,25 :

> he:=proc(a,n) local i,x,y,z: x:=0:y:=0:

for i from 1 to n do z:=x:x:=a-z^2+b*y:y:=z:x: od end:

>nmin:=150:nmax:=200:amin:=0:amax:=1.25:astep:=0.05:

liste:=[0,0]:

>for a from amin to amax by astep do:

for n from nmin to nmax do liste:=liste,[a,he(a,n)] od od:

> plot([liste],style=point,color=black,labels=[parametre,'x']);


chap8__56.pngfigure 8.19 : scénario de Feigenbaum de l'attracteur de Hénon

On reconnait le même scénario d'établissement du chaos de Feigenbaum par doublement de période que pour l'application logistique. Dans la partie chaotique, l'attracteur, d'abord en 4 morceaux, passe ensuite à 2, puis à un seul morceau. Le chaos est entrecoupé de fenêtres périodiques, comme celle d'ordre 10 pour a = 1,0293.

Le bassin d'un attracteur est l'ensemble des conditions initiales qui mènent à l'attracteur donné. Représentons l'attracteur de Hénon dans son bassin d'attraction ;pour cela on itère chacun des points d'une grille dont on fixe la taille et le pas ;si, au bout de m itérations, le point se trouve dans un carré de côté 4 centré à l'origine, on admet que le point ira sur l'attracteur ;dans la pratique, un petit nombre d'itérations suffisent (ici 4) :

> restart:with(plots):

> liste:=op([]):a:=1.2:b:=0.4:m:=4:

> for i from -3 to 3 by 0.1 do: for j from -10 to 8 by 0.1 do:

x:=i:y:=j:for n to m do z:=a+b*y-x^2:y:=x:x:=z:od:

if x<2 and x>-2 and y<2 and y>-2 then liste:=liste,i,j fi od od:

> p1:=pointplot([liste],color=red,symbol=point):

> x:=0:y:=0:liste:=x,y:a:=1.2:b:=0.4:

> for n from 1 to 2000 do

z:=x:x:=a-z^2+b*y:y:=z:liste:=liste,x,y:od:

> p2:=pointplot([liste],color=red,symbol=cross):

> display(p1,p2);


chap8__57.pngfigure 8.20 : attracteur de Hénon dans son bassin d'attraction

Le bassin d'attraction en couches a en fait une frontière fractale.

début chapitre

L'attracteur de Curry et Yorke

L'application de Curry et Yorke est la composée de 2 applications MATH avec
MATH

suivie de
MATH

$\varepsilon $ est le paramètre de contrôle, $\theta _{0}$ est une constante que l'on prendra égale à 2, valeur proche de $\dfrac{2\pi }{3}$ ;à chaque itération, on fait donc sensiblement 1/3 de tour.

On va tracer l'attracteur correspondant pour $\varepsilon =1,2$ :

> restart:with(plots):

>theta0:=2:rho:=0.4:theta:=0:epsilon:=1.2:

liste:=evalc(polar(rho,theta)):

>for i to 500 do: rho:=evalf(epsilon*ln(1+rho));

theta:=theta+theta0: z:=evalc(polar(rho,theta)):

x:=evalf(Re(z)):y:=evalf(Im(z))+x^2:z:=evalc(x+I*y):

liste:=liste,z:rho:=abs(z):theta:=argument(z) od:

> complexplot([seq(op(i,[liste]),i=100..500)],style=point);


chap8__66.pngfigure 8.21 : attracteur de Curry et Yorke pour $\varepsilon =1,2$

Si MATH l'origine est le seul point attracteur.

Si $\varepsilon >1,$ pour les valeurs proches de 1, l'attracteur ressemble à un cercle centré sur l'origine ;du fait des non linéarités, ce cercle se déforme comme on le voit sur la figure et la concentration des points augmente dans trois zones, laissant entrevoir un accrochage d'ordre 3.

Suivons l'évolution de l'attracteur pour des valeurs croissantes de $\varepsilon $ :1,2 1,27, 1,3, 1,48, 1,58, 1,6 :

> f:=proc(epsilon,n) local rho,theta,theta0,liste,i,z,x,y:

rho:=0.4:theta0:=2:theta:=0:liste:=evalc(polar(rho,theta)):

for i to n do: rho:=evalf(epsilon*ln(1+rho));

theta:=theta+theta0:

z:=evalc(polar(rho,theta)): x:=evalf(Re(z)):

y:=evalf(Im(z))+x^2:

z:=evalc(x+I*y):liste:=liste,z: rho:=abs(z):

theta:=argument(z) od:

complexplot([seq(op(i,[liste]),i=100..n)],

style=point,axes=none) end:

> p1:=f(1.2,500):

> p2:=f(1.27,500):

> p3:=f(1.3,500):

> p4:=f(1.48,800):

> p5:=f(1.58,500):

> p6:=f(1.6,500):

> A:=array(1..3,1..2);

> A[1,1]:=p1:A[1,2]:=p2:A[2,1]:=p3:A[2,2]:=p4:

A[3,1]:=p5:A[3,2]:=p6:

> display(A);


chap8__74.pngfigure 8.22 : attracteur de Curry et Yorke pour $\varepsilon =1,2,$ 1,27 (1$^{\grave{e}re}$ ligne), 1,3, 1,38 (2$^{i\grave{e}me}$ ligne), 1,58, 1,6 (3$^{i\grave{e}me}$ ligne)

L'entrée dans la fenêtre d'accrochage 3 se fait par un régime intermittent quasipériodique ;pour le montrer, on trace $x$ en fonction du temps avant l'accrochage pour a = 1,25 :

>rho:=0.4:theta0:=2:theta:=0:epsilon:=1.25:

liste:=Re(evalc(polar(rho,theta))):

> for i to 500 do: rho:=evalf(epsilon*ln(1+rho));

theta:=theta+theta0: z:=evalc(polar(rho,theta)):

x:=evalf(Re(z)):y:=evalf(Im(z))+x^2:z:=evalc(x+I*y):

liste:=liste,x: rho:=abs(z):theta:=argument(z) od:

> plot([seq([i,liste[i]],i=100..nops([liste1]))],

color=red,view=[150..500,-0.8..0.8]);


chap8__82.pngfigure 8.23 : régime quasipériodique avant l'accrochage d'ordre 3

La sortie de l'accrochage d'ordre 3 se fait également par intermittence vers un régime chaotique, dont on sort par la fenêtre d'ordre 4 pour $\varepsilon =1,58$ ;la sortie de cette fenêtre se fait par le scénario de doublement de période. Pour $\varepsilon =1,65,$ on est à nouveau en régime chaotique :


chap8__86.pngfigure 8.24 : attracteur de Curry et Yorke pour $\varepsilon =1,65$

On voit toute la richesse de la dynamique de cette application.

début chapitre

Attracteur de Rössler

Il s'agit là d'un autre type d'attracteur, car la dynamique est donnée, non par une itération, mais par un système d'équations différentielles. On sait alors que, pour obtenir du chaos, il faut un espace de phase au moins de dimension 3.

La dynamique de Rössler est donnée par un sytème de 3 équations différentielles du 1$^{er}$ ordre couplées :
MATH

a,b et c étant 3 coefficients numériques. On prendra a = b = 0,1 ;c pourra varier ;traçons, avec DEplot3d, l'attracteur de Rössler pour c = 14 :

> restart:with(plots):with(DEtools):

> DEplot3d([D(x)(t)=-(y+z),D(y)(t)=x+0.1*y,

D(z)(t)=0.1+x*z-14*z],[x(t),y(t),z(t)],t=40..100,

[[x(0)=1,y(0)=0,z(0)=1]],stepsize=0.1,scene=[x,y,z],linecolor=black);


chap8__90.pngfigure 8.25 : attracteur de Rössler avec $c=14$

Lorsque z est voisin de 0, les 2 premières équations se réduisent à
MATH

Avec a > 0, c'est l'équation différentielle d'un mouvement harmonique entretenu dont l'amplitude augmente ;dans le plan (x, y), le point tourne donc sur une spirale qui s'élargit. Quand x devient supérieur à c, $\overset{.}{z}$ devient > 0 d'après la 3$^{i\grave{e}me}$ équation et le point monte rapidement ;d'après la 1$^{i\grave{e}re}$ équation, $\overset{.}{x}$ devient alors < 0 et x diminue, entraînant une décroissance de z et le point est réinjecté d'autant plus près de l'origine qu'il est monté plus haut.

Voyons l'évolution de l'attracteur lorsque c varie :

> for i in [4,6,8.5,11,12.5,14] do

p[i]:=phaseportrait([D(x)(t)=-(y+z),D(y)(t)=x+0.1*y,

D(z)(t)=0.1+x*z-i*z],[x(t),y(t),z(t)],t=100..250,

[[x(0)=4,y(0)=0,z(0)=0]],stepsize=0.1,scene=[x,y],

linecolor=black,axes=boxed) od:

> A:=array(1..3,1..2):

> A[1,1]:=p[4]:A[1,2]:=p[6]:A[2,1]:=p[8.5]:A[2,2]:=p[11]:

A[3,1]:=p[12.5]:A[3,2]:=p[14]:

> display(A);


chap8__99.pngfigure 8.26 : attracteur de Rössler : c = 4, 6 (1$^{\grave{e}re}$ ligne), 8,5, 11 (2$^{i\grave{e}me}$ ligne), 12,5, 14 (3$^{i\grave{e}me}$ ligne)

On cherche la liste des valeurs minimales de x et on trace la valeur absolue de $x_{n+1}$ en fonction de la valeur absolue $x_{n}$ :

> sys:=D(x)(t)=-(y+z),D(y)(t)=x+0.1*y,D(z)(t)=0.1+x*z-14*z:

> fnc:={x(t),y(t),z(t)}:(système d'équations de Rössler)

> F:=dsolve({sys,x(0)=1,y(0)=0,z(0)=1},fnc,type=numeric,

method=classical,output=listprocedure): (résolution numérique du système)

> fx:=subs(F,x(t)):(on en tire la valeur de x(t))

> liste:=seq(fx(i/10),i=1..5000):(liste de 5000 valeurs de x, t variant de 0 à 500)

> liste1:=op([]): for i from 2 to nops([liste])-1 do:

if liste[i]<liste[i-1] and liste[i]<liste[i+1]

then liste1:=liste1,liste[i] fi od:(valeurs minimales de x)

> with(plots):display(pointplot([seq([abs(liste1[i]),abs(liste1[i+1])],

i=5..nops([liste1])-1)],color=red),plot(x->x,0..22,0..22)); (tracé de l'application de Lorenz pour les valeurs absolues)


chap8__103.pngfigure 8.27 : application de premier retour de l'application de Rössler

On obtient une courbe (en réalité ayant une certaine épaisseur) qui ressemble à l'application logistique ;la pente à l'intersection de la courbe avec la première bissectrice étant < -1, on en conclut que l'application de Lorenz qui fait passer d'une intersection à l'intersection suivante au tour suivant est chaotique et que le processus d'étirement-repliement à l'oeuvre est du même type que celui de l'application logistique.

Voyons pour finir la sensibilité aux conditions initiales (sci). On trace la différence des valeurs de x(t) pour la même application de Rössler avec des valeurs initiales très voisines (x(0) = 1 et x(0)=1,01, y(0) et z(0) étant nuls) :

> restart:with(DEtools):

> sys:=D(x)(t)=-(y+z),D(y)(t)=x+0.1*y,D(z)(t)=0.1+x*z-14*z:

> fnc:={x(t),y(t),z(t)}:

> F:=dsolve({sys,x(0)=1,y(0)=0,z(0)=0},fnc,type=numeric,

method=classical,output=listprocedure):

> fx:=subs(F,x(t)):

> G:=dsolve({sys,x(0)=1.01,y(0)=0,z(0)=0},fnc,type=numeric,

method=classical,output=listprocedure):

> gx:=subs(G,x(t)):

> liste:=seq([i,fx(i)-gx(i)],i=1..100):

> plot([liste],color=black);


chap8__104.pngfigure 8.28 : mise en évidence de la sensibilité aux conditions initiales de l'application de Rössler

On voit qu'à partir de t = 60 (ce qui correspond à une douzaine de tours), les 2 mouvements se déconnectent et que la différence devient aussi grande que l'attracteur, ce qui montre la sensibilité aux conditions initiales :deux mouvements très voisins au départ deviennent rapidement déconnectés.

début chapitre

L'attracteur de Chua

Le circuit de Chua est un circuit électronique simple, comportant 2 condensateurs, une résistance et une inductance ainsi qu'une diode non linéaire dont la caractéristique courant-tension, linéaire par morceaux, a pour équation :
MATH

qui peut s'écrire également MATH

Traçons g(x), avec $m_{0}=-9/7$ et $m_{1}=-4/7$ :

> restart:with(plots):with(DEtools):

>m0:=-9/7:m1:=-4/7:

> g:=x->m1*x+(m0-m1)/2*(abs(x+1)-abs(x-1));

> plot({g(x),-x},x=-2..2,color=black);


chap8__109.pngfigure 8.29 : caractéristique de la diode de Chua

Les équations de l'attracteur de Chua s'écrivent :
MATH

Pour $c_{1}=15,6,$ $c_{2}=1$ et $c_{3}=36,$ on trace l'attracteur :

> c3:=36:DEplot3d({diff(x(t),t)=c1*(y-x-g(x)),

diff(y(t),t)=c2*(x-y+z),diff(z(t),t)=-c3*y},{x,y,z},t=50..100,

[[x(0)=1,y(0)=1,z(0)=0]],stepsize=0.05,

scene=[x,y,z],linecolor=red);


chap8__115.pngfigure 8.30 : attracteur de Chua pour $c_{3}=36$

Voyons l'évolution de l'attracteur lorsque $c_{3}$ diminue à partir de 50 :

> for c3 in [50,43,40,38.4] do

p[c3]:=phaseportrait({diff(x(t),t)=c1*(y-x-g(x)),

diff(y(t),t)=c2*(x-y+z),diff(z(t),t)=-c3*y},{x,y,z},t=50..150,

[[x(0)=1,y(0)=1,z(0)=0],[x(0)=-1,y(0)=-1,z(0)=0]],

stepsize=0.05,scene=[x,z],linecolor=red) od:

> A:=array(1..2,1..2):

> A[1,1]:=p[50]:A[1,2]:=p[43]:A[2,1]:=p[40]:A[2,2]:=p[38.4]:

> display(A);


chap8__120.pngfigure 8.31 : attracteur de Chua pour $c_{3}=50,$ 43 (1$^{i\grave{e}re}$ ligne), 40, 38,4 (2$^{i\grave{e}me}$ ligne)

L'attracteur de Lorenz

C'est certainement, avec l'attracteur de Hénon, l'ensemble de Mendelbrot et les ensembles de Julia, une des figures les plus connues du chaos. Lorenz l'a popularisé avec ''l'effet papillon'', qui exprime la sensibilité aux conditions initiales :le battement d'ailes d'un papillon peut provoquer un cyclone à l'autre bout du monde une semaine après !Il se trouve, est-ce une coïncidence, que l'attracteur de Lorenz a un peu la forme d'un papillon !

Tracé de l'attracteur

Le système d'équations différentielles de Lorenz est le suivant :
MATH

Les valeurs numériques choisies par Lorenz sont :$\sigma =10,$ $B=\dfrac{8}{3}$, R pouvant varier.

Représentons l'attracteur avec R = 28 :

> restart:with(DEtools):

>DEplot3d([D(x)(t)=10*(y-x),D(y)(t)=28*x-y-x*z,

D(z)(t)=x*y-8/3*z],[x,y,z],t=10..30,[[x(0)=0.1,y(0)=0,z(0)=0.1]],

stepsize=0.02,scene=[x,y,z],linecolor=red);


chap8__125.pngfigure 8.32 : attracteur de Lorenz pour R = 28

Le mouvement est chaotique. Le point tourne autour d'un point fixe instable en s'éloignant de celui-ci ;lorsqu'il se trouve à une certaine distance, il saute sur l'autre point fixe instable et s'éloigne à nouveau. On le voit en traçant x en fonction du temps :

>phaseportrait([D(x)(t)=10*(y-x),D(y)(t)=28*x-y-x*z,

D(z)(t)=x*y-8/3*z],[x,y,z],t=20..60,[[x(0)=0.1,y(0)=0,z(0)=0.1]],

stepsize=0.05,scene=[t,x],linecolor=red);


chap8__126.pngfigure 8.33 : tracé de x en fonction du temps pour l'attracteur de Lorenz

Application de premier retour

Traçons l'application de premier retour ou application de Lorenz, en traçant z d'un maximum en fonction de z du maximum précédent. Pour cela, on emploie une méthode différente de celle que l'on a utilisée pour l'attracteur de Rössler :à l'aide de phaseportrait, on extrait la liste de tous les z correspondant au pas d'intégration de 0,05 et l'on cherche les valeurs de z qui sont localement des maximas, c'est-à-dire plus grandes que la précédente et la suivante :

> p:=phaseportrait([D(x)(t)=10*(y-x),D(y)(t)=28*x-y-x*z,

D(z)(t)=x*y-8/3*z],[x,y,z],t=0..100,[[x(0)=0.1,y(0)=0,z(0)=0.1]],

stepsize=0.05,scene=[t,z]):

> liste:=op(1,op(1,p)):(liste des [t,z] toutes les 0,05 s)

> liste1:=op([]):

for i from 2 to nops(liste)-1 do:

if op(2,liste[i])>op(2,liste[i-1]) and op(2,liste[i])>op(2,liste[i+1])

then liste1:=liste1,op(2,liste[i]) fi od: (liste des maximas locaux de z)

> display(pointplot([seq([liste1[i],liste1[i+1]],

i=5..nops([liste1])-1)],color=red),plot(x->x,0..50,0..50));


chap8__127.pngfigure 8.34 : carte de Lorenz de l'attracteur de Lorenz

L'application de lorenz ressemble, avec une certaine épaisseur, à l'application tente, que l'on sait chaotique.

Chaos transitoire

Les points fixes de l'application de Lorenz sont données par les solutions du système :
MATH

> sol:=solve({-x+y=0,-x*z+R*x-y=0,x*y-b*z=0},{x,y,z});

sol := {y = 0, z = 0, x = 0}, {z = R - 1, x = RootOf(_Z - b R + b),

y = RootOf(_Z - b R + b)}

> allvalues(op(2,[sol]));

{x = $\sqrt{bR-b}$, y = $\sqrt{bR-b}$, z = R - 1},

{ x = - $\sqrt{bR-b}$,y = - $\sqrt{bR-b}$, z = R - 1}

L'équilibre (0, 0, 0) existe pour tout R ;il est stable pour R < 1. Les 2 autres points, notés C+ et C-, sont stables de R = 1 à R = 24,74.

Lorsque l'on fait varier le paramètre R, on a une grande variété de comportements de l'attracteur de Lorenz. Résumons quelques-unes de ces propriétés dans un tableau :
MATH

Illustrons ce tableau avec un tracé de chaos transitoire, pour R = 23,4 :

> restart:with(DEtools):

> phaseportrait([D(x)(t)=10*(y-x),D(y)(t)=23.4*x-y-x*z,

D(z)(t)=x*y-8/3*z],[x,y,z],t=0..150,[[x(0)=4,y(0)=-2,z(0)=3]],

stepsize=0.05,scene=[t,x],linecolor=red,view=[60..150,-16..16]);


chap8__135.pngfigure 8.35 : chaos transitoire avec R = 23,4 ;x en fonction de t

Le mouvement du point est chaotique jusqu'à ce qu'il vienne se fixer sur l'un des deux attracteurs ponctuels. Il s'agit d'une crise de frontière :une partie de l'attracteur étrange fait partie du bassin d'attraction de l'un des deux attracteurs ponctuels (voir chapitre 10).

> DEplot3d([D(x)(t)=10*(y-x),D(y)(t)=23.4*x-y-x*z,

D(z)(t)=x*y-8/3*z],[x,y,z],t=0..150,[[x(0)=4,y(0)=-2,z(0)=3]],

stepsize=0.05,scene=[x,y,z],linecolor=red);


chap8__136.pngfigure 8.36 : chaos transitoire pour R = 23,4 ;vue de l'attracteur dans l'espace

Le point tourne de façon chaotique autour des 2 points fixes jusqu'à ce qu'il soit attiré par le point de droite ;il s'enroule alors sur une spirale qui s'approche de façon asymptotique du point fixe.

Coexistence de plusieurs attracteurs

Lorsque $R\in [24,06,$ $24,74],$ il y a coexistence de l'attracteur chaotique et des 2 points fixes attracteurs ;suivant les conditions initiales, le point va se diriger vers l'un ou l'autre de ces attracteurs ;on trace x en fonction de t pour la même valeur R = 24,5 avec les 2 ensembles de conditions initiales :d'abord (x(0) = 6, y(0) = 10, z(0) = 23), puis (x(0) = 4, y(0) = -2, z(0) = 1) :

> phaseportrait([D(x)(t)=10*(y-x),D(y)(t)=24.5*x-y-x*z,

D(z)(t)=x*y-8/3*z],[x,y,z],t=0..300,[[x(0)=6,y(0)=10,z(0)=23]],

stepsize=0.05,scene=[t,z],linecolor=red,view=[0..300,0..30]);


chap8__143.pngfigure 8.37 : $R=24,5,$ $x(0)=6,$ $y(0)=10,$ $z(0)=23$ ;attracteur ponctuel

> phaseportrait([D(x)(t)=10*(y-x),D(y)(t)=24.5*x-y-x*z,

D(z)(t)=x*y-8/3*z],[x,y,z],t=0..300,[[x(0)=4,y(0)=-2,z(0)=1]],

stepsize=0.05,scene=[t,z],linecolor=red,view=[200..300,0..40]);


chap8__148.pngfigure 8.38 : $R=24,5,$ $x(0)=4,$ $y(0)=-2,$ $z(0)=1;$ attracteur chaotique

Il y a coexistence de 3 attracteurs avec des bassins d'attraction différents et multistabilité.

Solutions périodiques

Lorque R > 24,74, l'attracteur est chaotique, mais, comme pour l'application logistique, il existe des fenêtres de régularité où le comportement est périodique. Traçons l'attracteur pour R = 100,7 et R = 99,7 :

> restart:with(DEtools):with(plots):

> p1:=phaseportrait([D(x)(t)=10*(y-x),D(y)(t)=100.7*x-y-x*z,

D(z)(t)=x*y-8/3*z],[x,y,z],t=50..60,[[x(0)=10,y(0)=0,z(0)=10]],

stepsize=0.01,scene=[x,z],linecolor=red):

> p2:=phaseportrait([D(x)(t)=10*(y-x),D(y)(t)=99.7*x-y-x*z,

D(z)(t)=x*y-8/3*z],[x,y,z],t=50..60,[[x(0)=10,y(0)=0,z(0)=10]],

stepsize=0.01,scene=[x,z],linecolor=red):

> A:=array(1..2,1..1):

> A[1,1]:=p1:A[2,1]:=p2:

> display(A);


chap8__151.pngfigure 8.39 : $99,5<R<100,8$ :solution périodique $xy^{2}$ et scénario de doublement de période

Pour R = 100,7, on a une solution périodique dans laquelle le point fait 2 tours dans la région x < 0 et un tour dans la région x > 0. On note cette solution $xy^{2}$ (un tour autour du point fixe > 0 et 2 tours autour du point fixe < 0). Lorsque le paramètre R diminue, commence un scénario de doublement de période ;pour R = 99,7, la période a doublé, et la solution se note $(xy^{2})^{2}.$ Voyons dans un tableau quelques fenêtres de régularité :
MATH

Cela donne les figures suivantes :

> restart:with(DEtools):with(plots):

> p[1]:=phaseportrait([D(x)(t)=10*(y-x),D(y)(t)=310*x-y-x*z,

D(z)(t)=x*y-8/3*z],[x,y,z],t=80..90,[[x(0)=10,y(0)=0,z(0)=10]],

stepsize=0.01,scene=[x,z],linecolor=red):

On fait de même pour p[2], p[3] et p[4] avec R = 165, 147 et 126,5. Puis :

> A:=array(1..2,1..2):

> A[1,1]:=p[1]:A[1,2]:=p[2]:A[2,1]:=p[3]:A[2,2]:=p[4]:

> display(A);


chap8__159.pngfigure 8.40 : trajectoires périodiques pour $R=310,$ 165 (1$^{\grave{e}re}$ ligne), MATH 126,5 (2$^{i\grave{e}me}$ ligne)

On observe le doublement de période entre les figures 2 et 3.

Intermittence

On a vu que la sortie des fenêtres de régularité lorsque le paramètre R diminue se fait par un scénario de doublement de période. L'entrée dans la fenêtre se fait, elle, par une intermittence :lorsque R est légèrement supérieur à la valeur d'entrée dans la fenêtre, la trajectoire est presque périodique, mais son amplitude augmente doucement, puis revient brusquement à sa valeur de départ. Voyons le pour R = 166 (au début de la fenêtre $x^{2}y^{2})$ et 166.2 (légèrement avant) :

> restart:with(DEtools):with(plots):

> p[1]:=phaseportrait([D(x)(t)=10*(y-x),D(y)(t)=166*x-y-x*z,

D(z)(t)=x*y-8/3*z],[x,y,z],t=10..60,[[x(0)=10,y(0)=0,z(0)=10]],

stepsize=0.01,scene=[t,z],linecolor=red):

De même pour p[2] avec R = 166,2. Puis :

> A:=array(1..2,1..1):

> A[1,1]:=p[1]:A[2,1]:=p[2]:

> display(A);


chap8__161.pngfigure 8.41 : intermittence :pour R = 166, solution régulière et R = 166,2, intermittence

En résumé pour l'attracteur de Lorenz, lorsque R augmente, on passe d'un point attracteur à l'origine aux 2 points attracteurs C+ et C-, puis à un régime chaotique entrecoupé de fenêtres de régularité, la dernière fenêtre en xy semblant se prolonger pour les grandes valeurs de R.

On voit qu'un système simple de 3 équations différentielles d'ordre 1 comme celui de Lorenz mène à un comportement très complexe mais néanmoins structuré. C'est ce type de comportement, encore plus complexe, qui est adopté par les phénomènes naturels avec leurs multiples interactions.

début chapitre

retour index