retour index

chapitre5

Fractales généralisées

Le modèle de Mira

Ensembles de Julia

Ensemble de Mendelbrot

La méthode de Newton

 

La généralisation suivante des fractales autorise les transformations non linéaires. En ce sens, une fractale résulte alors de l'application répétée d'un même procédé, quel que soit celui-ci. Les fractales explosent alors en un délire de formes dont font partie les attracteurs étranges, l'inconvénient étant que l'on distingue de moins en moins le point de départ et les symétries de la structure. Les fractales, même généralisées, se reconnaissent cependant par le fait qu'elles sont structurées, la structure se reconnaissant à toutes les échelles.

On retrouve dans cette catégorie les ensembles de Julia et l'ensemble bien connu de Mendelbrot. On va commencer par un exemple simple qui mène à de jolies fractales :c'est le modèle de Mira.

Le modèle de Mira

On considère l'itération
MATH

F(x) peut prendre diverses formes. On prendra
MATH

Lorsque b <1, le système est dissipatif et tend vers un attracteur, qui peut être un attracteur ponctuel ou un attracteur étrange. Lorsque l'attracteur est ponctuel, les trajectoires transitoires ne sont à proprement parler ni des trajectoires chaotiques, ni des fractales au sens strict, mais elles mènent à de très jolies figures. On verra le cas b = 1 dans le chapitre sur les systèmes hamiltoniens.

Prenons un premier exemple avec a = 0,7, b = 0,9998, le point de départ étant (x = 15, y = 0). On note w la valeur de F(x) qui sert pour les nouvelles valeurs de x et y.

> restart:with(plots):

> x:=+15:y:=0:a:=0.7:b:=0.9998:

w:=a*x+(1-a)*2*x^2/(1+x^2):liste:=x,y:

> for n to 10000 do

> z:=x:x:=b*y+w:w:=a*x+(1-a)*2*x^2/(1+x^2):y:=w-z:

> liste:=liste,x,y od:

> pointplot([liste],style=point,color=red);


chap5__3.pngfigure 5.1 : modèle de Mira avec a = 0,7 et b = 0,9998

La trajectoire décrit une spirale qui se rapproche petit à petit du point fixe attracteur (1,0).

Prenons un autre exemple :pour a = 0,8 et b = 0,999, avec les mêmes conditions initiales, on obtient :


chap5__4.pngfigure 5.2 : a = 0,8 et b = 0,999


début chapitre

Ensembles de Julia

Définition

On considère l'itération qui, au nombre complexe z, associe


MATH
c étant un complexe.

Si c = 0 , on a MATH Tous les nombres complexes situés à l'intérieur d'un cercle de rayon 1 vont converger vers l'origine puisque MATH si celui-ci est < 1, et tous les nombres complexes à l'extérieur vont tendre vers l'infini puisque le module de l'itéré augmente à chaque itération. L'ensemble des points à l'intérieur du cercle s'appelle l'ensemble de Julia rempli ou ensemble des prisonniers. Le cercle de rayon 1 forme frontière entre l'ensemble de Julia rempli et l'ensemble des points qui partent à l'infini. Cette frontière est l'ensemble de Julia. L'itéré d'un point du cercle se trouve sur le cercle puisque son module reste égal à 1. L'ensemble de Julia est invariant par l'itération.

Lorsque $c\neq 0,$ on aura de même un domaine où les itérés partent à l'infini, et un domaine où les itérés restent bornés (ensemble de Julia rempli). La frontière entre les domaines constitue l'ensemble de Julia de l'itération et c'est presque toujours une fractale (généralisée).

L'itération repousse les points à proximité de la frontière, qui vont à l'infini ou se dirigent vers un attracteur. L'itération inverse va au contraire les attirer et l'ensemble de Julia sera l'attracteur de l'itération inverse.

Un nombre complexe w étant donné, les nombres complexes z vérifiant $w=z^{2}+c$ sont donnés par
MATH

On a donc deux antécédents et 2 itérations inverses
MATH

qui ne sont pas linéaires, donc mènent à une fractale généralisée.

Premier aperçu

On pourra alors programmer la fractale par le jeu du chaos, en prenant au hasard un des deux antécédents à chaque étape, et l'ensemble des points obtenus va parcourir la fractale (en éliminant au besoin les points transitoires initiaux).

Partons d'un cercle, sur lequel on prend 720 points, espacés de 0,5$^{\text{o}}.$ On fait une procédure, qui prend un des deux antécédents au hasard. On applique la procédure aux points du cercle, 2, 4 et 10 fois. On voit apparaître l'ensemble de Julia, avec c = -1 :

