APPLICATIONSCREATION GRAPHIQUE ★ CHAOS FRACTAL SUR AMSTRAD CPC ★

Ensembles de Mandelbrot et de Julia (Micro-Systemes)Applications Creation Graphique
Qu'est-ce que le chaos ? Comment un écoulement d'air, régulier et laminaire, devient-il turbulent et chaotique ? Pourquoi est-il si difficile de faire des prévisions météorologiques à long terme, alors qu'apparemment toutes les lois physiques fondamentales nous sont connues ? Y a-t-il un ordre dans le chaos, existe-il une manière de prévoir le désordre ?

n fait, le chaos n'apparaît pas seulement en physique, où l'on peut toujours se dire qu'il est dû à des impondérables, au hasard, à l'inévitable imperfection des phénomènes naturels. On le trouve aussi dans le domaine à la pureté sans faille des mathématiques, où certaines fonctions très simples et complè-tement déterministes engendrent des structures chaotiques à la complexité sans limite, semblant échapper à la toute-puissance de l'analyse. C'est le cas notamment de la fonction : f(x) = x2 + C, qui met x au carré et lui additionne une constante C. Si l'on itère cette fonction, on forme une suite récurrente comme par exemple celle-ci :

— 2 ; — 22 — 1 = 3 ; 32 - 1 = 8 ; 82 — 1 = 63 ; 632 — 1 = 3 968 ; etc.

En appelant Un le nième terme de cette suite, on a :

Un + 1 = (Un)2 + C.

Dans cet exemple, Uo = - 2 et C = - 1. On obtient une infinité de suites différentes en faisant varier Uo et C. Certaines sont amusantes : (C = - 2 et Uo = 0) engendre 0 ; - 2 ; 2 ; 2 ; puis toujours 2 ; (C = 0 et Uo = 1) engendre une suite de 1 ; (C = - 3 et Uo = 2) génère 2 ; 1 ; — 2; 1 ; — 2; 1 ; — 2; etc.

Comment savoir à l'avance le comportement d'une suite donnée, tel va être le problème. Précisons la question : quel est I ensemble des couples de nombres (C et Uo) qui engendrent des suites ne tendant pas vers l'infini, quel que soit le nombre d'itérations ? Ne pensez pas que nous allons vous le dire, car personne ne le sait actuellement ! Bien sûr, quelques cas particuliers sont connus, tels ceux cités précédemment. Cette question devient encore plus intéressante si on laisse les variables Uo et C s'échapper de l'ensemble des réels et parcourir le plan complexe (voir article sur les complexes, in fine). Si vous vous attaquez au problème analytiquement, vous serez très vite confronté à des équations inextricables. C'est à partir de là qu'il faut raisonner géométriquement.

Le raisonnement géométrique

Si nous attribuons un point de l'espace à chaque couple de nombres (C, Uo), étant donné que C et Uo peuvent parcourir le plan complexe indépendamment l'un de l'autre, soit deux dimensions chacun, alors le couple de ces deux nombres parcourt un espace à quatre dimensions. Pour voir l'ensemble de ces points, il suffit de faire des coupes à travers cet espace, en fixant un ou deux des quatre paramètres (les parties réelles et imaginaires de chacun des deux nombres complexes). On obtient alors un volume à trois dimensions ou un plan exactement comme on obtient un plan en coupant un bâtiment à une certaine hauteur.

Le premier à effectuer cette démarche fut M. Julia, au début du siècle. Il fixait le paramètre C, et observait les courbes obtenues en faisant varier Uo dans le plan complexe. Pour obtenir une image, il faut faire un balayage : diviser une partie du plan en lignes et colonnes, puis faire parcourir à Uo le centre de chaque petit carré, intersection d'une ligne et d'une colonne. Pour obtenir une image de bonne qualité, il faut une quantité énorme de calculs : on conçoit ici l'intérêt de l'ordinateur. C'est avec lui, utilisé un peu comme un moyen de perception, que Benoît Man-delbrot a produit le premier des images de l'ensemble de nombres qui porte son nom : il a fixé le nombre de départ Uo = 0, et a fait varier la constante. Il a donc coupé notre espace quadridimen-sionnel selon un plan totalement indépendant du plan de coupe de Julia (les ensembles de Julia sont dans plusieurs plans de coupes, mais ils sont tous parallèles).

