MÉTHODES
NUMÉRIQUES | FRACTALES
| SYSTÈMES LOGIQUES |
CODES CORRECTEURS CRYPTOGRAPHIE
| AUTOMATES
| INFORMATIQUE
QUANTIQUE
Dernière mise à jour de ce chapitre:
2015-09-06 16:35:43 | {oUUID 1.790}
Version: 3.1 Révision 10 | Rédacteur: Vincent ISOZ |
Avancement:
~70%
vues
depuis
le 2012-01-01:
5'350
LISTE DES SUJETS TRAITÉS SUR CETTE PAGE
Les fractales
sont des figures invariantes par changement d'échelle
(nous parlons aussi de "structures
autosimilaires") et sont la représentation
graphique de suites récurrentes contractantes (pour les
fractales IFS que nous verrons plus loin) ou non divergentes
(pour les fractales à temps d'échappement que nous
verrons aussi plus loin).
L'idée de base - simple et géniale... à la fois
- consiste souvent à prendre
un point de départ, de construire son image via une fonction
mathématique
donnée, de prendre l'image de l'image et ainsi de suite.
Le but
étant d'étudier comment se répartissent
les points successifs dans l'ensemble global, s'ils s'approchent
d'une limite ou s'ils errent
entre diverses valeurs que nous pouvons expliciter, s'il y a
plus de points dans telle partie de l'ensemble que dans
telle
autre?
L'intérêt de ce type de questions concerne
aussi bien l'étude de l'évolution de populations
biologiques que celle de l'avenir du système solaire,
la 3D en informatique (l'origine étant la génération
de montagnes pour des paysages 3D), les variations des cours
de la bourse ou la génération
de nombres aléatoires
dans des domaines particuliers ou encore le domaine du diagnostic
médical.

Figure: 58.1 - Génération de pseudo-reliefs à partir
d'une fractale aléatoire (probabiliste)
Pour le commun des mortels, les fractales
servent à faire
joli. Mais elles ont des applications infiniment plus sérieuses:
nous avons vu par exemple sur le présent
site web que certaines de ces "séduisantes"
images reproduisaient des phénomènes physiques (dynamique
des populations pour la fractale de Feigenbaum, turbulences dans
un fluide pour
l'attracteur
de Lorentz, dispositions des galaxies, L-Fractales, amas et superamas
de galaxies,...). Les fractales ont également trouvé des
applications en musique (avec des logiciels générant
de la musique fractale) et dans le cinéma (3D). Enfin,
dans le domaine de l'infographie, les fractales permettent
de compresser très efficacement les images, avec une qualité constante
quel que soit le zoom, elles permettent de créer des textures
réalistes,
et peuvent permettre de tramer une image avec de bons résultats.
Les fractales sont aussi utilisées pour réduire
la taille des antennes de réception et élargir
leur spectre de fréquence utile (nos téléphones
portables du début du 21ème siècle ont des
récepteurs fractals de type "tapis de Sierpinski" -
voir plus loin - à cause
de tous les types de fréquences qu'ils doivent pouvoir
gérer!).
Dans le
génie
civil les fractales sont utilisées
pour la construction de certains murs absorbeurs de son. Et bien
d'autres choses encore...
Cette
géométrie fractale se différencie de la géométrie
euclidienne par sa définition d'une part: les figures
de la géométrie euclidienne
sont en général déterminées par des
relations algébriques, alors
que les courbes fractales sont définies de façon
récursive
comme nous l'avons déjà mentionné. Les fractales
ont aussi des dimensions fractionnaires (nous avons déjà traité
ce sujet dans le chapitre de Géométrie
Euclidienne lors de la définition du concept de dimension).
D'autre part, il ne faut pas non plus négliger leur aspect
autosemblable: chaque partie d'une fractale peut être observée à n'importe
quelle
échelle: chaque partie est (sensiblement) une copie de
l'ensemble.
Remarque: Les développements qui vont suivre auraient
très
bien pu être mis dans le chapitre de Suites Et Séries
ou encore d'Analyse Fonctionnelle ou encore
vus comme un cas particulier du chapitre de Topologie réduit à l'espace
euclidien (raison pour laquelle vous y trouverez par
ailleurs
de nombreuses références). Notre choix se veut pédagogique
au même titre que pour le chapitre de Cryptographie, dans
le sens qu'il est beaucoup plus intéressant pour un étudiant
d'une petite classe de voir une application des concepts abstraits
de la topologie dans un cadre pratique (et par ailleurs esthétique)
où ils sont absolument nécessaires à la bonne
compréhension du sujet plutôt que dans un cadre
où
l'on peut très bien s'y soustraire sans avoir à trop
en souffrir. Le lecteur retrouvera ici certains développements
et théorèmes proposés ailleurs sur le site
ceci dans le but de lui éviter d'avoir trop à
"tourner les pages".
Les objets fractals naturels sont dits "objets
non déterministes", car le processus dynamique
qui permet leur création varie lui-même avec le
temps de façon aléatoire (voir le chapitre de Dynamique
Des Populations pour un excellent exemple). Nous pouvons néanmoins
essayer de modéliser des systèmes dynamiques permettant
d'aboutir à des objets fractals, sous une forme mathématique
rigoureuse (c'est encore un bon exemple de la façon avec
laquelle les mathématiciens arrivent à rendre un
concept concret simple et intuitif en un modèle mathématique
abstrait et un peu confus).
Dans le cadre de ce chapitre, nous envisagerons l'étude de deux
familles de fractales qui seront dans l'ordre:
- Les fractales déterministes basées sur
des fonctions itérées qui sont strictement autosimilaires.
Elles sont générées, comme nous le verrons,
par l'application récursive
de fonctions contractantes sur des sous-ensembles d'un espace métrique.
Le théorème du point fixe assurera (comme nous le
verrons aussi!) l'existence et l'unicité d'un "sous-ensemble
fixe" de l'espace métrique, vers lequel tout sous-ensemble
converge.
- Les fractales à temps d'échappement (dites aussi
fractales par récurrence) qui sont non strictement autosimilaires:
Elles sont générées comme nous le verrons
par des suites récurrentes
non divergentes. Le théorème du point fixe servant
de garantie pour la non-divergence de la fonction relativement
aux points de
départ choisis.
FRACTALES IFS
Commençons par étudier la première famille
de fractales découverte par Michael Barnsley
en 1987: les "systèmes de fonctions
itérées
déterministes"
ou souvent appelées en anglais "deteministic iterated
function systems" (IFS).
De toutes les figures fractales, seules celles construites au
moyen de systèmes de fonctions itérées affichent
habituellement la propriété d'autosimilitude, signifiant
que leur complexité est invariante par changement d'échelle.
Commençons par "borner" la chose... :
Nous nous donnons un objet
géométrique initial
de l'espace E, une fonction f de E dans E
telle que:
(58.1)
(ce qui impose que l'objet initial ne pourra pas sortir de son
propre domaine de définition via l'itération à travers la fonction
f) et nous créons
le système
dynamique discret défini
par:
(58.2)
Sous certaines conditions
que nous allons de suite voir, la suite d'objets géométriques
"tend"
vers une limite, qui est souvent un objet fractal (nous en verrons
par ailleurs quelques exemples).
Naturellement, il existe
un cadre mathématique rigoureux dans lequel les conditions
évoquées et le verbe "tendre" ont une définition
précise. En particulier, les objets sont
tous des compacts de E, c'est-à-dire des sous-ensembles
bornés (que nous pouvons inclure dans un segment si
E est une droite, un disque si E est un plan
ou une boule si E est l'espace à trois dimensions)
et fermés (toute suite convergente de
a sa limite dans E). Nous nous plaçons alors dans
l'espace métrique des compacts, muni de la distance de
Hausdorff (voir plus loin la définition), dont nous allons
montrer qu'il est complet lorsqu'il s'agit de compacts
du plan et de l'espace, et nous vérifierons que f est
un "opérateur de Hutchinson",
c'est à dire
une application contractante de l'espace des compacts dans lui-même
pour cette distance. Il ne restera alors plus qu'à appliquer
le théorème
du point fixe.
Des systèmes dynamiques
de ce type sont dits déterministes, et donc appelés
IFS (deteministic iterated function systems). Précisons
que la limite de l'IFS s'appelle "l'attracteur
de l'IFS".
Nous pouvons montrer que sous les conditions évoquées
plus haut, cet attracteur ne dépend pas de la forme de
l'objet géométrique initial (nous verrons des exemples
pratiques plus bas).
Dans un premier temps, nous
limiterons notre étude à
(le cas général étant donné dans le
chapitre de Topologie du site) sachant de toute façon qu'une
généralisation à l'espace euclidien de dimension
deux ne nécessite pas un travail intellectuel trop grand
et que l'ensemble des complexes y est isomorphe.
Définition: Pour nous permettre
de définir les frontières de nos fonctions fractales
considérons .
Nous disons que
est le "supremum" de X et
nous notons:
(58.3)
si
est le plus petit des "majorants"
de X (un majorant
de X
est un nombre a qui vérifie ).
De la même façon, nous disons que est "l'infimum" de X et
nous notons:
(58.4)
si
est le plus grand des "minorants" de X (un
minorant de X
est un nombre a qui vérifie ).
Il existe des sous-ensembles de
qui n'ont pas de supremum (respectivement d'infimum) par exemple
( respectivement ).
Remarque: Nous utilisons souvent la caractérisation
suivante du sup:
(58.5)
si
et seulement si:
(58.6)
ce
qui est évident car nous pouvons nous approcher aussi
près que l'on veut de par
des éléments de X (penser à petit).
Pour information, nous avons alors aussi dans la même idée:
(58.7)
si
et seulement si:
(58.8)
Nous considérerons comme intuitif que si
est majoré, c'est-à-dire s'il existe
tel que
(respectivement minoré), alors X possède un
supremum (respectivement un infimum).
Nous verrons plus tard que c'est cette propriété qui
permettra de montrer que est
un "espace métrique complet"!
Remarque: En passant, soulignons l'importance de prendre
 comme
