retour index

chapitre 10

Propriétés des attracteurs étranges

Dynamique sous-jacente

Reconstruction de l'attracteur de Rössler

Reconstruction de l'attracteur de Lorenz

Crises et bifurcations

Crise intérieure

Crise de frontière

 

On va étudier dans ce chapitre quelques propriétés des attracteurs étranges.

Tout d'abord, si l'on se place d'un point de vue expérimental, les observations ou l'expérience fournissent des séries de valeurs numériques en fonction du temps ;par exemple, le météorologue fournira les maxima journaliers de température en un endroit donné. Comment savoir s'il existe une loi déterministe permettant de rendre compte du phénomène et de prédire même approximativement les valeurs futures ? La dynamique sous-jacente, si elle existe, peut-elle se manifester par la reconstruction d'un attracteur étrange à partir des données ?

Un autre comportement parfois surprenant des attracteurs étranges est l'existence de crises pour certaines valeurs des paramètres. On verra également dans ce chapitre les différentes sortes de crises que l'on peut rencontrer.

début chapitre

Dynamique sous-jacente

On dispose de trois séries temporelles :

> restart:with(plots):

> x:=0.21:m:=200:k:=4:liste:=x:

> for n to m do x:=k*x*(1-x):liste:=liste,x od:

> p1:=plot([seq([i,op(i,[liste])],i=1..nops([liste]))],

tickmarks=[4,4]): (premier tracé)

> q1:=plot([seq([op(i-1,[liste]),op(i,[liste])],

i=2..nops([liste]))],style=point,tickmarks=[4,4]):

> x:=0.21:y:=0:m:=200:liste:=x:y:=0:

> for n to m do a:=y+1-1.4*x^2:y:=0.3*x:x:=a:liste:=liste,x od:

> p2:=plot([seq([i,op(i,[liste])],i=1..nops([liste]))],

axes=frame,tickmarks=[4,4]): (deuxième tracé)

> q2:=plot([seq([op(i-1,[liste]),op(i,[liste])],

i=2..nops([liste]))],style=point,tickmarks=[4,4]):

> m:=200:liste:=op({}):

> for n to m do a:=rand()/1e12:liste:=liste,a od:

> p3:=plot([seq([i,op(i,[liste])],i=1..nops([liste]))],

tickmarks=[4,4]): (troisième tracé)

>q3:=plot([seq([op(i-1,[liste]),op(i,[liste])],

i=2..nops([liste]))],style=point,tickmarks=[4,4]):

> A:=matrix(3,1,[p1,p2,p3]): display(A);


chap10__1.pngfigure 10.1 : trois séries temporelles

Au vu de ces séries, il est difficile de savoir si l'on a affaire à un phénomène au hasard ou à un phénomène controlé par une loi précise.

S'il existe une loi sous-jacente, la valeur du phénomène à l'instant t est déterminée par les valeurs antérieures, et, s'il s'agit d'une itération simple, par la valeur antérieure.

On trace donc le graphe donnant la valeur à l'instant t en fonction de la valeur à l'instant t - 1 :

> B:=matrix(3,1,[q1,q2,q3]):

> display(B);


chap10__2.pngfigure 10.2 : dynamiques sous-jacentes

La première série est en fait l'application logistique pour k = 4, la seconde est l'application de Hénon et la dernière décrit un nombre pris au hasard entre 0 et 1.

Ces trois séries sont décryptées par l'application de Lorenz de premier retour, qui donne la variable (ou l'une des variables dans le cas de l'attracteur de Hénon) en fonction de sa valeur antérieure.

On remarque, dans le cas de Hénon, que l'on retrouve la forme de l'attracteur étrange en ne faisant intervenir qu'une seule des deux variables, en l'occurence x $.$ Cette propriété parait à première vue surprenante.

L'explication réside dans l'autosimilarité de l'attracteur étrange. Du fait de l'autosimilarité, la structure de l'attracteur se retrouve dans chacune de ses parties, et, en fait, dans toutes les propriétés de celui-ci :on retrouvera la même topologie que celle de l'attracteur en traçant n'importe quoi, du moment que cela concerne l'attracteur !

début chapitre

Reconstruction de l'attracteur de Rössler

