|
 |
|
L'ensemble de Mandelbrot est
à l'origine d'une très belle collection d'images connue sous le nom
d'ensemble de Julia. On se rappelle que l'ensemble de Mandelbrot
a été défini à partir de l'équation de récurrence
zn+1 = zn2 + C
en
prenant z0 = 0 et en faisant varier la valeur de C.
|
 |
Le mathématicien français Gaston Maurice Julia (1893-1978) fut défiguré
par une blessure au visage pendant la première guerre mondiale et porta
un masque une partie de sa vie. |
Pour obtenir un élément de l'ensemble de Julia, on procède à l'inverse.
On fixe une valeur de C et on fait varier zo. D'abord on construit une
grille, comme on l'a fait pour l'ensemble de Mandelbrot. On choisit un
point sur cette grille (à l'intérieur ou à l'extérieur de l'ensemble de
Mandelbrot). Ce point sera la valeur de C. On donne ensuite à zo
chacune des valeurs de la grille. Pour chaque valeur associée à zo, on
obtient une suite de nombres complexes. Si la suite des modules de ces
nombres complexes ne tend pas vers l'infini (| zn | < 2 pour tout
n), on noircit le point associé à zo. Autrement, on colorie ce point
d'une couleur correspondant au nombre de termes qu'on a dû calculer
avant d'obtenir un module supérieur ou égal à 2. Lorsque tous les
points de la grille ont été associés à zo, on obtient une image
colorée. Cette image est une fractale de type Julia. Si on considère
que C peut prendre une multitude de valeurs, on obtient un ensemble
formé de différentes fractales: l'ensemble de Julia (en l'honneur du
mathématicien français Gaston Maurice Julia décédé en 1978).
Exemple
Voici
quatre fractales de type Julia obtenues en prenant les valeurs
suivantes de C :
- C =
-0.096 + 0.735i (situé au point 1)
- C =
-0.414 - 0.612i (situé au point 2)
- C =
0.382 + 0.147i (situé au point 3)
- C =
0.284 - 0.0122i (situé au point 4)

Ensemble de Mandelbrot

1. Fractale de type Julia
en prenant C = -0.0958 + 0.735i
|

2. Fractale de type Julia
en prenant C = -0.414 - 0.612i
|

3. Fractale de type Julia
en prenant C = 0.382 + 0.147i
|

4. Fractale de type Julia
en prenant C = 0.284 - 0.0122i
|
Suggestions
de quelques outils d'exploration
-
Les images précédentes
ont été créées à l'aide du logiciel «Fractal Domains» pour Power
Macintosh. Le logiciel «Ultra
Fractal» permet de faire de même sur un PC (compatible IBM)
avec Windows.
-
On peut aussi obtenir
les fractales de l'ensemble de Julia en utilisant le logiciel Maple.
Il suffit de copier le programme (en rouge) sur une feuille de travail
du logiciel en indiquant la partie réelle et la partie imaginaire de C.
On obtient les plus beaux spécimens de fractales lorsqu'on choisit C
sur la frontière extérieure de l'ensemble de Mandelbrot. Mais
attention, Maple 7 gère très mal les étendues contenant des décimales
dans la macro-commande plot3d. Écrivez -13/10..13/10 comme étendue à la
dernière ligne du programme plutôt que -1.3..1.3.
couleur:=proc(a,b)
local x,y,xi,yi,n;
global reel,imaginaire;
x:=a;
y:=b;
for n from 0 to 100 while evalf(x^2+y^2)<4 do;
xi:=evalf(x^2-y^2+reel);
yi:=evalf(2*x*y+imaginaire);
x:=xi;
y:=yi;
od;
n;
end:
reel:=-0.181;
imaginaire:=-0.667;
plot3d(0,(-13/10)..(13/10),(-13/10)..(13/10),orientation=[-90,0],
style=patchnogrid,scaling=constrained,axes=framed,numpoints=20000,color=couleur);

Fractale de type Julia
obtenue à l'aide du programme précédent
en prenant C = -0.181 - 0.667i
On peut aussi par itération inverse obtenir les points à la frontière
de l'ensemble de Julia. Pour cela, on inverse l'équation zn+1 = zn2 + C
pour
qu'elle devienne
On choisit d'abord une valeur initiale zo quelconque et on
applique l'équation précédente à plusieurs reprises en prenant soin de
multiplier à chaque fois la valeur obtenue de z par 1 ou par -1 (le
choix se fait au hasard). On ignore les premières valeurs obtenues
(disons les 50 premières), il faut laisser au système le temps de
s’adapter. Rapidement ces valeurs convergent vers la frontière de
l'ensemble de Julia. Il suffit alors de les porter sur un plan
cartésien pour en obtenir une représentation graphique.
julia_front := proc(c,n,zo)
local a, L, z;
z := zo;
L := [];
a := rand(1..2);
to n do
z := evalf(sqrt(z-c))*(-1)^a();
L := L,[Re(z),Im(z)]
od;
plot([L[50..n]],color=black,axes=framed,scaling=constrained,style=point,symbol=point);
end:
c := -0.181-0.667*I;
n := 2000;
zo := 0;
julia_front(c,n,zo);

Frontière de l'ensemble de Julia obtenue à l'aide du
programme précédent
en prenant C = -0.181 - 0.667i
|