Extrait de l'article paru dans "POUR LA SCIENCE" N°143 Septembre 1989
Partie de pêche
A.DEWDNEY

" Je me considère parfois comme un pêcheur : les programmes informatiques et l'imagination constituent mes lignes, mes hameçons et mes cannes; les images sont mes trophées de pêche et des mets succulents. "
Clifford PICKOVER

L'auteur de la citation précédente, Clifford Pickover, est un des fleurons du Centre de recherches lBM de Yorktown Heights : il y effectue des études extrêmement sérieuses, mais a également créé une série de programmes récréatifs qui constituent son " attirail de pêche ". Ces programmes construisent des motifs chaotiques dont l'esthétique est surprenante. J'ai souvent voulu présenter les plus belles images de C.-Pickover ; je ne résiste plus, et vous propose une initiation à la pêche (...) : les biomorphes,(...).

Qu'est-ce qu'un biomorphe ?
Le terme est déjà apparu dans cette rubrique : en avril 1988, j'avais décrit les formes pseudo-biologiques créées par un programme de Richard Dawkins, biologiste à l'Université d'Oxford. Quand on exécute ce programme, on choisit un arbre initial, et l'ordinateur en propose une série de variantes ; on sélectionne une de ces variantes, et la procédure se répète ; les motifs qui apparaissent après plusieurs cycles sont étranges : ils ressemblent souvent à des êtres organisés.

C. Pickover a inventé ses biomorphes indépendamment de R. Dawkins, et cependant presque simultanément ; sa méthode conduit à des résultats très différents de ceux de R. Dawkins. Alors que les créatures de R. Dawkins ressemblent à des organismes varié: souvent macroscopiques (insectes, vertébrés, etc.), les biomorphes de C. Pickover ressemblent à des microbes. La revue Omni a comparé C. Pickover à Antonie van Leeuwenhoek; ce marchand de drap hollandais fut un pionnier de la microscopie, au XVll siècle.

Les biomorphes de C. Pickover vivent dans le plan complexe, c'est-à-dire dans le domaine où le mathématicien français Benoît Mandelbrot découvrit l'ensemble qui porte aujourd'hui son nom. Pour donner naissance à ces biomorphes, on utilise une version simplifiée de l'algorithme qui crée la délicate géométrie fractale des ensembles de Julia, proches cousins de l'ensemble de Mandelbrot, (voir l'article publié dans cette rubrique en janvier 1988). Le programme qui engendre les biomorphes répète une même séquence de calculs, le résultat obtenu après chaque séquence servant de donnée initiale à la séquence suivante.

En " itérant ", c'est-à-dire en répétant la fonction
zn+1<-   zn3 + C, ce programme fait notamment apparaître le radiolaire à 12 pointes, en bas à gauche, sur la figure 1.

Cette itération s'effectue très simplement : on choisit d'abord un nombre complexe z0 on l'élève au cube et l'on ajoute un nombre complexe c ; on obtient ainsi un nombre complexe z1, que l'on élève au cube et auquel on ajoute a nouveau la constante c afin d'obtenir un nombre z2. En répétant ces élévations au cube et l'addition de la constante c, on obtient successivement les nombres z3, z4...

Les nombres c complexes sont simplement formés de deux nombres ordinaires : l'un est la partie réelle et l'autre, la partie imaginaire. On peut considérer ces deux composantes comme les coordonnées cartésiennes d'un point d'un plan, appelé plan complexe. On représente généralement les nombres complexes comme des sommes de deux composantes : par exemple, le nombre complexe 3 + 5i a une partie réelle égale à 3 et une partie imaginaire égale à 5, le symbole i étant une sorte d'étiquette qui désigne la partie imaginaire. Dans la figure 5, j'ai résumé les règles principales de l'addition, de la multiplication et de l'élévation au cube des nombres complexes.

Pour construire un biomorphe, on considère d'abord un réseau de points dans un rectangle du plan complexe les coordonnées de chaque point du réseau constituent les partie réelles et imaginaires de diverses valeurs initiales z0. A chaque point du réseau, on associe d'autre part un pixel, ou élément d'image : selon la valeur des parties réelles ou imaginaires obtenues après les itérations de la fonction, on fait apparaître le point correspondant en noir ou en blanc sur l'écran de l'ordinateur.

Tous les biomorphes de la figure 1 sont nés dans un carré de 20 sur 20, centré à l'origine du plan complexe. En trouverez-vous d'autres aussi intéressants? Tentez votre chance avec le programme BIOMORPHE, qui exécute l'algorithme de C. Pickover. Voici la version qui pêche le radiolaire à 12 pointes:

c <-  0,5 + 0,0i
pour j <-  1 à 100
 pour k <-  1 à 100
  calculer z0
   z <-  z0
  pour n <-  1 à 10
   z <-  z3 + c
    si | re(z) | ou | ima(z) | ou |z| > 10
     alors sortir de la boucle
    si | re(z) | ou | im(z) | < 10
     alors afficher (i,k) en noir
     sinon afficher (i,k) en blanc

L'instruction " calculer z0 " s'effectue en plusieurs étapes. On transforme d'abord chaque couple de coordonnées (i,k) d'un pixel en un nombre complexe.
On divise respectivement la longueur et la largeur, dans la zone observée dans le plan complexe, par le nombre de valeurs prises par j et par k. Les quotients obtenus sont les pas dont on fait varier successivement la partie réelle et la partie imaginaire de zo.

Le radiolaire à 12 pointes apparaît dans le carré du plan complexe suivant

de -1,5 à 1,5 pour re(z0)
de -1,5 à 1,5 pour im(z0)

Comme on a choisi de faire varier j et k de 1 à 100, on considère les nombres z0 dont la partie réelle et la partie imaginaire varient par pas de 0,03. Le programme BIOMORPHE doit donc contenir des instructions du type

re(z0) <-  -1,5 + 0,03 j
im(z0) <-  -1,5 + 0,03 k

Autrement dit, pour les 10 000 valeurs successives de z0, on répète la fonction z3 + c et on teste à chaque fois son résultat.

Pendant les 10 itérations de la boucle interne, on examine le module de z (représenté par |z| ), ainsi que les valeurs absolues des parties réelle et imaginaire de z (|re (z)| et |im(z)|). Le module d'un nombre complexe est la racine carrée de la somme des carrés de ses deux composantes; la valeur absolue des composantes est leur valeur numérique, dépourvue de signe.

Quand le module de z ou la valeur absolue de l'une de ses composantes est supérieure à 10, le programme sort de la boucle, même si les 10 itérations ne sont pas accomplies, et l'on teste de nouveau les parties réelle et imaginaire (au lieu de comparer le module de z à 10, on compare la somme des carrés des deux composantes à 100 ; on évite ainsi un calcul de racine carrée, et le résultat est le même). Si l'une des composantes de la valeur finale de z est inférieure à 10, on fait apparaître en noir le pixel de coordonnées (j,k) ; sinon on le fait apparaître en blanc.

Sur la plupart des ordinateurs individuels, les points de coordonnées comprises entre 1 et 100 sont calés dans un des coins de l'écran graphique. Pour centrer l'image, on peut modifier l'intervalle de variation de j et de k en adoptant l'intervalle 50-150 au lieu de l'intervalle 0-100.

Je laisse les audacieux achever le programme BIOMORPHE, mais je rappelle que les nombre c, z, z0, z1,... sont tous des nombres complexes, qui doivent être additionnés ou multipliés selon des lois particulières (voir la figure 5). Pour cette raison, chaque opération portant sur ces nombres correspond à deux lignes d'instructions : l'une calcule la partie réelle, l'autre la partie imaginaire.

Comment obtient-on les autres biomorphes, représentés sur la figure 1 ? On remplace simplement la fonction itérative z3 + c par une autre fonction de nombres complexes.

Ceux qui écriront ce programme BIOMORPHE voudront sans doute " pêcher " d'autres individus de la faune qui occupent cette région centrale du plan complexe. La méthode la plus simple consiste à explorer la totalité de cette région, puis d'agrandir un détail d'une des créatures découvertes. Essayez par exemple de changer d'hameçon : toute petite valeur de la constante c peut convenir.

On peut également utiliser, dans la fonction génératrice de biomorphes, de curieuses fonctions de z, comme zz ou les fonctions trigonométriques de z. C. Pickover a aimablement accepté d'envoyer, à ceux qui en feront la demande, une courte notice sur ces fonctions; il y explique comment on étudie les diverses morphologies de la figure 1.

C. Pickover a découvert les biomorphes à la suite d'une erreur dans un programme vérifiant les propriétés fractales de diverses formules ; par mégarde il avait remplacé une fonction ET par une fonction OU dans une instruction qui testait la valeur des parties réelle et imaginaire de z. Cette erreur noircissait indûment de nombreux pixels : c'est ainsi qu'apparurent les " poils " des biomorphes, essentiellement formés par des pixels de ce type.

C. Pickover reconnaît aux biomorphes le droit à une existence autonome. D'une certaine façon, ces créatures mathématiques existent. Elles résident dans le plan complexe, mais ressemblent aux organismes microscopiques des eaux d'un étang. Dans quelle mer pourrions-nous découvrir des formes de vie plus évoluées ? C. Pickover nous fait remarquer avec intérêt que la complexité des organismes naturels et artificiels peut résulter d'une répétition de transformations simples.