La même méthode peut être employée pour reconstruire les attracteurs étranges solutions de systèmes d'équations différentielles, mais, si l'attracteur étrange est par exemple à trois dimensions, il faudra tracer les points MATH de manière à avoir un tracé à trois dimensions.

Prenons l'exemple de l'attracteur de Rössler.

On fait tout d'abord la liste des x correspondant aux dates successives :

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

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

D(z)(t)=0.2+x*z-5.7*z],[x(t),y(t),z(t)],t=40..200,

[[x(0)=1,y(0)=0,z(0)=1]],stepsize=0.1,scene=[t,x]):

> a:=op(1,op(1,p)):nops(a):

a donne la liste des dates successives avec les valeurs de x correspondantes, entre 40 et 300$,$ espacées de 0,2. La valeur de x pour la $i^{\grave{e}me}$ date est donnée par $op(2,op(i,a))$ ;le vérifier.

On reconstruit maintenant l'attracteur à 3 dimensions en mettant en abcisse x(i), en ordonnée x(i + 5) et en côte x(i + 10), ce qui fait un temps de reconstruction égal à 0,5 puisque le pas d'intégration est de 0,1.

>pointplot3d([seq([op(2,op(i,a)),op(2,op(i+5,a)),

op(2,op(i+10,a))],i=1..nops(a)-10)],style=line,color=black);


chap10__8.pngfigure 10.3 : reconstruction de l'attracteur de Rössler

On reconnait bien l'attracteur de Rössler, reconstruit à l'aide des valeurs de la seule variable x.

Le temps de reconstruction doit être choisi avec soin. Traçons une projection de l'attracteur à 2 dimensions avec divers temps de reconstruction.

On prend d'abord un temps de reconstruction de 0,1 :

> plot([seq([op(2,op(i,a)),op(2,op(i+1,a))],i=1..nops(a)-1)]);


chap10__9.pngfigure 10.4 : attracteur de Rössler avec un temps de reconstruction de 0,1

4

L'attracteur est regroupé autour de la première bissectrice :le temps étant très court, $x(t+\tau )$ est voisin de x(t) et l'attracteur est trop concentré.

Prenons un temps très long, par exemple 5 :

>plot([seq([op(2,op(i,a)),op(2,op(i+50,a))],i=1..nops(a)-50)]);


chap10__11.pngfigure 10.5 : attracteur de Rössler avec un temps de reconstruction de 5

Cette fois, le temps de reconstruction est trop long par rapport au temps de révolution du point.

Prenons le temps de reconstruction égal à 0,5 :

> plot([seq([op(2,op(i,a)),op(2,op(i+5,a))],i=1..nops(a)-5)]);


chap10__12.pngfigure 10.6 : attracteur de Rössler avec un temps de reconstruction de 0,5

On obtient cette fois une image correcte de l'attracteur.

début chapitre

Reconstruction de l'attracteur de Lorenz

Recommençons de la même façon pour l'attracteur de Lorenz :

> 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=40..60,[[x(0)=0.1,y(0)=0,z(0)=0.1]],

stepsize=0.01,scene=[t,x]):

> a:=op(1,op(1,p)):

> pointplot3d([seq([op(2,op(i,a)),op(2,op(i+4,a)),op(2,op(i+8,a))],

i=1..nops(a)-8)],color=red,axes=framed,style=line);


chap10__13.pngfigure 10.7 : attracteur de Lorenz avec un temps de reconstruction de 0,04

En projection, avec un temps de reconstruction de 0,01, on obtient :

>plot([seq([op(2,op(i,a)),op(2,op(i+1,a))],i=1..nops(a)-1)]);


chap10__14.pngfigure 10.8 : attracteur de Lorenz avec un temps de reconstruction de 0,01

On voit que le temps est trop court. Avec 0,5, on a :

> plot([seq([op(2,op(i,a)),op(2,op(i+50,a))],i=1..nops(a)-50)]);


chap10__15.pngfigure 10.9 : attracteur de Lorenz avec un temps de reconstruction de 0,5

Cette fois, le temps est trop long et l'on ne reconnait plus l'attracteur de Lorenz.

Cette méthode de reconstruction, basée sur l'autosimilarité, est en fait valable pour n'importe quelle fractale obtenue par une équation non linéaire.

début chapitre