espace métrique de définition pour que cette propriété soit satisfaite.
Nous pouvons effectivement remarquer qu'elle n'est pas vérifiée dans
l'ensemble 
des nombres rationnels avec l'exemple simple suivant:
(58.9)
qui est
majoré mais n'a pas de supremum dans car
ce supremum se situe dans puisque:
(58.10)
donc:
(58.11)
C'est
ce qui fait que n'est
pas "complet".
Définition: Nous disons que
est "borné" si X est majoré et minoré.
De la définition suit
immédiatement que X est borné si et seulement
s'il existe
avec
tels que .
Maintenant que le concept de borne est relativement bien défini,
voyons comment une suite peut s'y comporter:
Définition: Nous disons qu'une
suite de
est une "suite croissante" (respectivement "décroissante")
si:
(58.12)
respectivement:
)
(58.13) Nous
disons que la suite est
"monotone" si elle est
croissante ou décroissante comme nous l'avons déjà vu dans
le chapitre de Suites Et Séries.
Définition: Soit
un sous-ensemble infini de
avec
. Nous disons que la suite
est une "sous-suite" de la suite .
Montrons maintenant que toute
suite
de
admet une sous-suite monotone (c'est un peu l'idée de fractale!).
Démonstration:
Nous disons que
est un "pic de la suite" si:
(58.14)
Considérons
l'ensemble P des pics de la suite .
- Si P est infini alors la sous-suite est
monotone car décroissante.
- Si P est fini ou vide
alors soit:
(58.15)
(si nous
choisissons quelconque). n'est
donc par construction pas un pic, donc il existe tel
que . À son
tour n'est
pas un pic, donc il existe tel
que etc.
Nous voyons que nous définissons ainsi une sous-suite
croissante.
C.Q.F.D.
Définition:
Nous disons que la suite
"converge" vers
et nous notons
si:
(58.16)
Nous disons dans ce cas que a est la "limite
de la suite" .
Dans l'exemple de la figure ci-dessous où la suite semble
converger vers 1.13 nous observons que pour un positif
non nul particulier donné, il existe un n particulier
que nous noterons N (valant 17) à partir duquel
la suite converge.