> restart:with(plots):

> c:=-1:

> f:=proc(z) global c:local a:a:=rand(0..1):

if a()=0 then evalc( sqrt(z-c)) else-evalc(sqrt(z-c)) fi end:

> liste:=seq(evalc(polar(2,i*evalf(Pi)/360)),i=1..720):

for i to 2 do liste:=seq(f(liste[i]),i=1..nops([liste])) od:

> p1:=complexplot([liste],style=point,axes=none): (liste initiale)

> p2:=complexplot([liste],style=point,axes=none): (for i to 2)

> p3:=complexplot([liste],style=point,axes=none): (for i to 4)

> p4:=complexplot([liste],style=point,axes=none): (for i to 10)

> A:=array(1..2,1..2):

> A[1,1]:=p1:A[1,2]:=p2:A[2,1]:=p3:A[2,2]:=p4:

> display(A);


chap5__13.pngfigure 5.3 : évolution vers l'ensemble de Julia : ensemble initial (en haut à gauche), 2 itérations (en haut à droite), puis 4 (en bas à gauche) et 10 (en bas à droite)

On peut aussi garder les deux antécédents à chaque étape et le nombre de points va doubler à chaque itération. Partant d'un seul point, on tracera alors l'ensemble des points obtenus à la dernière itération. Pour ne pas avoir de transitoires, il faut partir d'un point de l'ensemble de Julia ;or il y en a deux qui sont faciles à obtenir ;ce sont les points fixes de l'itération qui satisfont à
MATH

et qui sont
MATH

Le point fixe est attractif si la valeur absolue de la dérivée est <1 et répulsif dans le cas contraire ;avec c = -1, cela donne $z_{1}=1,618$ et $z_{2}=-0,618.$ Pour ces deux points, la valeur absolue de la dérivée est > 1, car MATH et MATH ;ils sont tous deux répulsifs et appartiennent à l'ensemble de Julia. On peut donc partir de l'un de ces deux points :

> restart:with(plots):

> c:=-1:z:=0.5+sqrt(0.25-c):

> f:=proc(z) global c:evalc( sqrt(z-c)),-evalc(sqrt(z-c)) end:

> liste:=z:for i to 11 do liste:=seq(f(op(i,[liste])),

i=1..nops([liste])) od:

> complexplot([liste],style=point);


chap5__20.pngfigure 5.4 : ensemble de Julia avec c = -1

on a ainsi une idée générale de l'attracteur et l'on peut obtenir toutes sortes d'ensembles très esthétiques en faisant varier la valeur de $c.$

La même figure peut s'obtenir avec le jeu du chaos :

> restart:with(plots):

> c:=-1:z:=0.5+sqrt(0.25-c):

> a:=rand(0..1):

> f:=proc(z) global c:a():

> if a()=0 then evalc( sqrt(z-c)) else -evalc( sqrt(z-c))fi end:

> liste:=z:for i to 1000 do liste:=liste,f(op(nops([liste]),[liste])) od:

> complexplot([liste],style=point);

Mais l'image obtenue est plus ou moins satisfaisante, car certaines régions de l'ensemble de Julia sont difficiles à obtenir.

Détails de l'ensemble de Julia

Les figures obtenues sont en fait incroyablement complexes.

Une autre façon de programmer consiste à faire un découpage en pixels d'une partie du plan. On itère chaque pixel et on écarte le point si celui-ci part à l'infini. En fait, on montre facilement que le point partira sûrement à l'infini dès lors que son module MATH soit 2 si c = -1. De façon pratique, on procédera de la façon suivante :on itère chaque pixel un certain nombre de fois ;si son module reste inférieur à 2, on le classe dans l'ensemble de Julia rempli et on trace le point. On peut obtenir par cette méthode les détails d'une petite portion de l'ensemble de Julia pour c = -1 (la partie la plus à droite) :

> restart:with(plots):

> c:=-1:

> f:=proc(z):z^2+c end:

> liste:=op([]):for i from 1.5 to 1.62 by 0.001 do:

for j from -0.04 to 0.04 by 0.001 do z:=i+I*j:

for n to 25 while abs(z)<2 do

z:=f(z):od:if abs(z)<2 then liste:=liste,i+I*j fi od od:

> complexplot([liste],style=point);


chap5__23.pngfigure 5.5 : détail de l'ensemble de Julia pour c = -1

