Calcul formel : Mode d'emploi - Exemples en Maple
Claude Gomez, Bruno Salvy, Paul Zimmermann
Masson, 1995
Chapitre III, section 1.5, exercice 5, page 85.
Philippe.Dumas@inria.fr
http://algo.inria.fr/dumas/Maple/
|
|
1. On se contente d'utiliser les formules pour écrire la procédure demandée.
> mandelbrot:=proc(n::nonnegint,a::algebraic,b::algebraic)
local c,k,z;
c:=a+I*b;
z:=0:
for k to n do
z:=evalc(z^2+c)
od;
evalc(abs(z)^2-abs(z)-abs(c))
end:
> mandelbrot(2,a,b);
2. La question n'est pas très bien formulée. Les courbes à tracer sont celles que l'on obtient en égalant à zéro l'expression .
> N:=4:
> for n to N do
frontier[n]:=plots[implicitplot](
mandelbrot(n,a,b)=0,a=-3..3,b=-3..3,
numpoints=1000)
od:
> plots[display]({seq(frontier[n],n=1..N)});
> N:=5:
> for n to N do
frontier[n]:=plots[implicitplot](
mandelbrot(n,a,b)=0,a=-3..3,b=-3..3,
numpoints=min(2000,500*n))
od:
> plots[display]({seq(frontier[n],n=1..N)});
Le dessin obtenu n'est pas satisfaisant ; il faut dire que l'on attend une frontière assez tortueuse (voir le dessin de la page 9 dans [PeRi86] et son commentaire à la page 56). Par curiosité nous essayons la même séquence de calculs avec Maple V.3 et nous obtenons le dessin suivant.
Évidemment on n'obtient pas non plus un dessin de bonne qualité mais la zone hachurée où se trouve la courbe est quand même plus petite qu'avec Maple V.5.
Avec Maple V.4 on obtient le même résultat qu'avec Maple V.5. Il semble donc que sur cet exemple particulier il y ait eu une baisse des performances de plots/implicitplot entre V.3 et V.4. Ceci dit, il ne faut tout de même pas jeter le bébé avec l'eau du bain. En travaillant dans un rectangle plus petit, on arrive à obtenir un dessin correct.
> plots[implicitplot](
mandelbrot(5,a,b)=0,a=-2.1..-1.9,b=-0.1..0.1,
numpoints=1000);
Sur l'ensemble de Mandelbrot, on peut consulter le texte de A. Douady Julia sets and the Mandelbrot set dans [PeRi86].