La méthode employée est très simple : pour chaque point, on calcule les termes de la suite les uns après les autres. Dès que l'un de ces termes dépasse le module 2, on compte le nombre d'itérations effectuées et on affecte une couleur à ce point en fonction de ce nombre, car il a été prouvé que si un terme de la suite dépasse 2, alors elle tend vers l'infini. Si l'on n'atteint pas 2 au bout d'un grand nombre d'itérations (« grand » peut aller de 100 à 1000, en fonction de l'échelle de représentation), on considère que le nombre appartient à l'ensemble de Mandelbrot (ou de Julia). Ainsi, les limites entre différentes couleurs correspondent à des « courbes de niveau ». Pour les ensembles de Julia, ces courbes vont même jusqu'à correspondre exactement aux lignes équipotentielles qu'on obtiendrait si l'ensemble était chargé électriquement, ce qui est extraordinaire si l'on sait que ces lignes sont presque impossibles à calculer pour les formes géométriques simples.

Contrairement aux ensembles de Julia, l'ensemble de Mandelbrot n'est pas autosimilaire. On y observe même une diversité et une prolifération de formes qui nous font penser à ce qu'on verrait si l'on faisait une coupe du globe terrestre : une augmentation progressive de la richesse, de la turbulence, de la vie au fur et à mesure que l'on s'approche de la surface. La surface même de l'ensemble de Mandelbrot est inaccessible et nous sommes condamnés à n'en voir que des courbes de niveau qui l'entourent.

Le mode d'emploi

Le programme (listing) permet de s'enfoncer dans l'infiniment petit, en agrandissant la parcelle de votre choix dans une image précédemment créée et sauvegardée sur disquette. Il y a peu de choses à dire sur le mode d'emploi, tout étant expliqué au fur et à mesure. Voici tout de même ses fonctionnalités principales :

  • Pour faire une image de l'ensemble de Mandelbrot : il faut entrer le centre de la zone du plan à explorer, sa largeur, sa hauteur, le nombre de points que vous voulez verticalement et horizontalement (en proportion avec la largeur et la hauteur naturellement), plus certains paramètres définissant le coloriage, c'est-à-dire « l'altitude » des courbes de niveau. La définition maximum de l'Amstrad 6128 est 320 x 200 en mode 1, et 160 x 100 en mode 0. Le mode 0 est conseillé aux possesseurs de moniteurs couleur qui sont pressés, et le mode 1 à ceux qui ont un moniteur monochrome et qui sont perfectionnistes ! Les autres font ce qu'ils veulent. Si vous avez déjà fait une image, alors le curseur graphique vous permettra d'en agrandir la parcelle que vous voulez, sans risque de vous tromper !
  • Pour faire une image d'un ensemble de Julia : la différence avec l'ensemble de Mandelbrot est qu'il faut entrer, en plus du reste, les parties imaginaire et réelle de la constante correspondant à cet ensemble. Vous pouvez soit les entrer au clavier, soit choisir le paramètre quelque part dans l'ensemble de Mandelbrot ou aux alentours, en vous servant du curseur graphique sur une image déjà créée de l'ensemble de Mandelbrot. Cette option est très intéressante car le point que vous choisirez sera le point commun aux plans de coupe de l'ensemble de Mandelbrot et de l'ensemble de Julia que vous obtiendrez (ne vous inquiétez pas si deux plans n'ont qu'un seul point en commun, nous sommes dans un espace à quatre dimensions.) Ce point sera exactement le point O du plan de coupe, qui est aussi le centre des ensembles de Julia. Avec cette option, c'est le centre du curseur qui seul compte. Vous pouvez aussi agrandir une partie d'une image déjà créée, mais c'est beaucoup moins intéressant qu'avec l'ensemble de Mandelbrot, car on retrouve toujours les mêmes formes.