Crises et bifurcations

Pour certaines valeurs des paramètres dont dépendent les attracteurs étranges, on peut avoir un changement qualitatif dans l'aspect de l'attracteur :brusque changement dans la taille, réunion de deux parties, ou encore disparition ou apparition de l'attracteur chaotique. Ce sont des bifurcations ou des crises, analogues aux bifurcations étudiées pour les itérations

MATH

Crise intérieure

 

Dans une première sorte de crise intérieure, on observe une brusque variation dans la taille de l'attracteur. Voyons le sur l'exemple de l'attracteur d'Ikéda.

L'attracteur d'Ikéda, vu au chapitre 8, a pour équations :
MATH

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

> restart:with(plots):

> r:=0.84:c1:=0.4:c2:=0.9:c3:=7.1:

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

> for i to 2000 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,view=[-0.6..1.6,-1.5..1]);


chap10__36.png10.14 : attracteur d'Ikéda avec $C_{3}=0,71$

Recommençons en passant la valeur de $C_{3}$ à 7,3, les autres valeurs restant identiques :


chap10__39.png10.15 : attracteur d'Ikéda avec $C_{3}=0,73$ et crise intérieure

L'attracteur s'est brusquement aggrandi, tout en passant l'essentiel de son temps dans le coeur, qui est en fait l'attracteur précédent.

Que s'est-il passé ?En fait, pour une certaine valeur de $C_{3}$ entre 7,2 et 7,25, l'attracteur touche un cycle instable de période 5 ;il englobe alors brutalement toute la variété instable du cycle, qui joint un point-selle à l'autre.

En effet, s'il englobe un point-selle, il englobe également tous les itérés de ce point, qui se trouvent dans la variété instable.

On peut également observer une autre sorte de crise intérieure sur l'attracteur de Hénon. Il s'agit cette fois de la réunion de 2 morceaux d'attracteur, par un dédoublement de période.

On va tracer l'attracteur de l'application de Hénon
MATH

pour des valeurs de a égales à 2, 2,01 et 2,02 :

> restart:with(plots):

> f:=proc(x,y): a-x^2-0.3*y,x end:

> a:=2:x:=1.6:y:=0:for n from 1 to 200 do x,y:=f(x,y):od:

> liste:=x,y:

> for n from 1 to 2000 do x,y:=f(x,y):liste:=liste,x,y:od:

> p1:=pointplot([liste],color=red,tickmarks=[3,3],title=''a=2''):

On recommence pour obtenir p2 avec a = 2,01 et p3 avec a = 2,02, puis

> A:=matrix(1,3,[p1,p2,p3]):

> display(A);


chap10__42.png10.16 : l'attracteur de Hénon au voisinage de la crise intérieure

On voit un attracteur pour 2,02 qui se sépare lorsque a diminue en 2 morceaux, l'itéré passant alternativement d'un morceau à l'autre. Les 2 morceaux se rapprochent et se rejoingnent au point-selle (0,91, 0,91).

On a alors une crise interne que l'on va voir en traçant un seul des 2 morceaux ;pour cela on va tracer une itération sur deux pour les mêmes valeurs du paramètre a :

> restart:with(plots):

> f:=proc(x,y) local z: a-x^2-0.3*y,x end:

> a:=2.01: x:=0:y:=1.4:for n from 1 to 200 do

x,y:=(f@f)(x,y):od:

> liste:=x,y:

> for n from 1 to 2000 do x,y:=(f@f)(x,y):liste:=liste,x,y:od:

> pointplot([liste],color=red,view=[-0.7..1.7,-0.7..1.7]);


chap10__44.pngfigure 10.17 : tracé d'un morceau de l'attracteur de Hénon avec une itération sur deux avec $a=2,01$

Avec la valeur initiale choisie, on a le morceau du haut ;on aurait eu l'autre morceau en partant par exemple de (1,6, 0).

Passons a à la valeur 2,02 avec le même programme ;on obtient le tracé suivant :


chap10__46.pngfigure 10.18 : tracé d'un morceau de l'attracteur de Hénon avec une itération sur deux avec $a=2,02$


En diminuant la valeur de a depuis la valeur 2,02, on a un doublement de période et la point passe d'un attracteur en un seul morceau à un attracteur à deux morceaux, l'itéré passant alternativement d'un morceau à l'autre.

