Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog

Les courbes fractales sous Matlab

Différentes fractales

Le "père" des fractales est le mathématicien franco-américain Benoit Mandelbrot, né en Pologne en 1924, émigré en France en 1936, puis aux Etats-Unis après ses études supérieures à Paris. Un certain nombre de fractales avait cependant déjà été décrites pendant le demi-siècle précédent, mais plutôt comme des monstruosités mathématiques : citons l’ensemble de Cantor (Georg Cantor, 1845-1918), les courbes de Péano  (Giuseppe Péano, 1858-1932), de Hilbert (David Hilbert, 1862-1943), le triangle de Sierpinsky (Waclaw Sierpinski, 1882-1969) ou les ensembles de Julia (Gaston Julia, 1893-1978).

Cantor était un mathématicien allemand à l’origine de la théorie des ensembles. Son travail sur l’ensemble de Cantor, considéré comme exemple d’ensemble exceptionnel, ou  "monstre mathématique", date de 1883. Le but de Cantor était de montrer qu’il pouvait exister un ensemble de points discontinu, donc de dimension topologique 0, et cependant en nombre infini, comparable à celui des nombres réels. L’ensemble de Cantor joue un rôle très important dans de nombreuses branches des mathématiques et dans les systèmes dynamiques comme une "poussière de points".

Giuseppe Piano, en 1890, et David Hilbert, en 1891, ont fabriqué des courbes qui "remplissent le plan", montrant que la notion de dimension n’est pas simple, puisqu’une courbe de dimension 1  remplit une surface de dimension topologique 2.

Waclaw Sierpinsky est un grand mathématicien Polonais, professeur à Lvov (ville polonaise jusqu’en 1939 et maintenant en Ukraine), puis à Varsovie.

Gaston Julia n’avait que 25 ans en 1918 quand il publie son œuvre maîtresse "Mémoire sur l’itération des fonctions rationnelles" où il introduit les ensembles de Julia. Blessé et ayant perdu son nez au cours de la première guerre, il deviendra professeur à l’Ecole Polytechnique.

Citons encore Félix Hausdorff (1868-1942), mathématicien à l’université de Bonn, auteur de la dimension de Hausdorff. Juif, il se suicidera à l’annonce de sa déportation en camp de concentration.

Le mérite fondamental de Mendelbrot est d’avoir compris que les monstres mathématiques découverts par ses prédécesseurs, n’étaient pas des monstres, mais au contraire la géométrie habituelle de la nature. Citons une phrase de son livre "La géométrie fractale de la nature" : "Les nuages ne sont pas des sphères, les montagnes ne sont pas des cônes, les côtes ne sont pas des cercles, l’écorce n’est pas lisse et l’éclair ne se déplace pas en ligne droite". La géométrie euclidienne ne correspond pas aux phénomènes naturels ; ceux-ci présentent de multiples détails à toutes les échelles, tout en étant souvent structurés de la même façon sur plusieurs échelles de dimension, c’est le cas des arbres, des nuages, des montagnes ou du bassin d’un fleuve ; la géométrie de la nature est fractale.

L’autre grand mérite de Mendelbrot est d’avoir utilisé ce formidable outil qu’est l’ordinateur pour construire les fractales et en particulier le fameux ensemble de Mendelbrot, devenu un des symboles des nouvelles mathématiques. Nul ne peut réellement comprendre ce qu’est une fractale avant d’avoir vu celle-ci se construire pas à pas sur l’écran pour former un dessin merveilleux. L’usage de l’ordinateur a remis à l’honneur les mathématiques expérimentales, la science des fractales et du chaos lui doit tout.

Au sens strict, les fractales sont des figures autosimilaires. Cela signifie que la figure se compose d’un certain nombre de copies réduites d’elle-même. Considérons la figure appelée "triangle de Sierpinski" :

Si l’on fait trois copies réduites d’un facteur 1/2 en longueur du dessin, on obtient trois triangles qui reforment le triangle initial. Chacun des trois triangles se compose à son tour de trois triangles réduits de 1/4 par rapport au triangle initial, et ainsi de suite.

A noter que, sur la figure présentée ci-dessus, on ne pourrait renouveler l’opération que 5 fois, car le dessin ne laisse voir que 243=35 triangles de grandeur minimale (1/2)5=1/32 du triangle initial. Dans une fractale, l’opération peut se répéter indéfiniment sur des triangles qui deviennent  infiniment petits : le dessin présenté est en fait une préfractale, que l’on a arrêté à la 4ième itération.