Avant de lancer le programme, pensez que le temps de calcul sera proportionnel au produit des nombres de points horizontaux et verticaux, c'est pourquoi il vaut mieux faire ça le soir avant de vous coucher pour laisser le programme tourner toute la nuit. Si vous devez interrompre le calcul d'une image, elle sera sauvée en appuyant sur ESC (il faut donc retirer la disquette si vous voulez seulement interrompre le programme).

L. Fournier.

Les nombres complexes

x2 = -1 ? Impossible, un carré n'est jamais négatif ! Mais si, puisqu'on peut l'écrire, répondent Coudan, Bombelli et Tartagtia, les algébristes italiens de la Renaissance. A partir du moment où l'on pose une équation, on accepte difficilement qu'elle n'ait pas de solutions. Alors on en invente des « imaginaires », faute de « réelles ». Et l'on s'aperçoit que ces nombres n'ont d'imaginaire que le nom, alors tous les nombres, même 1 et - 2, sont imaginaires !

Appelions « i » la racine carrée de - 1. En la multipliant par un nombre réel, c'est-à-dire qui n'est pas complexe, on obtient la racine du réel négatif que l'on veut. Pour obtenir la solution de n'importe quelle équation du second degré (où l'inconnue est un carré), il suffit d'additionner à l'une de ces racines imaginaires un réel. Un nombre complexe est donc la somme de la racine d'un réel négatif, la « partie imaginaire », et d'un réel, la « partie réelle ». Ensuite, rien ne vous empêche d'additionner et de multiplier ces nombres, entre eux et avec des réels. Il n'y a que deux conditions à respecter : la partie imaginaire et la partie réelle ne peuvent pas se mélanger, et se souvenir que i2 = - 1 !

On note un complexe ainsi :

z = a + i * b (a et b étant réels). Si la partie imaginaire, b * i, est nulle, alors z = a, qui est un réel. Les réels ne sont donc que des nombres complexes particuliers. On situe ces derniers dans un plan à l'aide d'un repère cartésien : le point représentatif du nombre z a pour abscisse a, et pour ordonnée b.

Cette représentation nous permet de définir la « grandeur » d'un nombre complexe, ou son module : c'est la distance qui le sépare du point O. Voici les deux seules formules que nous utilisons dans le programme à propos des complexes :

- module de z

z = a + i * b

|z| = √a2 + b2 (par le théorème de Pythagore)

- mise au carré

z2 = (a + i * b) * (a + i * b)

z2 = a2 + 2ab * i + b * i2

z2 = (a2-b2) + i * (2ab)

car i2 = - 1

Pour la suite récurrente qui nous intéresse, nous avons plus précisément :

Zn = Zn-12 + C

an + i * bn = (an-i + i * bn-1)2 + ac + i * bc

an = (an-12 — bn-12) + ac

bn = (2 * an-1 * bn-1) + bc

Les deux composantes sont calculées séparément, sans faire apparaître le nombre i.

L.F. , MS

★ PUBLISHER: Micro-Systemes
★ ANNÉE: 1986
★ CONFIG: 64K + AMSDOS
★ LANGAGE:
★ LiCENCE: LISTING
★ AUTEUR: Laurent FOURNIER

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
  » Ensembles  de  Mandelbrot  et  de  Julia    (Micro  Systemes)    FRENCHDATE: 2025-01-02
DL: 292
TYPE: ZIP
SiZE: 10Ko
NOTE: 40 tracks/Extended DSK
.DSK: √

» Ensembles  de  Mandelbrot  et  de  Julia    (Micro  Systemes)    FRENCH    LISTINGDATE: 2025-01-02
DL: 8
TYPE: PDF
SiZE: 3282Ko
NOTE: 6 pages/PDFlib v1.6

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Machine code Mandelbrot
» Applications » Fractals on Amstrad (Popular Computing Weekly)
» Applications » Fractals Land (Happy Computer)
» Applications » Fractals (CPC Magazin)
» Applications » The Fractal Show/Mandelbrot
» Applications » Fractales (Tilt)
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.73-desktop/c
Page créée en 413 millisecondes et consultée 1531 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.