NOMBRES – Curiosités, Théorie et Usages

 

Accueil                           DicoNombre            Rubriques           Nouveautés      Édition du: 17/10/2022

Orientation générale        DicoMot Math          Atlas                   Actualités                       M'écrire

Barre de recherche          DicoCulture              Index alphabétique        Références      Brèves de Maths

       

FRACTALES

 

Débutants

Fractales

Théorie et Pratique

 

Glossaire

Général

 

 

INDEX

 

Fractales

 

Propriétés

Programmation – Fougère

Aire

Programmation – Fractale de Mandelbrot

Programmation – Ensemble de Julia

 

Sommaire de cette page

>>> En pratique

>>> Bases de la construction du POU

>>> Nature du traitement

>>> Algorithme

>>> Programmation Maple

>>> Programmation Scratch

>>> Expériences

>>> Archives (années 1990)

 

 

 

 

 

FRACTALES en PRATIQUE

  

Comment construire soi-même des dessins fractals et approcher ces objets si fascinants. Comme pour un moteur ou une montre, vous allez avoir l'occasion d'aller voir comment c'est fait.

Quatre étapes relativement faciles:

*       Méthode de calcul,

*       Algorithme,

*       Implémentation sur Maple, et

*       Implémentation avec Scratch.

 

 

 

 

EN PRATIQUE – Orientation

 

Plusieurs possibilités selon votre passion pour les fractales

 

Contemplatif

Consulter tout simplement les nombreux sites Internet pour de jolies images fractales, avec n'importe quel moteur de recherche.

 

 Interactif

Se procurer le shareware FRACINT qui permet de construire toutes sortes de fractales en jouant sur les paramètres de définition (se télécharge sur Internet). Il en existe d'autres que vous trouverez sur Internet sous le nom: fractal generator  on line

 

Actif

Faire le programme avec votre logiciel préféré, ça vaut vraiment l'effort. Sous vos yeux vous apprécierez l'aspect magique de ces êtres mathématiques.
Je vous propose deux exemples simples de programmation: Maple et Scratch. 

Autant de "complexité esthétique"

avec une formule si simple !

 

Expert

Vous pouvez approfondir la théorie concernant les fractales de tout type, et voir comment construire de belles images dans le livre célèbre: " the science of fractal images de Barnsley, Devaney, Mandelbrot, Peitgen, Saupe, Voss - Éditions Springer Verlag.

 

Voir Réflexion sur les Fractales

 

 

 

 

Construction: théorie et programmation

 

Bases de la construction du POU de Mandelbrot

Imaginez un balayage du plan en lignes et colonnes. Tous les points sont méthodiquement passés en revue.

 

Chacun de ces points est analysé pour décider quelle couleur lui associer.

 

 

Balayage en x et y et analyse de chaque point

 

Le traitement appliqué est particulièrement simple: il consiste à essayer de déloger ce point. Alors, de deux choses l'une:

*       le point se déplace en papillonnant sur place, alors on le colorie en noir
ou

*       le point s'enfuit au loin, alors on le colorie en blanc.

Après analyse de tous les points, la forme fractale se dessine.

Le point s'échappe: couleur blanche.

Le point virevolte localement: couleur noire.

 

 

Nature du traitement

 

Vous connaissez le célèbre cycle de Syracuse: un traitement est appliqué à un nombre, puis au résultat trouvé, puis au résultat, etc.

Il s'agit d'une formule de récurrence qui indique comment  le nombre suivant est obtenu à partir du nombre précédent.

 

En utilisant le formule indiquée à droite et avec le nombre 3 comme racine, il devient 3x3 + 3 = 12, puis 12x12 + 3 = 147, etc. Les nombres suivants sont de plus en plus grands.

Avec le nombre 0,2 les nombres suivants se cantonnent autour de 0,27.

 

Formule de récurrence pour les fractales

 

 

Exemples ce calcul

 

Pour le dessin de la fractale, nous n'allons pas utiliser un seul nombre. Nous allons prendre les deux nombres qui caractérisent le point: son abscisse et son ordonnée (X et Y). 

Une technique de manipulation des points du plan consiste à associer les deux coordonnées pour former un nombre complexe. Inutile de connaitre ce domaine pour suivre la suite.

 

Coordonnées d'un point et nombres complexes

 

Les coordonnées x et y sont associées en un nombre composé dit complexe. On les sépare bien en multipliant le second par i, symbole des nombres imaginaires.

 

Z = X + i.Y

 

Le représentant de Z dans le plan est le point de coordonnées X et Y.

 

Reprenons la formule de récurrence, mais avec ces nombres complexes; et développons en X et Y.

 

Pour tester si le point est papillon ou déserteur, on calcule le module du nombre complexe.

 