Pour dire les choses différemment, si l’on agrandit d’un facteur 3 un des triangles formant le tiers du triangle initial, en faisant apparaître des détails plus fins, on retrouve le triangle entier. Il y a invariance d’échelle.

La nature et l’activité humaine nous fournissent de nombreux exemples de préfractales : un chou-fleur se compose de petits chou-fleurs qui se composent à leur tour de petits chou-fleurs ; c’est un système hiérarchique, avec une hiérarchie identique à tous les niveaux. Un arbre se compose de branches, qui sont des arbres en réduction ; la branche se compose à son tour de petites branches, et ainsi de suite.

L’autosimilarité ne définit pas complètement une fractale. Un segment de droite, par exemple est autosimilaire, en ce sens que l’on peut en faire des copies réduites qui reforment le segment originel. La différence avec la fractale est que l’on peut choisir pour facteur de diminution n’importe quel nombre entier ; 5 copies réduites d’un facteur 1/5 reforment bien le segment original par exemple, tandis que, pour une fractale, il n’y a qu’un seul facteur qui marche, ½ pour le triangle de Sierpinski.

Une autre différence plus fondamentale est que la fractale présente des irrégularités à toutes les échelles. D’ailleurs, le mot fractale vient du latin frangere, qui veut dire "casser".

Lorsque l’on regarde un arbre, on remarque que la branche n’est jamais la copie exacte de l’arbre. On reconnaît bien la forme générale, mais les détails sont différents : les fractales naturelles sont des fractales statistiques ; citons les côtes, le bassin d’un fleuve avec les rivières qui s’y jettent, une chaîne de montagne vue par avion ou encore un nuage, ou, dans un autre ordre d’idées, les poumons ou la circulation sanguine. Celle-ci, des artères aux vaisseaux, offre une très grande surface d’échange pour un petit volume ; c’est là une des utilités importantes des fractales.

On retrouve la structure hiérarchisée d’une fractale dans la loi générale appelée la répartition 20/80 : les 20% les plus riches de la planète possèdent 80% des richesses ; les 20% des plus riches possèdent 80% des 80%, et ainsi de suite ; il en est de même de la répartition des habitants sur la terre : 80% des hommes occupent 20% de la surface des continents ; 80% des 80% occupent 20% des 20%, et ainsi de suite. Paris regroupe 1/5 des français sur un petit territoire !

La bourse également a un comportement fractal : les petites fluctuations y reproduisent les grandes à une échelle réduite ; c’est dire si d’innombrables systèmes ont adopté la structure fractale avec ses multiples avantages.

La courbe de Koch

Prenons un autre exemple classique de fractale, la courbe de Koch : on l’obtient de la façon suivante :

On part d’un segment de longueur 1, appelé initiateur : on en fait 4 copies réduites du facteur 1/3, donc de longueur 1/3, et l’on réunit ces 4 segments pour former la 1ère itération, le générateur. Puis on remplace les 4 segments de la 1ère itération de la même façon pour obtenir la 2ième itération. En continuant l’opération indéfiniment, on obtient à la limite une fractale, la courbe de Koch.

On peut partir d’un autre initiateur, par exemple un rectangle :

on constate qu’à la limite, on obtient également la courbe de Koch, puisque la largeur du rectangle est diminuée par 3 à chaque itération ; la fractale ne dépend pas du dessin initial, mais uniquement de l’opérateur qui fait passer de l’initiateur au générateur.

Pour construire la courbe de Koch, il faut donner la succession d’ordres suivant, qui constitue l’algorithme du programme d’ordinateur correspondant :

Prendre un segment de grandeur unité

Faire une réduction de 1/3 à partir de l’origine

Faire une 2ième réduction de 1/3, la faire tourner de 60° et la translater de 1/3

Faire une 3ième réduction de 1/3, la faire tourner de -60° et la translater pour l’amener à l’extrémité du segment précédent

Faire une 4ième réduction de 1/3  et la translater de 2/3

Recommencer l’opération un certain nombre de fois sur chacun des segments obtenus.

 

Cette transformation de similarité peut se résumer dans le tableau suivant :

 

Numéro

k

Echelle

s

Rotation

q

Translation

Tx

Translation

Ty

