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 = zn+ 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