Figure: 58.2 - Illustration du principe de convergence d'une suite
S'il n'existe pas de a (respectivement de N) pour
lequel la relation précédente
est vraie, nous disons que la suite "diverge".
Démontrons maintenant que
toute suite croissante
(resp. décroissante) et majorée (resp. minorée)
converge.
En d'autres termes, nous cherchons à démontrer que toute suite monotone
et bornée converge
(forcément... par construction).
Remarque: Si elle ne convergeait pas, nous pourrions difficilement
savoir quel est son minorant et son majorant... d'où le
fait que la nécessité du théorème
devient triviale.
Démonstration:
Ce théorème
est au fait assez intuitif. Considérons pour cela une suite croissante.
Nous nous doutons que:
(58.17)
est
la limite de cette suite. Remarquons tout d'abord que existe
car est...
majorée
(cf. premier théorème).
Soit .
Il existe un
tel que .
Mais dans ce cas vu que la suite est croissante , nous avons .
C'est-à-dire .
Dans le cas où la suite est décroissante en procédant
de la même façon, nous montrons que
est la limite de cette suite.
C.Q.F.D.
Et voici maintenant le résultat important à retenir
suite à tout
cela: Toute suite bornée de nombres réels
possède une sous-suite convergente (c'est intuitif... mais
encore une fois... formalisé cela devient parfois moins
intuitif...).
C'est ce que les mathématiciens appellent le "théorème
de Bolzano-Weierstrass" et il est extrêmement important
dans de nombreux domaines des mathématiques:
Démonstration:
Soit une
telle suite. Par une proposition précédente nous
savons qu'il existe une sous-suite monotone que nous noterons .
est
donc une suite monotone et bornée et par le théorème
précédent,
converge.
Donc, si nous n'arrivons pas à déterminer si la
sous-suite converge ni sa limite exacte (ce qui dans la pratique
est souvent
très difficile), il nous suffit de savoir que la sous-suite
est monotone et bornée pour nous assurer qu'elle converge (ce qui
est beaucoup plus simple).
C.Q.F.D.
Rappelons que nous avons vu dans
le chapitre de Suites Et Séries qu'une suite de Cauchy,
est une suite
qui vérifie (nous nous restreignons à un rappel particulier
sur une distance euclidienne):
(58.18)
La différence entre deux termes d'une suite de Cauchy peut
être rendue arbitrairement petite pourvu que les indices de
ces termes soient assez grands.
Nous avions aussi démontré (à nouveau dans
le chapitre de Suites Et Séries) que dans le cas d'une
distance dans le sens topologique général toute
suite convergente est une suite de Cauchy (par contre la réciproque
est pas toujours vraie à condition qu'on ne complète
pas l'ensemble... sinon la réciproque est toujours vraie).
Par exemple, une suite de nombres rationnels qui converge vers
un réel n'est pas une suite
de Cauchy, excepté si on complète l'espace des rationnels
pour avoir l'espace des réels.
Refaisons la démonstration restreinte à la distance
euclidienne (la méthode est exactement la même comme
le lecteur pourra le remarquer):
Démonstration:
Soit ,
nous devons montrer qu'il existe:
(58.19)
Mais
tend vers a donc il existe
tel que .
Pour
nous avons donc:
(58.20)
C.Q.F.D.
Montrons maintenant que toute
suite de Cauchy est bornée (nous n'en avions pas parlé
jusque-là où que ce soit sur le site d'où la
nécessité d'une démonstration). Puisqu'actuellement
nous avons juste démontré que toute sous-suite convergente
est une suite de Cauchy...
Démonstration:
Si
est une suite de Cauchy alors en particulier pour
(choisi au hasard) nous savons qu'il existe
tel que .
Donc si nous fixons m, nous obtenons:
(58.21)
C.Q.F.D.
Voici à présent
le théorème fondamental (c'est à ce niveau
qu'il y a un impact énorme sur la compréhension
de ce qu'est réellement une fractale!) découlant
des quelques lignes précédentes.
Nous devons démontrer que toute suite de Cauchy de nombres
réels
est convergente (par construction...). Nous disons alors que l'espace
métrique
muni de la distance euclidienne
(valeur absolue) est un "espace complet".
Remarques:
R1. La propriété de
complétude est liée à la métrique
(donc ce théorème aurait tout aussi bien sa place
dans le chapitre de Topologie!): un même espace peut être
complet pour une distance et incomplet pour une autre. Il est
donc
important
de toujours
préciser
la distance que l'on prend quand on parle d'espace complet.
R2. Intuitivement, un espace est complet s'il n'a pas de trous.
L'ensemble des rationnels n'est par exemple complet
que si on lui ajoute les nombres réels.
Considérons d'abord
une suite de Cauchy. Nous avons vu que
est bornée donc par le théorème de Bolzano-Weierstrass,
il existe une sous-suite
convergente. Notons a la limite de la sous-suite .
Nous allons montrer maintenant que la suite
est convergente de limite a.
Démonstration:
Soit ,
il existe
tel que (application de la définition de la convergence pour une
sous-suite):
(58.22)
Pour
ce même il
existe tel
que (application de la définition de la convergence pour
une suite de Cauchy):
(58.23)
Soit .
Choisissons .
Nous avons donc, et
pour , .
Donc par l'inégalité triangulaire (cf.
chapitre de Calcul Vectoriel), pour tout :
(58.24)
Ce qui veut justement dire que
converge vers a.
C.Q.F.D.
Fondamentalement c'est un résultat intuitif
mais
à l'époque où les nombres réels n'étaient
pas connus ou pas rigoureusement définis c'était
une autre paire de manches. En réalité, il suffit
de compléter tout ensemble par les nombres réels
pour avoir un espace complet. Par ailleurs, certains mathématiciens
définissent
l'ensemble des réels en disant que c'est l'ensemble
pour lequel toute suite de Cauchy converge.
Définition (intuitive): Un "point
adhérent" est un
point dont nous pouvons nous approcher autant que nous
voulons à l'aide d'éléments
d'un ensemble X donné (nous nous en approcherons
par exemple avec une suite). Cependant, ce point adhérent
peut aussi bien être à l'intérieur qu'à l'extérieur
de X (tous les points à l'intérieur de X
sont bien évidemment des points adhérents). Une
bonne image est de voir une suite qui se rapproche de ce point
adhérent
et de définir des cercles autour de celui-ci qui deviennent
de plus en plus petits contenant des éléments
de la suite.
On peut imaginer comme exemple une suite
définie par l'ensemble X des rationnels qui
tend vers un irrationnel ou vers un nombre transcendant (ces
deux points
adhérents étant à l'extérieur
de l'ensemble des rationnels). Donc dans ce cas, le point adhérent
est extérieur
à X (l'ensemble des rationnels). Par contre,
tout point adhérent qui serait rationnel pour une suite
de rationnels sera forcément... dans X.
Dès lors, vient la définition suivante:
Définition (formelle): Soit .
Nous disons que
est un "point adhérent" à X si
pour toute boule
B(x,r) de rayon r centrée
en x nous avons:
(58.25)
L'ensemble des points adhérents
à X est "l'adhérence" de X et
est noté
.
Nous avons évidemment (il suffit de se le conceptualiser
de manière abstraite pour toutes les boules possibles) .
Sans oublier qu'il faut penser en termes d'ensemble de nombres
pour X...!
Exemple:
Prenons l'intervalle ]0,1]
avec la boule B(0,1). L'intersection entre la boule et
l'intervalle est non nulle, nous pouvons alors dire que 0 est adhérent!
Mais maintenant prenons une suite 1/n par
exemple, dans l'intervalle ]0,1]. Cette suite tend vers zéro
mais pourtant 0 n'appartient pas l'intervalle. C'est donc bien
un exemple qui montre que .
Nous pouvons faire
dès lors la proposition suivante:
Montrons maintenant que
est adhérent à X si et seulement si il existe
une suite
dans X qui converge vers x (attention, l'exemple
précédent
nous montre que x n'est pas nécessairement
dans X).
Au fait, nous allons plutôt démontrer
(si l'on peut appeler cela une démonstration...) que si
nous choisissons un point adhérent x alors nous
pouvons toujours trouver une suite dans X qui
converge vers x.
Démonstration:
Si est
adhérent à X alors considérons
la suite des boules concentriques
avec
tel que:
(58.26)
et
alors il existe toujours des éléments qui satisfont:
(58.27)
avec lesquels nous pouvons
créer une suite par l'infinité des suites existantes.
C.Q.F.D.
Définition: Nous disons que
est un "espace fermé" si .
Des propositions précédentes
découle le fait que dans tout fermé F, une
suite qui
converge a sa limite dans F.
Nous considérerons
comme trivial que si
est une famille de fermés indexée sur un ensemble I
quelconque. Alors
est fermé.
Définition:
est un "espace compact" si X est fermé et borné.
Le théorème suivant
donne une caractérisation des compacts à partir des
suites:
est
compact si et seulement si toute suite de X possède une sous-suite qui converge dans X.
Démonstration:
Montrons que X est fermé:
Si X est compact
et est
une suite de X alors par le théorème de
Bolzano-Weierstrass, possède
une sous-suite convergente de limite .
Mais puisque X est fermé, nous avons .
Réciproquement, supposons que toute suite de X possède
une sous-suite qui converge dans X.
Alors X est fermé car si il
existe une suite de X qui
tend vers x. Par hypothèse, possède
une sous-suite qui converge vers . étant
convergente toute les sous-suites convergent vers la même
valeur, donc (c'est
pas beau ça ?!!). Ainsi c'est-à-dire X est
fermé.
Montrons que X est borné:
Supposons
le contraire. Il existe donc une suite de X telle
que .
Mais dans ce cas, aucune sous-suite de n'est
convergente, ce qui est une contradiction. Donc X est
borné. En conclusion, X est compact.
Une propriété des compacts est que si nous considérons une
suite décroissante de compacts non vides, c'est-à-dire ,
alors est
un compact non vide. Nous nous passerons de la démonstration
qui est relativement triviale de par la définition du concept
d'ensemble d'adhérence qui oblige qu'un compact soit par
construction non vide... !
Exemple:
Nous obtenons l'ensemble
C de Cantor de la manière suivante:
Nous commençons
par considérer l'intervalle fermé borné de qui
est donc un espace compact (ensemble borné et fermé). Nous partageons en
trois parties égales et nous enlevons l'intervalle du
milieu. Nous obtenons ainsi l'ensemble:
(58.28)
qui peut être considéré aussi comme l'application d'une homothétie
de facteur contractant 1/3 sur l'intervalle fermé borné de départ
dont on translate le centre d'homothétie.
Nous
recommençons avec les deux intervalles pour
obtenir:
(58.29)
réunion
disjointe de quatre intervalles. Et ainsi de suite. Nous obtenons
donc une suite décroissante de
compacts. Nous définissons:
(58.30)
Grâce à la proposition
précédente, nous savons que C est non vide
et qu'il est compact ce qui montre que les compacts ne sont pas
tous "triviaux" comme des intervalles. L'ensemble de Cantor (car
il avait joué avec en faisant le dessin comme ci-dessous en partant
du bas) est un exemple de fractale (de compact):

Figure: 58.3 - Ensemble de Cantor avec Maple 4.00b
qu'il est possible d'obtenir avec le code Maple 4.00b suivant (si le
copier/coller de la page web dans Maple 4.00b ne marche pas,
réécrivez
simplement le code):
>with(plots):
line := proc(a:: list, b:: list)
local plotoptionen, n;
if nargs > 2 then
plotoptionen := seq(args[n], n=3 .. nargs)
else
plotoptionen := NULL
fi;
plot([a, b], style=line, plotoptionen);
end:
cree_segment := (a,b,h) -> line([a,h],[b,h],color=black):
f1:=x->x/3: f2:=x->(x+2)/3:
f := s -> s union map(f1, s) union map(f2, s):
sequence_de_segments := proc(l,h)
local accu, i;
accu := NULL;
for i to nops(l) by 2 do
accu := accu,cree_segment(l[i], l[i+1], h) od;
accu
end:
Cantor := proc(n) local s, i;
option remember;
s := sequence_de_segments([0,1], 1);
for i from 1 to n do
s := sequence_de_segments(sort([op((f@@i)({0,1}))]), (1-i/n)), s;
od;
display({s}union{seq(textplot([[0,(i+1/2)/n, '0'], [1, (i+1/2)/n, '1']]
), i=0 .. n)}, color=blue,axes=NONE,thickness=7)
end:
>Cantor(7);
Il est très intéressant de remarquer que l'on converge
vers la fractale de Cantor (en termes de géométrie
mais aussi de valeurs!) quel que soit le compact de départ
choisi (l'intervalle fermé
borné) et aussi... quel que soit le facteur contractant
choisi!
Mandelbrot observa aussi ce type de structure autosimilaire lors
de l'analyse de signaux transmis électriquement à l'époque
par IBM sur des câbles de cuivre (IBM avait des problèmes
de perte d'informations par transmission).
Regardons pour finir comment
se comportent les compacts vis-à-vis des applications continues
(nous en avons besoin pour montrer comment déterminer la
distance d'un point à un ensemble ce qui nous sera indispensable
après pour déterminer les propriétés
de la distance de Hausdorff).
Nous rappelons (cf. chapitre
d'Analyse Fonctionnelle) qu'une application
où
est quelconque, est continue en un point si:
(58.31)
Ce qui traduit le fait que pour y assez proche de x, f(y) est arbitrairement proche de f(x).
Nous disons aussi que f est continue sur X si elle
est continue en tout point de X.
Proposition: Soit
une application continue en
et
une suite de X avec:
(58.32)
Alors la suite
converge et (cette proposition est très importante!):
(58.33)
En d'autres termes, si nous utilisons en tant qu'ensemble
de départ les valeurs d'une suite convergente, alors la
fonction qui prendra en entrée les valeurs de cette suite
convergera elle aussi!
Démonstration:
Soit .
f est continue en x, donc il existe
tel que:
(58.34)
tend
vers x donc il existe tel
que:
(58.35)
Par suite pour ,
nous avons:
(58.36)
C.Q.F.D.
Si nous considérons maintenant
un compact et
une application continue. f(X) est compact. En
particulier sup( f ) et inf( f ) seront
atteints par définition et construction d'un compact (ensemble
borné et fermé) qui est égal à son
adhérence.
Autrement dit, une fonction à valeurs réelles continue
sur un compact y atteint toujours son supremum ou son infimum.
Démonstration:
- Montrons que f(X) est fermé:
En effet, soit une
suite qui tend vers (nous
prenons l'adhérence au fait pour espérer montrer
qu'elle est égale à l'ensemble lui-même) alors
X étant compact, possède
une sous-suite convergente.
Posons:
(58.37)
f est
continue, donc:
(58.38)
Mais
comme:
(58.39)
nous
avons .
Ceci prouve que:
(58.40)
et donc que f(X) est fermé.
- Montrons que f(X) est borné: Supposons
le contraire. Il existe donc une suite telle
que:
(58.41)
pour
tout n entier naturel (puisque justement il est supposé
non borné). Soit une
sous-suite convergente de avec:
(58.42)
Alors:
(58.43)
et
par suite:
(58.44)
mais
ceci est en contradiction avec:
(58.45)
Donc f(X) est borné. Donc f(X)
étant fermé et borné il est compact.
C.Q.F.D.
Appliquons maintenant cela
(car c'est ce qui nous intéresse dans le cadre des espaces
fractals) au calcul de la distance d'un point à un ensemble:
Soit ,
l'application définie
par f(y)=d(x,
y) est continue.
Démonstration:
Pour tout ,
l'inégalité triangulaire nous donne:
(58.46)
En changeant les rôles
de y, z nous obtenons:
(58.47)
et
donc:
(58.48)
Ainsi
pour donné implique:
(58.49)
c'est-à-dire:
(58.50)
et f est donc continue en y.
C.Q.F.D.
Définition: Pour
et
nous définissons la distance de x à A
comme étant la valeur:
(58.51)
Si
alors
(trivial). La réciproque n'est pas vraie. En effet dans le
cas
nous avons bien
mais .
Nous avons donc la proposition (importante!):
(58.52)
Démonstration:
entraîne l'existence d'une suite d'éléments de A telle
que:
(58.53)
ce
qui veut dire:
(58.54)
donc (voir
développements plus hauts).
Réciproquement, si
alors pour tout
il existe
tel que .
Mais .
Ainsi pour tout ,
.
C'est-à-dire:
(58.55)
C.Q.F.D.
En général la distance de x à A
n'est pas atteinte. C'est-à-dire qu'il n'existe pas de
tel que
il suffit pour cela de considérer l'exemple
nous avons
mais pour tout ,
.
Si A est compact, la situation est bien évidemment
différente selon la proposition (la plus importante pour
la distance de Hausdorff) suivante:
Si
est compact, il existe
tel que .
Ainsi:
(58.56)
Démonstration:
L'application définie
par est
continue comme déjà montré. Par conséquent
f(A)
est compact (cf. une proposition précédente).
Ainsi, f atteint ses bornes, c'est-à-dire, il existe
tel que f(a)=inf( f(A) ). Donc:
(58.57)
C.Q.F.D.
Remarque: La proposition précédente ne dit pas
que a est unique, d'ailleurs en général, il
en existe plusieurs.
ESPACE
MÉTRIQUE DES FRACTALES
Les fractales sont souvent
perçues par les gens comme de jolis dessins sur une feuille,
mais lorsque nous voulons regarder en détail la géométrie
fractale, nous avons besoin d'un espace particulier où l'étudier,
un peu comme le biologiste qui met des petits vers sur une plaquette
pour les observer en détail au microscope. Nous allons faire
de même pour nos fractales en les plaçant dans un
endroit qu'ils apprécient.
Cet endroit a de fortes chances
d'être un sous-espace de
ou ,
puisqu'en fin de compte il s'agira de produire des dessins, et
pour
illustrer nos propos nous nous placerons souvent dans le cas
(avec la métrique euclidienne) et sauf mention du contraire,
nous considérerons toujours le cas où
est un espace métrique complet.
Rassemblons différents
éléments afin de pouvoir construire cet espace:
Définition: Nous définissons
comme l'espace dont les points sont les sous-ensembles compacts
de X, autres que l'ensemble. Désormais nous appellerons
"fractale" n'importe quel élément
de .
Exemple:
Il est immédiat que
si ,
alors ,
mais
n'est pas forcément dans .
Il suffit de voir la figure avec les deux ensembles compacts (fermés,
bornés donc) ci-dessous de .
Ce sont donc deux points de .
Leur réunion est encore un ensemble compact, et donc:
(58.58)
Par
contre, si les ensembles sont disjoints (comme ici), et
par conséquent n'est pas un point de (voir
la théorie précédente). 
Figure: 58.4 - Source: IFS et L-Système, V. Rezzonico, C. Hebeisen
Un autre exemple consiste à prendre la fractale de Cantor...
Définition: Soit
et ,
nous définissons la distance d'un point x à l'ensemble B, et nous la notons d(x,B)
comme étant:
(58.59)
Remarques:
R1. Cette définition
est tout à fait générale et s'applique à
n'importe quel sous-ensemble non vide de X, en remplaçant
min par inf. Mais dans le cas particulier, nous sommes intéressés
à prendre précisément
comme sous-espace.
R2. Cette distance est bien
définie (elle existe) du fait que B est non vide
et compact.
R3. Il est trivial de voir que si cette distance est nulle, alors
.
Exemple:
Illustration dans le cas où :
Figure: 58.5 - Source: IFS et L-Système, V. Rezzonico, C. Hebeisen
Définition: Soient .
Nous définissons la distance de A à B
et nous la notons
comme étant:
(58.60)
Définition: Soient
.
Nous définissons la "distance de
Hausdorff" entre deux ensembles
,
et nous la notons ,
comme étant:
(58.61)
Cette fois-ci, de par cette
dernière définition, nous avons bien une métrique
sur .
En effet, vérifions que les 5 propriétés
d'une distance soient vérifiées (cf.
chapitre de Topologie):
Soient .
Clairement nous avons sans démonstration (symétrie,
nullité sur la diagonale et séparation):
(58.62)
De plus, comme A et
B sont compacts,
(cf. une des propositions précédentes) pour un certain
et un certain .
Or, puisque
par définition nous avons (propriété de positivité)
finalement
tel que :
(58.63)
puisque B est fermé.
Enfin, puisque
(cf. extension d'une des propositions précédentes),
l'inégalité triangulaire est alors forcément
respectée et alors:
(58.64)
Donc h est bien une
métrique sur ,
ce qui fait de
un espace métrique. C'est déjà un premier pas
dans la direction souhaitée: nous avons désormais
les moyens de comparer deux ensembles appartenant à
par la distance de Hausdorff qui les sépare. Si les deux
ne sont pas "trop différents", alors intuitivement cette
distance devrait être assez petite.
Si nous choisissons une fonction strictement
contractante de constante .
Alors, l'application:
(58.65)
définie par
(58.66)
est par construction aussi strictement contractante de constante .
Soit , des
applications strictement contractantes de constantes de contraction, .
Alors, il existe un unique compact tel
que:
(58.67)
(A est l'unique point fixe de )
et pour tout compact B, on a:
(58.68)
où est
le m-ième itéré de B par .
Ce résultat découle du théorème du
point fixe (cf.
chapitre Suites Et Séries) appliqué à l'espace qui
est complet.
Avec les mêmes notations, nous disons dit que est
un codage IFS (Iterated Function Systems) du compact A.
Ainsi les fonctions définissent
le compact A. Ce qui est surprenant, comme nous allons le
voir dans les quelques exemples qui suivent, c'est que les sont
généralement assez simples (comme des homothéties du plan) tandis
que le compact A est dans bien des cas relativement "compliqué".
Le cas est
sans intérêt, on aurait où x est
le point fixe de .
Avec nous
obtenons déjà des résultats non triviaux.
Remarque: Lorsque les fonctions itératives contractantes sont
toutes des homothéties, nous parlons alors de "fractale de
Sierpinski". Ainsi, la fractale de Cantor appartient à la
famille des fractales de Sierpinski.
Une méthode fréquemment utilisée pour générer
informatiquement des fractales IFS (comme ce sera le cas ci-dessous
avec Maple 4.00b)
est de considérer un point dans le plan auquel
nous pouvons sans autre forme de procès appliquer une transformation
affine pour obtenir un
nouveau point tel
que:
(58.69)
où a, b, c, d, e et f sont
des constantes quelconques, et est
donné.
Nous pouvons dès lors considérer une application W qui
décrit notre transformation, et sous forme matricielle nous pouvons écrire
le système précédent comme suit:
(58.70)
ou encore:
(58.71)
De façon tout à faire générale, le
vecteur décrit
simplement une translation, et la matrice A est la composition
de rotations et d'un changement d'échelle (cf.
chapitre
de Géométrie Euclidienne). Les programmes informatiques
(comme ce sera
le cas
dans les exemples plus bas), ne demandent donc souvent que les six paramètres a, b, c, d, e et f.
FRACTALE DE CANTOR
Revoyons la fractale de Cantor vue plus haut mais cette fois-ci
avec le point de vue de l'application de deux fonctions itératives
contractantes (donc
correspondant à k=2).
Nous partons donc de l'ensemble borné fermé suivant:
[[0,1]]
(58.72)
soit:

Figure: 58.6 - Ensemble de départ de la fractale de Cantor
Nous partageons donc en trois parties égales et nous enlevons
l'intervalle du milieu. Nous obtenons ainsi l'ensemble:
[[0,1/3],[2/3,1]]
(58.73)
Soit:

Figure: 58.7 - Première itération de la fractale de Cantor
Nous pouvons constater que [0,1/3] peut être obtenu par l'homothétie
de facteur 1/3 centrée en (0,0) suivante:
(58.74)
et que [2/3,1] peut être obtenu par l'homothétie de facteur 1/3
centrée en (1,0) suivante:
(58.75)
et ainsi de suite, nous obtenons comme nous le savons déjà (voir
code Maple 4.00b déjà donné plus haut):

Figure: 58.8 - Attracteur de Cantor après 6 itérations
Ce qui correspond en reprenant le formalisme vu plus haut à:
(58.76)
Mais voyons que cela marche avec n'importe quel compact de l'ensemble
des réels comme un carré par exemple avec le code
Maple 4.00b suivant (nous montrerons toujours tous les détails
de Maple 4.00b, car rien ne dit que les lecteurs le possèdent
ni que le logiciel existera toujours dans 50 ans...).
Attention!!! Si le
copier/coller de la page web dans Maple 4.00b ne marche pas,
réécrivez simplement le code.
>transforme_point := proc(t, p) [t[1]*p[1]+t[2]*p[2]+t[5],
t[3]*p[1]+t[4]*p[2]+t[6]] end:
>IFSS := proc(n, liste_de_transformations,col) local
i, j, k, s, seq_square: seq_square :=[[0,0],[1,0],[1,1],[0,1]]; for
j to n do s := NULL; for
i to nops(liste_de_transformations) do s
:= s, seq(transform_square(liste_de_transformations[i], op(k,
[seq_square])), k=1 ..
nops([seq_square])) od; seq_square
:= s
od; plots[polygonplot]([seq_square],
axes=none,
color=col, scaling=constrained)
end:
>cantor:=[[evalf(1/3),0,0,evalf(1/3),0,0],[evalf(1/3),0,0,evalf(1/3),evalf(2/3),0]]:
>IFSS(1, cantor,blue);

Figure: 58.9 - Première itération sur l'ensemble de Cantor avec des carrés
>IFSS(2, cantor,blue);

Figure: 58.10 - Deuxième itération sur l'ensemble de Cantor avec des carrés
>IFSS(3, cantor,blue);

Figure: 58.11 - Troisième itération sur l'ensemble de Cantor avec des carrés
etc.
Donc, quel que soit l'ensemble de départ, la suite de compacts
obtenue par application successive de ces deux homothéties
du plan converge toujours (au sens de la distance de Hausdorff)
vers le
même compact/attracteur (assimilé au point fixe du théorème
du point fixe...) appelée fractale de Cantor (appartenant
donc à la
famille des fractales de Serpienski). La dernière figure
ci-dessus est une bonne approximation de cet ensemble.
FRACTALE DU TRIANGLE (TAMIS) DE SIERPINSKI
Pour construire la fractale de Sierpinski (que l'on retrouve comme
curiosité sur le coquillage Cymbiola innexa REEVE), basée sur
trois fonctions itératives contractantes (donc
correspondant à k=3), nous partons par exemple des
trois points de suivants:
[[0, 0], [1, 0], [0.5, 1]]
(58.77)
Ce qui donne avec Maple 4.00b:
>plots[polygonplot]( [[0, 0], [1, 0], [0.5, 1]],axes=none,color=black,
scaling=constrained);

Figure: 58.12 - Ensemble de départ du triangle de Sierpinski
c'est un triangle, mais nous pourrions partir de n'importe quelle
forme et nous arriverions toujours au même résultat que nous allons
voir plus loin.
Nous appliquons sur chaque ensemble une fonction contractante
de facteur 0.5, ce qui donne le triangle:
[[0,0],[0.5,0],[0.25,0.5]]
(58.78)
et nous noterons cette homothétie de facteur 0.5 et de centre
(0,0) sur le triangle d'origine:
(58.79)
Nous effectuons maintenant sur ce triangle une translation de
0.5 dans la direction de l'axe des X, ce qui donne le triangle:
[[0.5,0], [1,0], [0.75,0.5]]
(58.80)
ce qui correspond à une homothétie de facteur 0.5 et de centre
(1,0) sur le triangle d'origine:
(58.81)
Nous translatons maintenant [[0,0],[0.5,0],[0.25,0.5]] de
0.25 selon l'axe de X et de 0.5 selon l'axe des Y pour
avoir:
[[0.25,0.5], [0.75,0.5], [0.5, 1]]
(58.82)
ce qui correspond à une homothétie de facteur 0.5
et de centre (0.5,0.75) sur le triangle d'origine:
(58.83)
Avec Maple 4.00b cela donne maintenant pour les trois triangles:
>plots[polygonplot]([[[0,0],[0.5,0],[0.25,0.5]],[[0.5,0],[1,0],[.75,0.5]],[[0.25,0.5],[0.75,0.5]
,[0.5,1]]], axes=none,color=black, scaling=constrained);

Figure: 58.13 - Première itération du triangle de Sierpinski
et ainsi de suite:

Figure: 58.14 - Deuxième itération du triangle de Sierpinski
et ainsi de suite:

Figure: 58.15 - Troisième itération du triangle de Sierpinski
et ainsi de suite:

Figure: 58.16 - Quatrième itération du triangle de Sierpinski
et ainsi de suite:

Figure: 58.17 - Cinquième itération du triangle de Sierpinski
etc.
Ce qui correspond en reprenant le formalisme vu plus haut:
(58.84)
Nous pouvons faire la même remarque que lorsque nous avions présenté la
fractale de Cantor la toute première fois: quel que soit
l'ensemble de départ, la suite de compacts obtenue par application
successive de ces trois homothéties converge toujours (au
sens de la distance de Hausdorff) vers le même compact/attracteur
(assimilé au point
fixe du théorème du point fixe...) appelé triangle
Serpienski. La dernière figure ci-dessus est une bonne approximation
de cet ensemble.
Voyons cela avec un code Maple 4.00b (si le
copier/coller de la page web dans Maple 4.00b ne marche pas,
réécrivez simplement le code).
> transforme_triangle := proc(t, triangle) local
i; [seq(transforme_point(t, triangle[i]),
i=1 .. 3)] end:
>IFS := proc(n, liste_de_transformations,col) local
i, j, k, s, sequence_de_triangles: options
`Copyright by Alain Schauber, 1996`; sequence_de_triangles
:= [[0, 0], [1, 0], [0.5, 1]]; for j to n
do s := NULL; for
i to nops(liste_de_transformations) do s
:= s, seq(transforme_triangle(liste_de_transformations[i], op(k,
[sequence_de_triangles])), k=1
.. nops([sequence_de_triangles])) od; sequence_de_triangles
:= s od; plots[polygonplot]([sequence_de_triangles],
axes=none,
color=col, scaling=constrained) end:
>triangle_de_Sierpinski:=[[0.5,0,0,0.5,0,0],[0.5,0,0,0.5,0.5,0],[0.5,0,0,0.5,0.25,0.5]]:
>IFS(6, triangle_de_Sierpinski,blue);

Figure: 58.18 - Attracteur du triangle de Sierpinski
Et cette fois-ci nous partons non plus d'un triangle, mais d'un
carré (IFS Square) avec le code Maple 4.00b suivant:
>transform_square := proc(t, square)
local
i; [seq(transforme_point(t, square[i]),
i=1 .. 4)] end:
>IFSS := proc(n, liste_de_transformations,col) local
i, j, k, s, seq_square: seq_square :=[[0,0],[1,0],[1,1],[0,1]]; for
j to n do s := NULL; for
i to nops(liste_de_transformations) do s
:= s, seq(transform_square(liste_de_transformations[i], op(k,
[seq_square])), k=1 ..
nops([seq_square])) od; seq_square
:= s od; plots[polygonplot]([seq_square],
axes=none,
color=col, scaling=constrained) end:
>triangle_de_Sierpinski:=[[0.5,0,0,0.5,0,0],[0.5,0,0,0.5,0.5,0],[0.5,0,0,0.5,0.25,0.5]]:
>IFSS(1, triangle_de_Sierpinski,green);

Figure: 58.19 - Première itération du triangle de Sierpinski avec des carrés
>IFSS(2, triangle_de_Sierpinski,green);

Figure: 58.20 - Deuxième itération du triangle de Sierpinski avec des carrés
> IFSS(3, triangle_de_Sierpinski,green);

Figure: 58.21 - Troisième itération du triangle de Sierpinski avec des
carrés
etc. jusqu'à:
> IFSS(6, triangle_de_Sierpinski,green);

Figure: 58.22 - Attracteur du triangle de Sierpinski avec des carrés
Basiquement, le triangle de Sierpinski peut bien évidemment être
aussi vu comme un triangle auquel on enlève le triangle du milieu
et où pour chacun des triangles restants, on recommence la procédure!
FRACTALE DU TAPIS DE SIERPINSKI
Le tapis de Sierpinski est l'attracteur de 8 fonctions itératives
contractantes d'homothéties de rapport 1/3 centrées aux sommets
et aux milieux des côtés d'un carré dans lequel peut se trouver
n'importe quelle forme géométrique.
Cette fois-ci, dans nous
considérons les huit homothéties (h):
(58.85)
et nous partons par exemple des quatre points de suivants:
[[0, 0], [1, 0], [1, 1], [0, 1]]
(58.86)
ce qui correspond à un carré plein (mais nous pourrions choisir
n'importe quoi d'autre!):

Figure: 58.23 - Ensemble de départ du tapis de Sierpinski
Après l'application des huit fonctions d'homothéties
(nous laissons le soin au lecteur de faire manuellement les calculs
comme nous
les avons déjà détaillés pour le triangle),
nous obtenons la forme suivante composée de huit carrés:

Figure: 58.24 - Deuxième itération du tapis de Sierpinski
et en réappliquant les huit homothéties encore une fois (heureusement
qu'il y a l'ordinateur...):

Figure: 58.25 - Troisième itération du tapis de Sierpinski
et encore une fois:

Figure: 58.26 - Quatrième itération du tapis de Sierpinski
etc.
Le point fixe obtenu (attracteur) s'appelle donc cette fois-ci "tapis
de Sierpinski" et c'est la forme qu'à l'antenne réceptrice
de la majorité de nos téléphones portables en ce début de 21ème
siècle.
Les figures précédentes peuvent être obtenues successivement
avec le code Maple 4.00b suivant (si le
copier/coller de la page web dans Maple 4.00b ne marche pas,
réécrivez simplement le code):
>transforme_point := proc(t, p)
[t[1]*p[1]+t[2]*p[2]+t[5], t[3]*p[1]+t[4]*p[2]+t[6]]
end:
transform_square := proc(t, square)
local i;
[seq(transforme_point(t, square[i]), i=1 .. 4)]
end:
>IFSS := proc(n, liste_de_transformations,col) local
i, j, k, s, seq_square: seq_square
:=[[0,0],[1,0],[1,1],[0,1]]; for j
to n do s := NULL; for
i to nops(liste_de_transformations) do s
:= s, seq(transform_square(liste_de_transformations[i], op(k,
[seq_square])), k=1
.. nops([seq_square])) od; seq_square
:= s od; plots[polygonplot]([seq_square],
axes=none,
color=col, scaling=constrained) end:
> dywan:= [[evalf(1/3),0,0,evalf(1/3),0,0],[evalf(1/3),0,0,evalf(1/3),evalf(1/3),0],
[evalf(1/3),0,0,evalf(1/3),evalf(2/3),0], [evalf(1/3),0,0,evalf(1/3),0,evalf(2/3)],
[evalf(1/3),0,0,evalf(1/3),evalf(1/3),evalf(2/3)], [evalf(1/3),0,0,evalf(1/3),evalf(2/3),evalf(2/3)],
[evalf(1/3),0,0,evalf(1/3),0,evalf(1/3)],[evalf(1/3),0,0,evalf(1/3),evalf(2/3),evalf(1/3)]]:
> IFSS(0, dywan, blue);

Figure: 58.27 - Ensemble de départ du tapis de Sierpinski
> IFSS(1, dywan, blue);

Figure: 58.28 - Première itération du tapis de Sierpinski
> IFSS(2, dywan, blue);

Figure: 58.29 - Deuxième itération du tapis de Sierpinski
> IFSS(3, dywan, blue);

Figure: 58.30 - Troisième itération du tapis de Sierpinski
> IFSS(4, dywan, blue);

Figure: 58.31 - Quatrième itération du tapis de Sierpinski
FRACTALE SPIRALE
Nous avons vu deux fractales de la famille des fractales de Sierpinski
basées donc uniquement sur des homothéties contractantes.
Voyons maintenant une fractale qui combine rotation et homothétie
contractantes.
Dans nous
considérons les deux applications d'homothéties (h) de rotations
(R) suivantes:
(58.87)
Avec un triangle et toujours avec Maple 4.00b, cela nous donne (si
le copier/coller de la page web dans Maple 4.00b ne marche pas,
réécrivez simplement le code):
>transforme_triangle := proc(t, triangle) local
i; [seq(transforme_point(t, triangle[i]),
i=1 .. 3)] end:
>IFS := proc(n, liste_de_transformations,col) local
i, j, k, s, sequence_de_triangles: options
`Copyright by Alain Schauber, 1996`; sequence_de_triangles
:= [[0, 0], [1, 0], [0.5, 1]]; for j to n
do s := NULL; for
i to nops(liste_de_transformations) do s
:= s, seq(transforme_triangle(liste_de_transformations[i], op(k,
[sequence_de_triangles])), k=1
.. nops([sequence_de_triangles])) od; sequence_de_triangles
:= s od; plots[polygonplot]([sequence_de_triangles],
axes=none,
color=col, scaling=constrained) end:
>a:=evalf(5*Pi/6);b:=evalf(Pi/6); >
c1x:=0.25;c1y:=0.5;c2x:=0.5;c2y:=0.5;
>h1:=0.2;h2:=0.95;
>spirale:=[[h1*cos(a),-h1*sin(a),h1*sin(a),h1*cos(a),(1-h1*cos(a))*c1x+h1*sin(a)*c1y,
-h1*sin(a)*c1x+(1-h1*cos(a))*c1y],[h2*cos(b),-h2*sin(b),h2*sin(b),h2*cos(b),
(1-h2*cos(b))*c2x+h2*sin(b)*c2y,-h2*sin(b)*c2x+(1-h2*cos(b))*c2y]]:
>IFS(1,spirale,blue);

Figure: 58.32 - Première itération de la fractale spirale
et encore et comme la convergence est très longue, nous
allons faire par pas de 5 itérations.
>IFS(6,spirale,blue);

Figure: 58.33 - Deuxième itération de la fractale spirale
>IFS(11,spirale,blue);

Figure: 58.34 - Troisième itération de la fractale spirale
>IFS(16,spirale,blue);
Nous obtenons après plusieurs centaines d'itérations le point
fixe suivant:

Figure: 58.35 - Attracteur de la fractale spirale
FRACTALE DE VON KOCH
Toujours, dans les fractales obtenues par homothéties (h)
et rotations (R) contractantes mais auxquelles nous rajoutons
en plus une translation (T), la courbe de Von Koch est une
fractale assez connue, elle peut être obtenue par les applications
suivantes:
(58.88)
Donnons directement le résultat avec Maple 4.00b (si le
copier/coller de la page web dans Maple 4.00b ne marche pas,
réécrivez simplement le code):
>koch := proc(p:: numeric) local m,
n, k, l, s, h, x, y, pts, t, i; h := 3^(-p); pts
:= table([]): # [0, 0]; pts[0]:=[0,0]; x
:= 0; y := 0; for n from 0 to (4^p) do m
:= n; s := 0; for
l from 0 to p-1 do t
:= irem(m, 4); m
:= iquo(m, 4); s
:= s+irem((t+1), 3) - 1 od; #
end of for l x := evalhf(x+cos(Pi*s/3)*h); y
:= evalhf(y+sin(Pi*s/3)*h); pts[n+1]
:= [x, y]; od; [seq(pts[i],
i=0 .. n-1)]; end:
> plot(koch(0), scaling=constrained, style=LINE, axes=NONE,
color=blue,thickness=2);

Figure: 58.36 - Ensemble de départ de la fractale de Von Koch
> plot(koch(1), scaling=constrained, style=LINE, axes=NONE,
color=blue,thickness=2);

Figure: 58.37 - Première itération de la fractale de Von
Koch
> plot(koch(2), scaling=constrained, style=LINE, axes=NONE,
color=blue,thickness=2);

Figure: 58.38 - Deuxième itération de la fractale de Von
Koch
> plot(koch(3), scaling=constrained, style=LINE, axes=NONE,
color=blue,thickness=2);

Figure: 58.39 - Troisième itération de la fractale de
Von
Koch
etc. etc. Jusqu'à obtenir l'attracteur suivant:

Figure: 58.40 -Attracteur de la fractale de Von Koch
Ce qui est aussi dérangeant avec la fractale de Von Koch
c'est que nous partons d'une ligne de longueur finie, pour arriver à la
fin à une ligne de longueur infinie si nous réitérons
la structure à l'infini.
Pourtant visuellement elle est finie... c'est une courbe "pathologique" comme
disent parfois les mathématiciens dans le domaine.
Effectivement, la première intuition conduit à penser que le périmètre
de cette figure tend vers une valeur limite finie, puisqu'on ajoute
des détails de plus en plus petits au fur et à mesure des itérations
successives. En réalité, à la première itération la longueur L de
chaque côté est remplacée par 4 segments de longueur L/3
; À la deuxième, elle devient 16 L/9... À chaque itération
la longueur est donc multipliée par 4/3, ce qui signifie que (contrairement à l'intuition
première) la longueur d'une courbe de Koch tend vers l'infini pour
un nombre d'itérations infini (série géométrique de raison 4/3).
Et, pourtant, cette courbe ne déborde à aucun moment des limites
constituées à l'extérieur par le cercle circonscrit au triangle
initial, et à l'intérieur par le cercle inscrit dans ce triangle!
En d'autres termes une surface de dimension finie est limitée par
une frontière de longueur infinie.
Cette courbe de Koch est légendaire, car elle a servi à Mandelbrot à écrire
un article concernant le problème de mesure de la longueur
des côtes des littoraux de mer (car plus l'unité de
mesure de base prise était petite, plus le périmètre
du littoral était grand).
Il proposa de considérer les littoraux comme des fractales
dont il est impossible de mesurer le périmètre mais
bien "l'arborescence
fractale", soit en d'autres termes: la dimension fractale.
Lorsque nous accolons trois courbes de Koch aux sommets d'un triangle équilatéral,
nous obtenons une élégante figure à symétrie hexagonale dénommée
flocon de Koch (ou Île de Koch):
 
 
Figure: 58.41 - Exemples de l'île de Koch
FRACTALES NATURELLES
Outre l'aspect purement mathématique des fractales, on peut via
des méthodes heuristiques trouver les applications contractantes
pour des fractales similaires aux formes que nous pouvons retrouver
dans la nature. Voyons quelques exemples toujours avec Maple 4.00b en
prenant d'abord pour base commune de toutes les fractales qui vont
suivre, les procédures suivantes (si le
copier/coller de la page web dans Maple 4.00b ne marche pas,
réécrivez simplement le code).
>transforme_point := proc(t, p) [t[1]*p[1]+t[2]*p[2]+t[5],
t[3]*p[1]+t[4]*p[2]+t[6]] end:
transforme_triangle
:= proc(t, triangle) local i; [seq(transforme_point(t,
triangle[i]), i=1 .. 3)] end:
transform_square := proc(t, square) local
i; [seq(transforme_point(t, square[i]),
i=1 .. 4)] end:
>IFS := proc(n, liste_de_transformations,col) local
i, j, k, s, sequence_de_triangles: options
`Copyright by Alain Schauber, 1996`; sequence_de_triangles
:= [[0, 0], [1, 0], [0.5, 1]]; for j to n
do s := NULL; for
i to nops(liste_de_transformations) do s
:= s, seq(transforme_triangle(liste_de_transformations[i], op(k,
[sequence_de_triangles])), k=1
.. nops([sequence_de_triangles])) od; sequence_de_triangles
:= s od; plots[polygonplot]([sequence_de_triangles],
axes=none,
color=col, scaling=constrained) end:
> IFSS := proc(n, liste_de_transformations,col) local
i, j, k, s, seq_square: seq_square :=[[0,0],[1,0],[1,1],[0,1]]; for
j to n do s := NULL; for
i to nops(liste_de_transformations) do s
:= s, seq(transform_square(liste_de_transformations[i], op(k,
[seq_square])), k=1 ..
nops([seq_square])) od; seq_square
:= s od; plots[polygonplot]([seq_square],
axes=none,
color=col, scaling=constrained) end:
RAMEAU
On part de:
>rameau:=[[.387,.430,.430,-.387,.2560,.5220], [.441,-.091,-.009,-.322,.4219,.5059],
[-.468,.020,-.113,.015,.4,.4]]:
Et on obtient:
> IFSS(0,rameau,green);
Figure: 58.42 - Ensemble de départ de la fractale du rameau
> IFSS(1,rameau,green);

Figure: 58.43 - Première itération pour la fractale du rameau
> IFSS(2,rameau,green);

Figure: 58.44 - Deuxième itération pour la fractale du rameau
> IFSS(3,rameau,green);

Figure: 58.45 - Troisième itération pour la fractale du rameau
> IFSS(4,rameau,green);

Figure: 58.46 - Quatrième itération pour la fractale du rameau
> IFSS(5,rameau,green);

Figure: 58.47 - Cinquième itération pour la fractale du rameau
> IFSS(6,rameau,green);

Figure: 58.48 - Sixième itération pour la fractale du rameau
FLOCON DE NEIGE
On part de:
> cristal:=[[.255,0,0,.255,.3726,.6714],[.255,0,0,.255,.1146,.2232],
[.255,0,0,.255,.6306,.2232],[.37,-.642,.642,.37,.6356,-.0061]]:
Et on obtient:
> IFSS(0, cristal,green);

Figure: 58.49 - Ensemble de départ pour le flocon de neige
> IFSS(1, cristal,green);

Figure: 58.50 - Première itération pour la fractale du flocon de neige
>IFSS(2, cristal,green);

Figure: 58.51 - Deuxième itération pour la fractale du flocon de neige
>IFSS(3,cristal,green);

Figure: 58.52 - Troisième itération pour la fractale du flocon de neige
>IFSS(4,cristal,blue);

Figure: 58.53 - Quatrième itération pour la fractale du flocon de neige
>IFSS(5,cristal,blue);

Figure: 58.54 - Cinquième itération pour la fractale du flocon de neige
>IFSS(6,cristal,blue);

Figure: 58.55 - Sixième itération pour la fractale du flocon de neige
>IFSS(7,cristal,blue);

Figure: 58.56 - Septième itération pour la fractale du flocon de neige
ARBRE
On part de:
> tree := [[-0.04, 0, -0.23, -0.65, -0.08, 0.26], [0.61, 0,
0, 0.31, 0.07, 2.5],
[0.65, 0.29, -0.3, 0.48, 0.54, 0.39], [0.64,
-0.3, 0.16, 0.56, -0.56, 0.4]]:
> IFS(0, tree, green);

Figure: 58.57 - Ensemble de départ pour la fractale de l'arbre
> IFS(1, tree, green);

Figure: 58.58 - Première itération la fractale de
l'arbre
> IFS(2, tree, green);

Figure: 58.59 - Deuxième itération pour la fractale de
l'arbre
> IFS(3, tree, green);

Figure: 58.60 - Troisième itération pour la fractale de
l'arbre
> IFS(4, tree, green);

Figure: 58.61 - Quatrième itération pour la fractale
de
l'arbre
> IFS(5, tree, green);

Figure: 58.62 - Cinquième itération pour la fractale de
l'arbre
FOUGÈRE
On part de:
> fougere:=[[0,0,0,0.16,0,0],[0.2,-0.26,0.23,0.22,0,1.6],[-0.15,0.28,0.26,0.24,0,0.44]
,[0.85,0.04,-0.04,0.85,0,1.6]]:
> IFS(0, fougere, blue);

Figure: 58.63 - Ensemble de départ pour la fractale de la fougère
> IFS(1, fougere, blue);

Figure: 58.64 - Première itération pour la fractale
de
la fougère
> IFS(2, fougere, blue);

Figure: 58.65 - Deuxième itération pour la fractale
de
la fougère
> IFS(3, fougere, blue);

Figure: 58.66 - Troisième itération pour la fractale
de
la fougère
> IFS(4, fougere, blue);

Figure: 58.67 - Quatrième itération pour la fractale
de
la fougère
> IFS(5, fougere, blue);

Figure: 58.68 - Cinquième itération pour la fractale
de
la fougère
> IFS(6, fougere, blue);

Figure: 58.69 - Sixième itération pour la fractale
de
la fougère
> IFS(7, fougere, blue);

Figure: 58.70 - Septième itération pour la fractale
de
la fougère
etc. Jusqu'à obtenir:

Figure: 58.71 - Attracteur de la fractale
de
la fougère
et nous allons nous arrêter ici car les exemples
sont non dénombrables...
FRACTALES à TEMPS D'ÉCHAPPEMENT
Plusieurs méthodes ont donc été proposées
pour construire des images fractales comme nous l'avons mentionné
tout au début de ce chapitre. Nous allons donc maintenant
nous intéresser aux méthodes dites "méthodes
d'échappement".
Pour cela, on se place dans le plan complexe formé des
points M de
coordonnées (x, y) d'affixe:
(58.89)
où
i représente le nombre complexe tel que:
(58.90)
On considère une suite complexe définie par:
(58.91)
et:
(58.92)
f étant
une fonction continue complexe. On suppose que f a un
point fixe ,
c'est-à-dire qu'il existe tel
que:
(58.93)
Il
s'agit donc simplement de l'application du théorème
du point fixe déjà mentionné plusieurs
fois jusqu'ici. Sous certaines conditions sur f et
sur ,
on constate que la suite des points ne diverge pas (ce qui veut
dire qu'on ne s'intéresse pas qu'aux points qui convergent
mais
à tous ceux qui ne divergent pas!). Cette méthode
est à la base de la construction des ensembles de Mandelbrot
et de Julia.
Construire une image fractale à partir d'un ensemble de suites
ainsi définies, revient à étudier pour chaque couple (x,
y) du plan le comportement de la suite. On associe
alors une couleur à chaque suite (c'est-à-dire à chaque couple (x,
y)) représentant la "rapidité"
de divergence de la suite.
Pour
étudier la convergence d'une suite, on regarde ses n premiers
éléments, si on détecte que les conditions
de divergence sont vérifiées
alors on peut dire que cette suite diverge, sinon, cette suite
est potentiellement convergente. On remarque que plus n est
grand, plus les résultats seront précis (mais plus
le temps de calcul sera grand).
L'algorithme de base est le suivant:
Fractal=proc(x,y)
z:= valeur de z0;
j:=nombre max itérations
Tant que condition_de_divergence non vérifiée(z) et j non
atteint faire
z:=formule_iteration(z)
changer de couleur;
Fin Tant que
Renvoyer couleur finale
Fin
Fractal
ENSEMBLE
DE MANDELBROT
On
construit l'ensemble de Mandelbrot grâce à des itérations
dans le plan complexe (nous parlons alors de "dynamique
holomorphe").
La fonction est de la forme:
(58.94)
où
c est un paramètre constant tel que .
Le premier terme de la suite est nul. On a donc la suite U
définie par:
et
(58.95)
Pourquoi
commence-t-on avec ?:
Car zéro est le point critique de ,
c'est-à-dire le point qui satisfait à l'extremum:
(58.96)
Pour chaque point d'affixe x+iy du plan,
on étudie la suite U pour .
Si la suite diverge, on dit que le point testé n'appartient pas
à l'ensemble M, si la suite converge, on dit que le point
appartient à M.
Pour
reproduire l'ensemble de Mandelbrot, on associe à c des
valeurs du plan complexe. On considère généralement
la portion du plan complexe ayant comme partie réelle, les
valeurs entre -2.5 et 1.5 et comme partie imaginaire, les valeurs
entre -1.5
et 1.5. Cette portion
du plan complexe est subdivisée de façon à former
une grille dont les éléments seront associés à des
valeurs de c. Pour chaque valeur de c, on obtient une suite dont
les modules peuvent converger
ou
diverger.
En pratique, on considère que la suite des modules converge
si les 30 premiers modules sont inférieurs à 2. Lorsque la suite
des modules converge, on colorie en noir le point de la grille.
Après avoir considéré tous les points de la grille, on obtient
un ensemble de points noircis: "l'ensemble
de Mandelbrot" noté M.
Ce qui constitue un résultat remarquablement curieux!

Figure: 58.72 - Ensemble de Mandelbrot
La liste des générés
par l'itération s'appelle "l'orbite" de .
Pour c = 0 par exemple la suite est alors:
(58.97)
et cette suite converge seulement pour les valeurs de z qui
contenus dans un disque centré en zéro et de rayon égal ou inférieur
à l'unité. Donc l'ensemble de Mandelbrot contient entre autres
le disque unitaire par définition.
On peut colorier les points à l'extérieur
de l'ensemble de Mandelbrot en utilisant des couleurs qui dépendent
du nombre de termes calculés avant d'obtenir un module
supérieur
ou égal à 2. Les points d'une même couleur peuvent être
interprétés
comme étant des points s'éloignant à la même
vitesse de l'ensemble de Mandelbrot.
On peut aussi faire une incursion dans
l'ensemble de Mandelbrot en utilisant Maple 4.00b (disponible habituellement
au collège). Il suffit de copier le programme ci-dessous
sur une feuille de travail du logiciel et d'indiquer à la place
de -2 .. 1, -1.5 .. 1.5 de la dernière ligne, l'étendue
des parties réelles
et imaginaires de c que l'on désire visualiser:
>restart: with(plots):
>couleur:=proc(a,b)
local x,y,xi,yi,n;
x:=a;
y:=b;
for n from 0 to 30 while evalf(x^2+y^2) < 4 do;
xi:=evalf(x^2-y^2+a);
yi:=evalf(2*x*y+b);
x:=xi;
y:=yi;
od;
n
end:
>plot3d(0,-2..1,-1.5..1.5,orientation=[-90,0],style=patchnogrid,
scaling=constrained,axes=framed,numpoints=20000,color=couleur);
Vous obtiendrez dès lors le résultat
ci-dessous:

Figure: 58.73 - Ensemble (fractale) de Mandelbrot avec Maple 4.00b
Pour information, le domaine de l'analyse complexe qui étudie
des systèmes dynamiques s'intéressant principalement à l'étude
d'itérations
d'applications holomorphes (cf. chapitre
d'Analyse Complexe) se nomme
la "dynamique
holomorphe".
Remarques:
R1. L'ensemble de Mandelbrot est auto-similaire
dans le voisinage de points dits "points de Misiurewicz":

R2. Il paraît qu'on peut démontrer (je
cherche la démonstration...) que la fractale de Mandelbrot
peut être mise
en correspondance avec le diagramme de bifurcation que nous avons
étudié dans le chapitre de Dynamique Des Populations
tel que:

ENSEMBLES
DE JULIA
L'ensemble de Julia se construit presque de la même façon que
l'ensemble de Mandelbrot (puisque l'ensemble de Julia en est en
fait un sous-ensemble!). Dans l'ensemble de Mandelbrot, c balaye
le plan. Pour l'ensemble de Julia, c est fixé pendant
tout le calcul de l'image. À chaque c correspond
donc un ensemble particulier que l'on notera J(c)
et qui est donc "l'ensemble de Julia".
Ce qui varie, c'est ,
qui prend la valeur du point à tester. C'est donc qui
balaie le plan.
Le point A de coordonnées (x, y) et d'affixe
x + iy appartient à J(c) si
et seulement si la suite définie par:
et
(58.98)
converge.
En
fait, l'ensemble de Mandelbrot est l'ensemble des points c
tels que l'ensemble de Julia de paramètre c soit
connexe (donc l'ensemble de Mandelbrot généralise
tous les ensembles de Julia!!!). Donc la figure de l'ensemble de
Mandelbrot contient les figures de tous les ensembles de Julia,
ce qui est remarquable (mais aussi logique...!):
Si à nouveau
nous développons
l'algorithme, nous obtenons à un
facteur d'échelle près donné, la fractale
représentée ci-dessous (obtenue grâce
au petit programme Maple 4.00b modifié utilisé pour la
fractale de Mandelbrot):
restart; with(plots):
julia:= proc(c,x, y)local z, m;
z:= evalf(x+y*I);
for m from 0 to 30 while abs(z) < 3 do
z:= z^2 + c
od;
m
end:
J:= proc(d)
global phonyvar;
phonyvar:= d;
(x, y) -> julia(phonyvar, x, y)
end:
plot3d(0, -2 .. 2, -1.3
..1.3, style=patchnogrid,orientation=[-90,0], grid=[270, 270],scaling=constrained,
color=J(-1.25));

Figure: 58.74 - Ensemble de Julia (fractale) avec Maple 4.00b
et pour montrer que l'ensemble de Mandelbrot contient
tous les ensembles de Julia:

Figure: 58.75 - Illustration de la paternité... de l'ensemble de Mandelbrot
Nous devons donc pouvoir écrire un unique algorithme
(voir plus bas) qui permette d'obtenir tous les ensmbles de Julia
en
choisissant
simplement
bien le point de départ comme le montre les figures ci-dessous:

|
|
|
|
|
et ainsi de suite... |
Obtenu donc avec l'algorithme Maple 4.00b suivant:
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);
ENSEMBLES
DE NEWTON
Les
ensembles de Newton sont ainsi appelés car ils découlent
de la résolution
du problème de la recherche des zéros d'une fonction
par la méthode
de Newton.
Soit
une fonction f à
valeur dans ,
et dérivable dans ,
on prend dans
tel
que:
(58.99)
Il
y a alors deux manières de procéder:
1. Soit nous nous intéressons à et
alors nous faisons comme précédemment
2. Soit nous nous demandons
vers quel zéro
la
suite converge et nous nous intéressons à 
Si à nouveau
nous développons l'algorithme, nous obtenons à un
facteur d'échelle près donné, la fractale
représentée ci-dessous
obtenue à nouveau avec Maple 4.00b:
restart:
newton:= proc(x, y)
local z, m;
z:= evalf(x+y*I);
for m from 0 to 50 while abs(z^3-1) >= 0.001 do
z:= z - (z^3-1)/(3*z^2)
od;
m
end:
plot3d(0, -2 .. 2, -1.5 ..
1.5, orientation=[-90,0],grid=[250, 250], style=patchnogrid, scaling=constrained,color=newton);

Figure: 58.76 - Ensemble de Newton (fractale) avec Maple 4.00b
|