1

2

3

4

1/3

1/3

1/3

1/3

60°

-60°

 

0

1/3

1/2

2/3

0

0

1.713/6 : racine de trois sur six

0

En tenant compte de cos 60° = 1/2, sin 60° = 1.713/6, on obtient les équations explicites :

 

transformation

Partie x

Partie y

w1(x, y)

w2(x ,y)

w3(x ,y)

w4(x, y)

 

x/3

x/6-y1.713/6+1/3

x/6+y1.713/6+1/2

x/3+2/3

y/3

1.713/6x+y/6

-1.713/6x+y/6+1.713/6

y/3

 

Ceci se programme facilement dans un langage approprié au logiciel utilisé (Maple, Mathématica, Matlab…). Le dessin ci-dessus a été tracé avec le logiciel de calcul formel Maple avec un programme de 4 instructions.

La construction des fractales est exactement le genre de calcul que sait faire un ordinateur. Ce n’est d’ailleurs sans doute pas un hasard, mais une correspondance profonde entre la logique de l’ordinateur et la logique utilisée par la nature, souvent très différente de la logique de l’ingénieur, qui a un but en tête. La nature n’a pas de but : elle obéit au second principe de la thermodynamique, qui dit en gros que les systèmes suivent leur cours (naturel !), utilise le hasard et une méthode de tri extrêmement efficace, qui est la sélection naturelle ; le résultat en est la complexité merveilleuse et le foisonnement de la vie !

Les règles de construction des fractales, comme celles de la vie, sont souvent très simples, mais le résultat est parfois très complexe.

opérateur de hutkunson

L’opération de collage décrite ci-dessus qui mène à la fractale peut se décrire par un seul opérateur mathématique. A étant une image, appelons H(A) le collage, c’est-à-dire la réunion des 4 transformations qui font passer à l’itération suivante :

H(A) = h1(A)Uh2(A) Uh3(A) Uh4(A)

En fait, l’opérateur H caractérise entièrement la fractale, c’est l’opérateur de Hutchinson de la fractale.

Cet opérateur H a deux intérêts :

  • on passe d’une itération à la suivante en appliquant l’opérateur de Hutchinson : si A0 est le segment initial, An la nième itération, alors An+1 = H(An) pour n=0,1,2…Plus n est grand, plus on se rapproche de la fractale ; en général, 4 à 5 itérations suffisent à se faire une bonne idée de la fractale.
  • Si A désigne la fractale, c’est-à-dire la limite du processus d’itération lorsque n!’", on a
H(A) = A

avec pour conséquence que la fractale est solution, et même solution unique, de l’équation précédente. La fractale est définie comme solution unique d’une équation algébrique.

dimension fractale

On s’intéresse au nombre de segments que comporte la courbe de Koch aux différentes échelles :

A l’échelle 1, il y a 1 segment

A l’échelle 1/3, il y a 4 segments

A l’échelle 1/9=(1/3)2, il y a 16=42 segments

A l’échelle 1/27=(1/3)3, il y a 64=43 segments, etc…

Il y a manifestement une relation entre le nombre de segments et l’échelle ; désignons par N le nombre de segments et s l’échelle. La loi est du type

N=(1/s)D

En effet, prenons le logarithme (décimal ou népérien noté ln) de cette égalité :

ln(N)=ln((1/s)D)=D×ln(1/s), et D=ln(N)/ln(1/s)

Ici, à la nième itération, N=4n et 1/s=3n, d’où

D=n×ln(4)/(n×ln(3))=ln(4)/ln(3), 

Ce qui donne pour D la valeur 1,26.

Ce genre de relation est ce que l’on appelle une loi de puissance, et c’est là une caractéristique importante des fractales. Les éléments quantitatifs d’une fractale, nombre de morceaux, longueur, surface, volume, masse sont toujours des lois de puissance par rapport à l’échelle.

La dimension D ainsi définie est la dimension d’autosimilarité de la fractale. C’est une des formes de la dimension fractale de Mandelbrot . On constate que, pour une fractale, la dimension n’est pas un nombre entier ; ici, elle est comprise entre 1 et 2, et la courbe de Koch est intermédiaire entre une ligne et une surface.

On peut retrouver facilement la dimension fractale de façon graphique : la loi N=(1/s)D  peut s’écrire en passant aux logarithmes :

ln(N)=D×ln(1/s)