Chaque boule est entourée d'une infinité d'autres boules qui la reproduisent ;détaillons la demi-boule de droite, d'abcisse comprise entre 1,58 et 1,62 :

> restart:with(plots):

> c:=-1:

> f:=proc(z):z^2+c end:

> liste:=op([]):for i from 1.58 to 1.62 by 0.0002 do:

for j from 0 to 0.015 by 0.0002 do z:=i+I*j:

for n to 25 while abs(z)<2 do

> z:=f(z):od:if abs(z)<2 then liste:=liste,i+I*j fi od od:

> complexplot([liste],style=point);


chap5__24.pngfigure 5.6 : détail de la figure précédente

Elle présente la même structure et il y a autosimilarité.

Autre méthode

Traçons par une autre méthode l'ensemble de Julia correspondant à c = -0,5+0,5I.

On crée une procédure, appelée julia $,$ qui fait correspondre au point donné le nombre d'itérations m à partir duquel le module de z dépasse 2, indiquant que ce point ne fait pas partie de l'ensemble de Julia rempli. On se donne une valeur de m et on trace l'ensemble des points pris sur un quadrillage choisi avec grid qui, avec cette valeur de m, font partie de l'ensemble de Julia rempli (avec view = 19.5..20.5, qui sélectionne la valeur m = 20).

> restart:with(plots):

> c:=-0.5+0.5*I:julia:=proc(x,y) local m, z:global c:

z:=x+I*y:m:=0:

to 20 while abs(z)<2 do z:=z^2+c:m:=m+1 od: end:

> plot3d(julia,-1.6..1.6,-1..1,grid=[100,100],view=19.5..20.5,

orientation=[-90,0],color=black);


chap5__26.pngfigure 5.7 : ensemble de Julia pour c = -0,5+0,5I

Détaillons le quart inférieur droit :

>plot3d(julia,0..1.6,-1..0,grid=[100,100],view=19.5..20.5,

orientation=[-90,0],color=black);


chap5__27.pngfigure 5.8 : détail de l'ensemble de Julia pour c = -0,5+0,5I

Pour c = -0,719-0,25I, on obtient :

> c:=-0.719-0.25*I:julia:=proc(x,y) local m, z:global c:

> z:=x+I*y:m:=0:

to 101 while abs(z)<2 do z:=z^2+c:m:=m+1 od: end:

> plot3d(julia,-1.5..1.5,-0.9..0.9,grid=[110,110],

view=100.5..101.5,orientation=[-90,0],color=black);


chap5__28.pngfigure 5.9 : ensemble de Julia pour c = -0,719-0,25I

Pour c = I, on obtient une dendrite :

> restart:with(plots):

> c:=I:julia:=proc(x,y) local m, z:global c:

z:=x+I*y:m:=0:

to 11 while abs(z)<2 do z:=z^2+c:m:=m+1 od: end:

> plot3d(julia,-1.6..1.6,-1..1,grid=[100,100],view=10.5..11.5,

orientation=[-90,0],color=black);


chap5__29.pngfigure 5.10 : ensemble de Julia pour c = I

On peut également tracer l'ensemble de Julia pour c = I avec ses préimages, c'est-à-dire les points qui quittent l'ensemble de Julia rempli après un certain nombre d'itérations :

> restart:with(plots):

> c:=I:julia1:=proc(x,y) local m, z:global c:

> z:=x+I*y:m:=0:to 11 while abs(z)^2<4 do z:=z^2+c:m:=m+1 od:

if m>=2 and m<=3 then 1 else 0 fi end: (quittent l'ensemble de Julia rempli pour m=2 ou 3)

> p1:=plot3d(julia1,-1.6..1.6,-1.5..1.5,grid=[80,80],

orientation=[-90,0],style=patchnogrid,view=0.5..1.5,

color=COLOR(RGB,0.9,0.9,0.9)):

On définit de même une autre procédure julia2 pour m compris entre 4 et 6 à laquelle correspond p2, où la nuance de gris est plus foncée avec l'option color = COLOR(RGB,0.7,0.7,0.7), puis p3 avec julia3, m étant compris entre 7 et 9 et la couleur de 0,5 et enfin p4 avec julia4 pour m = 10, la couleur étant noire avec 0. On trace les 4 graphes simultanément avec display :


chap5__30.pngfigure 5.11 : ensemble de Julia pour c = I avec les préimages

Ensembles de Julia déconnectés

On divise les ensembles de Julia en 2 catégories :pour certaines valeurs de c, l'ensemble de Julia est connecté, c'est-à-dire que l'on peut relier deux points quelconques de l'ensemble par un chemin contenu dans l'ensemble. Un théorème dit que l'ensemble de Julia rempli est connecté si 0 est dans l'ensemble de Julia rempli, donc si les itérations de 0 restent bornées ;l'ensemble des valeurs de c correspondant aux ensembles de Julia remplis connectés forme l'ensemble de Mendelbrot.

Si l'ensemble n'est pas connecté, il est totalement déconnecté, c'est-à-dire qu'il n'existe aucun chemin entre des points distincts qui soit complètement contenu dans l'ensemble ;l'ensemble de Julia est alors un ensemble de Cantor. En particulier, on obtient un ensemble de Cantor lorsque MATH

Prenons comme exemple c = 2,5 ;on part du cercle de rayon 2,5 et l'on applique la transformation de Julia inverse une fois, puis deux, jusqu'à 4 fois :

> restart:with(plots):

> c:=2.5:

> f:=proc(z) global c:local a:a:=rand(0..1):

if a()=0 then evalc( sqrt(z-c)) else-evalc(sqrt(z-c)) fi end:

> liste:=seq(evalc(polar(2.5,i*evalf(Pi)/360)),i=1..720):

> p1:=complexplot([liste],style=point,axes=none,scaling=constrained):

> liste:=seq(evalc(polar(2.5,i*evalf(Pi)/360)),i=1..720):

for i to 1 do liste:=seq(f(op(i,[liste])),i=1..nops([liste])) od:

> p2:=complexplot([liste],style=point,axes=none,

scaling=constrained):

> p3:=complexplot([liste],style=point,axes=none,

scaling=constrained):(i jusqu'à 2)

> p4:=complexplot([liste],style=point,axes=none,

scaling=constrained):(i jusqu'à 3)

> p5:=complexplot([liste],style=point,axes=none,

scaling=constrained):(i jusqu'à 4)

> display(p1,p2,p3,p4,p5);


chap5__33.pngfigure 5.12 : construction de l'ensemble de Cantor correspondant à $c=2,5$

La quatrième figure se compose de 8 ensembles déconnectés. A la limite, l'ensemble obtenu est un ensemble de Cantor.

début chapitre

Ensemble de Mendelbrot

Il a été dessiné à l'ordinateur en 1979 par Benoit Mendelbrot, le père des fractales.

Cet ensemble, noté M, est l'ensemble des nombres complexes tels que les ensembles de Julia associés à ces nombres sont connectés (au sens mathématique du terme).

Une autre définition équivalente et plus facile à mettre en oeuvre est que M est l'ensemble des complexes c tels que l'itération
MATH

reste bornée, c'est-à-dire que 0 est dans l'ensemble de Julia rempli correspondant à la valeur c.

On écrit une procédure, mendelbrot, qui, partant d'une valeur de c, l'itère tant que son module ne dépasse pas 2 (car alors on est sûr que le point va à l'infini) et donne le nombre d'itérations correspondant. Si le point n'est pas sorti avant la 15$^{i\grave{e}me}$ itération, on admet qu'il fait partie de l'ensemble de Mendelbrot, et l'on trace l'ensemble des points pour lesquels m = 15 :

> restart:with(plots):

> mandelbrot:=proc(x,y) local m, c:

> c:=x+I*y:m:=0:

to 15 while abs(c)^2<4 do c:=c^2+x+I*y:m:=m+1 od: end:

> plot3d(mandelbrot,-1.4..0.5,-1.4..1.4,grid=[100,100],

view=14.5..15.5,orientation=[-90,0],

style=patchnogrid,color=black);


chap5__36.pngfigure 5.13 : ensemble de Mendelbrot

L'ensemble de Mendelbrot est d'une incroyable complexité. Sa frontière présente des motifs tous différents correspondant aux ensembles de Julia dont il constitue en quelque sorte le catalogue. Sa description occupe des livres entiers.

début chapitre

La méthode de Newton

On sait résoudre une équation du second et du troisième degré. On démontre par contre qu'il n'existe pas de méthode générale pour résoudre les équations de degré égal ou supérieur à 5.

La méthode de Newton permet, à partir d'une valeur approchée de la solution, de s'approcher rapidement de celle-ci de façon que le nombre de chiffres corrects à droite de la virgule double à peu près à chaque itération.

Etant donnée une fonction f(x) de dérivée f'(x) et $x_{0}$ une estimation initiale de la racine, on prend pour estimation suivante l'intersection $x_{1}$ de la tangente à la courbe en $x_{0}$ avec l'axe horizontal, qui est en général plus proche de la racine que $x_{0}$.


chap5__41.pngfigure 5.14 : illustration de la méthode de Newton

L'équation de la tangente passant par $(x_{0},\;f(x_{0}))$ est
MATH

Pour y = 0, on obtient la nouvelle estimation
MATH

On notera $x_{1}=N(x_{0}),$ et, de façon plus générale,
MATH

Par exemple, pour $f(x)=x^{2}-1,$ on a 2 racines égales à $\pm 1$ ;on a MATH ;en traçant le graphe de N(x) et les toiles d'araignée partant de 0,2 et - 0,2, on voit que tous les nombres strictement négatifs convergent vers -1 et tous les nombres strictement positifs convergent vers +1.


chap5__51.pngfigure 5.15 : analyse graphique de la méthode de Newtom pour $x^{2}-1$

Voyons le comportement pour $f(x)=x^{2}+1$

méthode de Newton pour x$^{2}+1$

L'équation $x^{2}+1=0$ n'a pas de racine. L'itération ne peut pas converger vers un point fixe. Une analyse graphique des itérés montre que son comportement est en fait chaotique :

> restart:with(plots):

> f:=x->(x^2-1)/(2*x):

> x:=0.9:y:=f(x):s:=[x,0]:for i from 1 to 100 do

> s:=s,[x,y],[y,y];x:=y;y:=f(x):od:

> plot({f,t->t,[s]},-3..3,-3..3,color=black);


chap5__56.pngfigure 5.16 : analyse graphique de la méthode de Newton pour $x^{2}+1$

Ce comportement chaotique est confirmé par le fait que $N$ est conjuguée topologiquement à l'application MATH sur le cercle qui est chaotique.

Méthode de Newton pour les fonctions cubiques

Appliquée à une fonction cubique $x^{3}+cx+1$ (forme à laquelle on peut ramener la plupart des fonctions cubiques), la méthode de Newton a un comportement parfois complexe.

Si $c\geqslant 0,$ il est facile de vérifier qu'il n'y a qu'une seule racine vers laquelle converge toutes les valeurs de R (sauf 0 si $c=0).$

Traçons la courbe pour c <0, avec les trois valeurs -1, -1,89 et -3 :

> p:=plot({x^3-x+1,x^3-1.89*x+1,x^3-3*x+1},x=-2..2,color=red):

> q:=textplot({[-1.4,-2,`c=-3`],[-2,1,`c=-1`],[-1,2.4,`c=-1,89`]}):

>display(p,q);


chap5__65.pngfigure 5.17 : tracé de la fonction $x^{3}+cx+1$ pour $c=-2,$ $-1,89$ et -1

Si c <-1,89, on a trois racines, une négative et deux positives

Si c = 1,89, une racine négative et une racine double positive

Si c > -1.89, on a une seule racine négative.

Traçons les itérés de la méthode de Newton, avec MATH entre 100 et 200 (pour éliminer les transitoires) partant de la valeur initiale 0 pour des valeurs de c entre -2 et -0,1 :

> restart:with(plots):

> f:=x->evalf((2*x^3-1)/(3*x^2+c)):

> liste:=op([]): for c from -2 to -0.1 by 0.01 do x:=0:

to 100 do x:=f(x) od:to 100 do x:=f(x):liste:=liste,c,x od od:

> pointplot([liste],view=-2..2,color=red);


chap5__68.pngfigure 5.18 : comportement de la méthode de Newton pour MATH

On constate que, si c <-1,89, la méthode conduit à la plus petite racine positive ;si c >-1,89, la méthode conduit pour la plupart des valeurs de c à la racine négative, avec des coupures où le comportement semble périodique ou chaotique.

Voyons de plus près le comportement pour MATH :

> liste:=op([]): for c from -1.3 to -1.25 by 0.0005 do x:=0:

to 200 do x:=f(x) od:to 100 do x:=f(x):liste:=liste,c,x od od:

> pointplot([liste],view=-0.2..0.2,color=red);


chap5__71.pngfigure 5.19 : scénario de doublement de période pour MATH

Pour $-$1,296, la méthode, qui menait à la racine négative, mène brusquement à un comportement chaotique, où le point oscille entre 2 cascades, d'où l'on sort par un scénario de division de la période par 2. L'une des cascades est représentée ci-dessus.

Pour 1,28 par exemple, on a un cycle de période 4 où l'itéré passe de l'un des deux points obtenus sur la figure ci-dessus au point correspondant de l'autre cascade existant pour la même valeur de c (voir figure 5.18)

> c:=-1.28:x:=0:y:=f(x):s:=op([]):to 50 do x:=y;y:=f(x)od:

to 50 do s:=s,[x,y],[y,y];x:=y;y:=f(x):od:

> plot({f,t->t,[s]},-3..3,-3..3,color=red,axes=boxed); (on trace les itérés de 50 à 100)


chap5__73.pngfigure 5.20 : cycle de période 4 pour c = -1,28

Les 4 points du cycle sont :[.008210, .781372], [.781372, -.083165], [-.083165, .795036], [.795036, .008210].

On peut voir que l'on a, pour la valeur -1,28 de c, 4 points fixes de $N^{4}(x)$, attractifs car la valeur absolue de la pente est <1, dont 2 sont visibles sur la figure suivante, correspondant à la cascade de la figure 5.19 :

> restart:with(plots):

> f:=x->(2*x^3-1)/(3*x^2+c):

> c:=-1.28:plot({f@@4,t->t},-0.15..0.15,-0.1..0.1,color=red);


chap5__76.pngfigure 5.21 : graphe de $N^{4}(x)$ et de la bissectrice montrant 2 points fixes

Méthode de Newton dans le plan complexe

Appliquons la méthode de Newton dans le plan complexe à l'application $f(z)=z^{3}-1.$

Il existe 3 racines à l'équation $z^{3}-1=0,$ qui sont les racines cubiques de l'unité :1, MATH et MATH

Pour cela, on itère 20 fois chaque point d'une grille de 80$\times $80 ;si le point obtenu est proche de la 1$^{\grave{e}re}$ racine égale à 1 (à une distance inférieure à 0.25), on admet qu'elle se dirige vers cette racine et l'on donne la valeur 0 ;si elle se dirige vers la seconde racine, on donne la valeur 1, et 2 dans le dernier cas. Le graphe étant traçé, on prend les options (bouton droit de la souris) colorZ(grayscale) et style patch and contour ou style patch w/o grid.

> restart:with(plots):

> newton:=proc(x,y) local z: z:=x+I*y:

to 20 do z:=(2*z^3+1)/(3*z^2) od:if abs(z-1)^2<1/16 then 0

elif evalf(abs(z-exp(2*Pi*I/3))^2)<1/16 then 1 else 2 fi end:

> plot3d(newton,-1..1,-1..1,grid=[80,80],orientation=[90,0]);


chap5__83.pngfigure 5.22 : bassins d'attraction des 3 racines cubiques de l'unité par la méthode de Newton

On a trois bassins d'attraction correspondant aux trois racines en blanc, gris et noir. Ces bassins d'attraction sont complexes ;les frontières entre les bassins sont des ensembles de Julia fractals particuliers :chaque fois qu'on a une frontière entre 2 couleurs, la troisième est toujours présente !

Le point origine est un croisement des 3 couleurs à cause de la symétrie par rotation de 120$^{\text{o}}.$ L'ensemble de Julia qui fait frontière entre les bassins, est invariant par l'itération et l'origine en fait partie. Tous les itérés de l'origine font, par continuité, frontière entre les trois bassins et l'ensemble de Julia est parcouru en entier par les itérés de l'origine.

Pour $f(z)=z^{4}-1,$ on obtiendrait, avec les 4 racines, 1, -1, $\exp (i\pi /2)$ et $\exp (-i\pi /2)$ et MATH :

> restart:with(plots):

> newton:=proc(x,y) local z: z:=x+I*y:

to 40 do z:=(3*z^4+1)/(4*z^3) od:if abs(z-1)^2<1/16 then 0

elif evalf(abs(z-exp(Pi*I/2))^2)<1/16 then 1

elif abs(z+1)^2<1/16 then 2 else 3 fi end:

> plot3d(newton,-1..1,-1..1,grid=[80,80],orientation=[90,0]);


chap5__90.pngfigure 5.23 : méthode de Newton pour les racines 4$^{i\grave{e}mes}$ de l'unité

On a une fleur à 4 pétales. Là encore, chaque point de la frontière est frontière des 4 bassins, donnés par les 4 nuances du gris depuis le blanc jusqu'au noir. On peut évidemment prendre 4 couleurs différentes à l'ordinateur, ce qui donne un dessin beaucoup plus joli (en prenant pour option avec le bouton droit de la souris :color Z ou Z(Hue))

début chapitre

retour index