Le test consiste à exécuter un certain nombre d'itérations (15 par exemple):

*       si le module dépasse 2 (exemple), le point n'est pas dans le POU.

*       si le module reste inférieur à 2, alors le point est au cœur du POU.
 

 

Formule de récurrence

Notes: on se souvient que i² = -1

La partie sans "i" est la partie réelle,

et celle avec "i" en facteur est la partie imaginaire.

 

 

 

Algorithme

Un système de progression (balayage) en X et en Y est mis en place.

 

Pour chaque couple (X et Y), calcul du point-racine (Z0) puis entrée dans la boucle d'itérations avec à chaque fois le calcul du module.

 

Si le module s'envole, on pose un point rouge en X et Y. Sinon, lorsque 15 itérations sont exécutées, on pose un point noir.

 

 

Programmation Maple

 

 

Commentaires

 

Le programme Maple commence par réinitialiser tout (restart).

Annonce d'une liste (L).

Mise en route de deux boucles en i et j et calcul des coordonnées x et y dans l'espace x (-1.5 à 0,5) et y (-1 à +1), zone propice à la formation de la figure fractale.

Calcul de z et z0.

Mise en place de la boucle de 15 itérations et calcul direct de la formule d'itérations. En effet, Maple sait faire les calculs en nombres complexes: Re est la partie réelle (ou x) et Im est la partie imaginaire (ou y).

Si le carré du module (r) est supérieur à 4, arrêt des itérations en forçant k à 15.

Si le r reste inférieur à 4 jusqu'à la fin des itérations, ajoutez le couple (x,y) à la liste L, témoignant que ce point est interne au POU.

Fin des trois boucles (od).

 

Appel des programmes exécutant les tracés (plots). L'instruction pointplot dessine les points aux emplacements désignés par les couples (x, y) présents dans la liste L.

 

 

Résultat de l'exécution du programme qui dure environ une minute.

 

Il est possible de choisir d'autres paramètres. Exemple avec la zone extrême gauche (ci-dessous):

 

Exemple de "papillonnage" pour le point (x = 0,2 et y = 0,5) pour 15 itérations

 

 

Programmation Scratch

Le logiciel Scratch est téléchargeable gratuitement

 et immédiatement utilisable.

 

 

Commentaires

 

Même avec le logiciel didactique Scratch, on obtient de bons résultats.

 

Démarrage en cliquant sur le drapeau vert. Effacer tout sur l'écran.

 

Boucles en Y et en X avec iterY et iterX. On met ces paramètres à 0 au départ et on incrémente en fin de boucle.

Z0Re est la partie réelle de Z0 (soit x) qui commence à -1,5 et progresse 200 fois de 0,01 jusqu'à 0,5. Idem pour Z0Im, la partie imaginaire (soit y).

Initialisation de ZRe (partie réelle de Z) et de ZIm (partie imaginaire).

Distance (module) est mis à 0 pour permettre de passer  le premier test.

La variable "compte" va comptabiliser la quantité d'itérations.

 

Boucle d'itération sur le point (X,Y). Arrêt si distance supérieure à 4 ou si 15 itérations ont été effectuées.

Calcul des parties réelles et imaginaires de Z, mises temporairement dans ZRecalc et ZImcalc.

Calcul de la distance et passage à l'itération suivante en incrémentant la valeur dans compte.

 

Selon la distance trouvée, mise en place d'un stylo noir ou rouge.

 

Mettre le stylo en bonne position (x, y) sur l'écran (100 fois les valeurs Z0Re et Z0Im).

Stylo baissé, faire un petit trait (y + 1 et y – 1).

Incrémenter les pointeurs iterX et iterY en fin de leur boucle respective.

 

 

 

Le résultat de l'exécution de ce programme est montré ci-dessous. Durée: environ deux heures.

 

 

 

Autre exemple de sortie en supprimant le petit trait en y

Voir Ensemble de Mandelbrot en Processing / Programmation de la fractale du nombre Fibonacci

 

 

Expériences

Dans le cadre des loisirs, nous étions très nombreux dans les années 1980 à découvrir à la fois:

*       les possibilités des ordinateurs personnels (IBM ou Apple);

*       ces nouveaux objets que sont les fractales; et

*       la programmation avec des langages plus abordables1 comme Pascal, Visual Basic ou encore C++.

Pour mon compte, je n'ai pas gardé trace de ces images et encore moins des programmes qui ont disparus avec l'obsolescence de ces ordinateurs de l'époque.

1 Comme beaucoup de personnes de ma génération dans le début des années 1970, j'avais essentiellement codé en assembleur, Algol et Fortran dans le cadre scolaire et professionnel.

Voir Informatique et programmation

 

Très profond dans l'ensemble de Mandelbrot

Source image: Dimensions – Jos Leys 6/9

 

 

 