En traçant le diagramme appelé log-log, où l’on met le logarithme de 1/s en abscisse et le logarithme de N en ordonnée, on obtient une droite dont la pente est la dimension fractale D.

Quelle est la longueur de la courbe de Koch ? On se rend compte immédiatement que la longueur dépend de l’échelle ; la longueur du segment initial est 1, celle de la 1ière itération 4/3, puis 16/9=(4/3)² à la seconde itération et (4/3)n à la niéme itération. Lorsque n!’", cette longueur devient infinie ! Ce qui nous confirme que la courbe de Koch, de dimension fractale 1,26, est plus qu’une ligne et moins qu’une surface.

Traçons le diagramme log-log en reportant le logarithme de la longueur en fonction du logarithme de 1/s :

 

 

Dans l’ordre l’ensemble de Mandelb, de Sierpinsky et celui de Julia et de Koch
Dans l’ordre l’ensemble de Mandelb, de Sierpinsky et celui de Julia et de Koch
Dans l’ordre l’ensemble de Mandelb, de Sierpinsky et celui de Julia et de Koch
Dans l’ordre l’ensemble de Mandelb, de Sierpinsky et celui de Julia et de Koch

Dans l’ordre l’ensemble de Mandelb, de Sierpinsky et celui de Julia et de Koch

Niels Fabian Helge von Koch, né le à Stockholm et mort le (à 54 ans) à Danderyd, est un mathématicien suédois qui a donné son nom à l'une des premières fractales : le flocon de Koch.

 

Courbe de Koch

 
Les 4 premières étapes de la construction.
 
Les 6 premières courbes successives en animation.

On peut la créer à partir d'un segment de droite, en modifiant récursivement chaque segment de droite de la façon suivante :

  1. On divise le segment de droite en trois segments de longueurs égales.
  2. On construit un triangle équilatéral ayant pour base le segment médian de la première étape.
  3. On supprime le segment de droite qui était la base du triangle de la deuxième étape.

Au bout de ces trois étapes, l'objet résultant a une forme similaire à une section transversale d'un chapeau de sorcière.

La courbe de Koch est la limite des courbes obtenues, lorsqu'on répète indéfiniment les étapes mentionnées ci-avant.

Une extension de la notion de dimension permet d'attribuer à la courbe de Koch une dimension fractale (non entière) dont la valeur est2,3,4

La courbe de Koch a une longueur infinie parce qu'à chaque fois qu'on applique les modifications ci-avant sur chaque segment de droite, la longueur totale est multipliée par quatre tiers.

La surface délimitée par la courbe est cependant finie, car contenue dans le demi-disque dont le diamètre est le segment initial. Si l'on a choisi l'unité d'aire de telle sorte que le triangle construit à la première itération soit d'aire 1, alors l'aire de chacun des quatre triangles construits lors de la seconde itération est 1/9 : on a donc augmenté l'aire totale de 4/9. Pour l'itération n, on ajoute . L'aire totale s'obtient finalement en sommant une série géométrique convergente :

.

 

Benoît Mandelbrot, né le à Varsovie (Pologne) et mort le à Cambridge (États-Unis), est un mathématicien polono-franco-américain.

Il est le découvreur des fractales, nouvelle classe d'objets mathématiques, dont fait partie l'ensemble de Mandelbrot.

Il a également travaillé sur des applications originales de la théorie de l'information, telles que la démonstration de la loi de Zipf, et sur des modèles statistiques financiers. Jugeant le modèle Black-Scholes trop simpliste — il est fondé sur une distribution normale aux variations modérées — et tenant son application pour partie responsable de la crise bancaire et financière de l'automne 2008[réf. nécessaire], il propose un modèle fondé sur les lois stables de Lévy, puis sur une approche fractale.

 

 

 

Dans l’ordre l’ensemble de Mandelb, de Sierpinsky et celui de Julia

 

 

Fractale de Mandelbrot  

Un exemple de représentation graphique de l'ensemble de Mandelbrot:   
  
et ci-dessous le code Matlab qui permet de la générer.   


clear all;close all   
% Pour bien commencer...  
% Nombre de termes calcules pour chaque suiteNmax=30;  
% Seuil a partir duquel on considere que la suite divergeSeuil=2;pasx=0.01;pasy=0.01;M=[];for x=-1.8:pasx:0.6    V=[];    for y=-1.2:pasy:1.2   
% Initialisation de la suite      
 z=0+1i*0;  
