Ensemble de Mandelbrot

Auteur ou autrice : Max Günther.

Mise en ligne le 14 mai 2025

Image du résultat de l’exemple

Ce code permet de calculer et visualiser des ensembles de Mandelbrot. MetaPost n’est pas un langage spécialement conçu pour ce type de calculs longs, cependant, il s’en sort étonnament bien ! Ce code a été publié dans l’article : TUGboat, Volume 45 (2024), No. 1, Visualizing the Mandelbrot set with MetaPost.

Code


outputtemplate := "%j.png";
outputformat := "png";
beginfig(1)
    numeric x_min, x_max, y_min, y_max, res;
    x_min := -2; x_max := 0.5;
    y_min := -1.25; y_max := 1.25;
    res := 1000;
    numeric n_max, dx, dy; n_max := 200;
    dx := (x_max - x_min) / res;
    dy := (y_max - y_min) / res;
    fill (0,0)--(res-1,0)--(res-1,res-1)
    --(0,res-1)--cycle;
    for x=0 upto res - 1:
        for y=0 upto res - 1:
            numeric re, im, old_re, old_im, a, b;
            re := 0; im := 0;
            re_old := 0; im_old := 0;
            a := x * dx + x_min;
            b := y * dy + y_min;
            for n=0 upto n_max:
                numeric squared_re, squared_im;
                squared_re := re**2;
                squared_im := im**2;
                re_old := squared_re - squared_im;
                im_old := 2.0 * re * im;
                re := a + re_old;
                im := b + im_old;
                if squared_re + squared_im > 4:
                    numeric c; c := (n_max - n) / n_max;
                    numeric o; o := 0.95;
                    fill (x,y)--(x+o,y)--(x+o,y+o)
                    --(x,y+o)--cycle withpen pencircle
                    scaled .1pt withcolor (c, c, c);
                fi;
                exitif squared_re + squared_im > 4;
            endfor;
        endfor;
    endfor;
endfig
end

Mots clés : ensemblesMandelbrotfractalcomplexe

Cet exemple fait partie de la collection d’exemples Figures fractales.

Fichiers

Télécharger l’archive complète