Retour

*    Programmation de la fougère avec Scratch

Suite

*    Ensemble de Mandelbrot – Fractales avec zoom

*    Objets fractals – Ensemble de Cantor

*    FractalesIndex

Voir

*    Chaîne d'Or

*    Chaos

*    Complexité

*    Crises en maths

*    GéométrieIndex

*    JeuxIndex

*      Lunules en fractales

*    Paradoxes

*    Points

*    ProgrammationIndex

*    Sauts de grenouille

*    Symétries

*      Transformation du Boulanger

*      Vie et troisième dimension

 

Sites

*      Sites sur les fractales

*      Les Fractales – François Terrin

*      Fractal de Jean-Christophe Michel – Galerie

*      Easy fractal generator

Cette page

http://villemin.gerard.free.fr/Wwwgvmm/Suite/FracPrat.htm

 

Archives

 

MANDELBROT en pratique

 

*         Maîtrisant le langage de programmation et surtout les instructions graphiques, vous pouvez vous lancer dans la programmation des fractales de Mandelbrot. C'est à peine plus compliqué que la fougère.

 

*         Un simple calcul du carré des nombres complexes en module et angle et conversion en X et Y.

Voir Algorithmes 

 

Balayage du plan en X et en Y 

*         Vous pouvez chercher dans

–2,4 <  X  < 2,4

–1,5 <  Y  < 1,5

avec une profondeur d'itération de 16 (Quantité de calculs de la formule pour déterminer si le résultat tend vers l'infini ou se stabilise sur une valeur fixe.

*         Si vous rétrécissez l'intervalle en XY, il faudra une profondeur plus grande (100, 200…).

 

Boucle de test de la convergence 

 

*         Pour un point donné

Z0     =   0

ZN+1  =   ZN² + C

 

*         À chaque calcul (itération numéro i), on teste si cette valeur est bornée; c'est-à-dire si module (ou longueur) de ZN < K.

 

*         Dans le cas où la suite est bornée, on affiche un pixel de couleur témoignant de cette borne. Si elle diverge, on affiche le point en noir.

 

Calcul de ZN+1

 

ZN+1 =

ZN²

+ C

(XN + i YN

+ XC + i YC

XN² YN² + 2i XnYn

+ XC + i YC

XN+1 =

 

YN+1 =

XN² YN² + XC

 

   i ( 2XNYN + YC))

Module ZN+1 =

 

 

Exemple de programme générique

 

Les instructions sont simples et sont donc très facilement adaptables au langage de programmation que vous possédez.

Le petit effort en vaut la peine. C'est purement magique.

 

minX := -2,4

maxX:=  2,4

minY := -1,5

maxY:=  1,5

# Ce symbole annonce un commentaire.

# Bornes d'exploration en X et Y.

FOR X = 0 TO 319

# 320 points en horizontal

FOR Y = 0 TO 199

# 200 points en vertical

 

 

 

 

 

RC := minX + (maxX - minX)/320 * X

# RC est la partie réelle de C; elle est égale à la valeur de X courante; de -2,4 au départ à 2,4 à l'arrivée.

IC   := minY + (maxY - minY)/200 * Y

# IC est la partie imaginaire de C; elle est égale à la valeur courante de Y.

RZ := 0

IZ := 0

# Le nombre complexe Z est initialisé à 0.

FOR a = 0 TO 15

 # Profondeur d'itération 16. Le pointeur a commence par 0 puis est incrémenté à chaque bouche jusqu'à un maximum de 15.

 

 

 

 

 

R := RZ

# RZ est la partie réelle de Z mémorisée (n); R est la valeur en cours de calcul (n+1).

I := IZ

RZ := R*R - I*I + RC

IZ := 2* R*I + IC

# Calcul des parties réelles et imaginaires selon les formules trouvées plus haut.

   FIN SI RZ*RZ + IZ*IZ  4

# Arrêt si le module de Z dépasse 4. Même si le pointeur d'exploration a n'a pas atteint la valeur 15.

 

 

 

NEXT a

# Le pointeur est incrémenté (+1) et la boucle de calcul recommence; sauf si le pointeur a vaut 15 ou si le critère d'arrêt a été atteint, auxquels cas, le programme passe à l'instruction suivante (ci-dessous).

COULEUR := a

# Valeur de la couleur égale au pointeur d'exploration au moment de l'arrêt.

PLOTPIXEL (X, Y)

# Dessin d'un point sur l'écran en position XY et avec la couleur a

NEXT Y

NEXT X

 # Y prend la valeur suivante jusqu'à atteindre le maximum, auquel cas, le programme passe à l'instruction suivante qui consiste à incrémenter la valeur de X. Lorsque X a atteint sa valeur maximum, le programme s'arrête.

 

Zone des liens >>>