% Puis on calcule les termes de la suite jusqu'a Nmax  
% sauf si on dépasse le seuil (on considère alors que la suite    
 % diverge vers l'infini)      
 for bcl=0:Nmax            
z=z^2+(x+1i*y);           
   % Test divergence          
 if abs(z)>Seuil, break;
end       
 end        

V=[V, bcl];  
        %V=[V,abs(z)];   
 end        
M=[M;V];end
figure(1),clf,
whitebg('w');
axis off
imagesc(M);  

  

Fractale de Julia  

Un exemple de représentation graphique de l'ensemble de Mandelbrot:   
  
et ci-dessous le code Matlab qui permet de la générer. Bien sûr, il ne faut pas hésiter à jouer avec la valeur du paramètre complexe c   

clear all;close all  
% parametre initial: diffentes valeurs possibles bien sur... 
%c=-1;  
%c=-1+0.2312i  
%c=0.112-0.64ic=-0.414-0.612i  
%c=0.284-0.0122i  
% Nombre de termes calcules pour chaque suiteNmax=100;  
% Seuil a partir duquel on considere que la suite divergeSeuil=10;pasx=0.002;pasy=0.002;  
% Balayages (discetisations) en x et yXX=-1.4:pasx:1.4; YY=-1.1:pasy:1.1;M=[];for x=XX    V=[];    for y=YY         
% Initialisation de la suite         
z=x+1i*y;          
% Puis on calcule les termes de la suite jusqu'a Nmax         
for bcl=0:Nmax             
z=z^2+c;           
 % Test divergence             
if abs(z)>Seuil,  
break; 
end         
end        
 V=[V, bcl];       
   %V=[V,abs(z)];    
 end         
 M=[M;V]; 
end  
figure(1),  
clf,JJ=jet; 
JJ(1:15,:)=1;  
colormap(JJ); 
imagesc(M); 
axis off, 
whitebg('w')  

  
Fractale de Sierpinski  

Un exemple de représentation graphique de l'ensemble de Mandelbrot:   
et ci-dessous le code Matlab qui permet de la générer.   
L'algorithme proposé ici est stochastique. Il existe aussi des constructions plus géométriques par exemple.   
clear all;close allfigure(1);clf;hold on;axis offNmax=10000;  

 % Nombre d iterations 
X=[];Y=[]; 
A=[0;0]; 
B=[1;0]; 
C=[0;1];  
% On tire un point au hasardx=rand(1); 
y=rand(1); 
if (x+y>1), 
x=x/2;y=y/2;end     
for bcl=1:Nmax              
% On choisit le point A, B ou C au hasard     
 tmp=rand(1);     
 if (tmp<1/3)      
 % alors point A         
 x=x/2;y=y/2;     elseif (tmp>2/3)     
 % alors point C          
x=x/2; 
y=(1+y)/2;     
 else                
  % sinon point B          
x=(1+x)/2; 
y=y/2;     
 end     
  X=[X x];    
  Y=[Y y];   
 endplot(X,Y,'.');  

  
On peut aussi animer cette construction, en plaçant au fur et à mesure chaque point, et en imposant une courte pause entre deux points.   


clear all;close all  
figure(1);clf;hold on;  
axis([0 1 0 1]);axis off  
Nmax=10000;   
% Nombre d iterations 
X=[];Y=[];A=[0;0];B=[1;0];C=[0;1];  
% On tire un point au hasard  
x=rand(1);y=rand(1);  
if (x+y>1),x=x/2;y=y/2; 
end       
for bcl=1:Nmax               
% On choisit le point A, B ou C au hasard       
tmp=rand(1);      
if (tmp<1/3)         
% point A          
x=x/2;y=y/2;      
elseif (tmp>2/3)      
% point C          
x=x/2;y=(1+y)/2;      
else                  
% point B            
 x=(1+x)/2;y=y/2;     
 end       
%X=[X x];       
%Y=[Y y];      
plot(x,y,'.');  
pause(.01)     
end  
end  

 
 

 

Les courbes fractales sous Matlab

Ci dessus l'arbre de Pythagore est une fractale plane construite par rotation d'un arbre de pi/2. Elle porte le nom de Pythagore..

Partager cet article
Repost0
Pour être informé des derniers articles, inscrivez vous :