On trouve également une crise intérieure avec l'attracteur de Chua qui, au dessus de la valeur critique du paramètre, se compose de deux morceaux qui se rapprochent et ne forment plus qu'un seul attracteur au dessous de la valeur critique (voir chapitre 8 pour les équations) :

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

> c1:=15.6:c2:=1:m0:=-9/7:m1:=-4/7:

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

>c3:=38.4: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=80..120,

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


chap10__48.pngfigure 10.19 : attracteur de Chua pour $c_{3}=38,4$

On trouverait l'autre morceau de l'attracteur en prenant une condition initiale négative.Pour la valeur de $c_{3}=38,3$ avec la même instruction, on trouve :


chap10__51.pngfigure 10.20 : attracteur de Chua pour $c_{3}=38,3$

Cette fois, le point parcourt l'attracteur entier. On a réunion des deux attracteurs au passage du point-selle qui sépare les bassins d'attraction de ces deux attracteurs ; lorsqu'un attracteur rejoint le point-selle, il englobe les itérés du point-selle, c'est-à-dire la variété instable qui contient l'autre attracteur et ceux-ci se rejoignent.

début chapitre

Crise de frontière

On peut avoir d'autres issues ;traçons l'attracteur d'Ikéda pour $R=1,008,$ $C_{1}=0,4,$ $C_{2}=0,9$ et $C_{3}=6$ :

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

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

> for i to 1000 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);


chap10__56.pngfigure 10.21 : attracteur d'Ikéda avec R = 1,008 et crise de frontière

Cette fois, pour une valeur R = 1, on a une crise de frontière :pour cette valeur, l'attracteur a atteint un point-selle, qui fait frontière entre le bassin d'attraction de l'attracteur étrange et celui du puits qui se trouve en haut de la figure. Une des branches de la variété instable du point-selle est donc dans le bassin d'attraction du puits. Tôt ou tard, le point va se diriger vers le puits qui devient l'attracteur du système, et l'attracteur étrange disparait. Pour une valeur de R légèrement supérieure à la valeur critique, le point va passer beaucoup de temps sur le ''fantôme'' de l'attracteur avant de se diriger vers le puits. On a affaire à un chaos transitoire survenant pour les valeurs proches de la crise de frontière.

On prend pour exemple l'attracteur de Curry et Yorke, étudié au chapitre 8, et, plus spécialement l'entrée dans la fenêtre d'accrochage d'ordre 4.

Traçons, de la même façon que dans le chapitre 8, l'attracteur de Curry et Yorke pour MATH et MATH

Pour MATH on obtient,pour les itérés entre 1800 et 2000 :

> restart:with(plots):

> 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=1800..n)],style=point,axes=none) end:

> f(1.55759,2000);


chap10__21.pngfigure 10.10 : attracteur de Curry et Yorke pour MATH

Pour $\epsilon =1,55760,$ on a :

>f(1.55760,2000);


chap10__24.pngfigure 10.11 : attracteur de Curry et Yorke pour MATH

On passe brusquement du régime chaotique au régime périodique d'ordre 4.

On le confirme en traçant la valeur de l'abcisse en fonction du numéro de l'itération entre 1850 et 2000 :

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

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

> for i to 2000 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([liste]))],

color=red,view=[1850..2000,-3..2])


chap10__26.pngfigure 10.12 : régime chaotique pour MATH

Recommençons avec MATH :


chap10__29.pngfigure 10.13 : régime périodique d'ordre 4 pour MATH

Ces figures suggèrent un passage brutal du régime chaotique à l'accrochage d'ordre 4 ; le scénario semble le même que pour l'attracteur d'Ikéda ; lorsque l'attracteur augmente de taille, il vient à toucher un point-selle dont la variété stable sépare les bassins d'attraction de l'attracteur étrange et celui du cycle stable à 4 points, et tôt ou tard, le système vient converger sur le point périodique de période 4. On peut, en sens inverse, observer l'apparition du chaos dans un système, d'abord de façon transitoire ; puis ce transitoire devient de plus en plus long jusqu'à devenir permanent.

 

Un autre exemple est celui de l'attracteur de Lorenz (voir chapitre 8).

début chapitre

retour index