[Mandelbrot] Problème sur les listes

Voir le sujet précédent Voir le sujet suivant Aller en bas

[Mandelbrot] Problème sur les listes

Message  Joffrey le Ven 13 Fév - 22:52

Bonsoir,

J'ai encore un problème avec les listes.
Je voudrais construire une liste de nombres complexes.
Par exemple, connaissant le premier terme u0 je voudrais obtenir la liste

L:=[u0,u1,u2, ...,uN]

connaissant la relation de récurrence d'ordre 1 et où N est précisé .

J'ai essayé plusieurs méthodes, non fructeuses, et la plupart du temps je suis obligé de mettre fin au programme car il "tourne" indéfiniment.

Aurais-tu la solution?

Merci

Joffrey

Nombre de messages : 179
Age : 35
Localisation : Vichy(03) / Clermont-Ferrand(63)
Date d'inscription : 13/06/2008

Voir le profil de l'utilisateur http://mathex.servhome.org

Revenir en haut Aller en bas

Re: [Mandelbrot] Problème sur les listes

Message  P.Fradin le Ven 13 Fév - 23:33

Bonsoir Joffrey,

Je suppose que tu as un terme initial u0, et une relation de récurrence du type u(n+1)=f(u(n)), si f est un peu compliquée tu peux la définir sous forme de macro f d'une variable %1. Par exemple pour f(x)=4x(1-x), la macro f est définie par:
Code:

4*%1*(1-%1)

la liste des termes de 0 à n peut être calculée ainsi:
Code:

[ u:=u0,  u,  for k from 1 to n do u:=f(u), u od]

_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: [Mandelbrot] Problème sur les listes

Message  Joffrey le Sam 14 Fév - 14:15

Bonjour,

J'ai encore besoin d'un tuyau, j'aurais voulu représenter dans le plan l'ensemble des nombres complexes z tels que :
  • -2 <= Re(z)<=1;
  • -1.5 <= Im(z)<=1.5;
  • abs(z)<2.

Par contre là je ne sais pas si cela est possible, je n'ai rien trouvé ni dans la doc ni dans le forum.

Bonne journée

Joffrey

Nombre de messages : 179
Age : 35
Localisation : Vichy(03) / Clermont-Ferrand(63)
Date d'inscription : 13/06/2008

Voir le profil de l'utilisateur http://mathex.servhome.org

Revenir en haut Aller en bas

Re: [Mandelbrot] Problème sur les listes

Message  P.Fradin le Sam 14 Fév - 16:55

Bonjour Joffrey,

Il faut définir le contour de la zone sous forme de chemin (Path). Une proposition:

Code:

[
{pour voir les contraintes}
Cercle(0,2), Droite(1,0,-2), Droite(1,0,1), Droite(0,1,-1.5), Droite(0,1,1.5),

{définition des points de construction}
A:=M(1,-1.5), B:=bar(A),C:=-2*exp(-i*arcsin(1.5/2)), D:=bar(C),

{dessin de la région}
Color:=red, Width:=8, FillStyle:=bdiag, FillColor:=blue,
Path( [A,B,C,line,0,D,2,1,arc], 1),

{pour voir les points}
Color:=black, DotStyle:=bigdot,
LabelDot(A,"$A$","SE",1), LabelDot(B,"$B$","NE",1),
LabelDot(C,"$C$","NO",1), LabelDot(D,"$D$","SO",1)
]


_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: [Mandelbrot] Problème sur les listes

Message  Joffrey le Sam 14 Fév - 19:24

Re,
Bon, je vais aller droit au but, je voudrais représenter l'ensemble de mandelbrot.
J' arrive à le faire sur maple mais je n'arrive pas transcrire le code pour TeXgraph.
J'ai pensé aux listes, mais cela ne donne rien de concluant.

Je laisse tombé pour le week-end, je tenterai une autre approche dans la semaine.

Merci

Joffrey

Nombre de messages : 179
Age : 35
Localisation : Vichy(03) / Clermont-Ferrand(63)
Date d'inscription : 13/06/2008

Voir le profil de l'utilisateur http://mathex.servhome.org

Revenir en haut Aller en bas

Re: [Mandelbrot] Problème sur les listes

Message  P.Fradin le Sam 14 Fév - 21:13

Ca c'est autre chose!

Il faut bien comprendre que ce genre de dessin c'est forcément du bitmap (dessin par pixel) et non des contours. En gros il faut balayer tous les pixels d'une zone et tester si on doit l'allumer ou non.

Fenêtre initiale (très important!): Xmin=-2, Xmax=1, Ymin:=-1.5, Ymax:=1.5, Xscale=Yscale=4.

L'élément graphique (attention le calcul est un peu long!):

Code:

[
Marges(0,0,0,0), size(12,1), density:=150,
nb:=(Xmax-Xmin)*Xscale/2.54*density, pasX:=(Xmax-Xmin)/(nb-1),
nb:=(Ymax-Ymin)*Yscale/2.54*density, pasY:=(Ymax-Ymin)/(nb-1),
{pour l'export eps}
Special("/dot{ 0.3 0 360 arc fill stroke}bind def"),
Point(
      for x from Xmin to Xmax step pasX do
          for y from Ymin to Ymax step pasY do
              z:=0, N:=0, c:=x+i*y,
              repeat
                    z:=z^2+c, Inc(N,1)
              until (N=50) Or (abs(z)>2) od,
              if N=50 then c fi
          od
      od
    )


Commentaire: j'ai pris une densité de 150 pixels par pouce (en général c'est 96 pour les écrans), plus on l'augmente plus les calculs seront longs! puis on calcule le nombre de pixels sur Ox et Oy pour avoir le pas. Enfin on balaye la fenêtre par pixel et on applique l'algorithme classique. A l'écran c'est moche! Car les points de TeXgraph sont trop gros, c'est pour cela que j'ai redéfini la taille du point pour l'export eps, car vu le nombre de points on ne peut guère compter que sur l'eps Laughing
Je n'ai pas précisé la fenêtre dans l'élément graphqiue de manière à pouvoir faire des zooms (calculs longs je le rappelle).

Le rendu en eps, suivi de 2 zooms successifs:



zoom 1:



zoom 2


_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: [Mandelbrot] Problème sur les listes

Message  Joffrey le Sam 14 Fév - 22:41

Re,
P.Fradin a écrit :
Il faut bien comprendre que ce genre de dessin c'est forcément du bitmap (dessin par pixel) et non des contours.
C'était bien ce que je voulais mais l'approche que j'en avais était fausse (messages précédents).
En tout cas, merci, le rendu est très bien!

Bonne soirée

Joffrey

Nombre de messages : 179
Age : 35
Localisation : Vichy(03) / Clermont-Ferrand(63)
Date d'inscription : 13/06/2008

Voir le profil de l'utilisateur http://mathex.servhome.org

Revenir en haut Aller en bas

Re: [Mandelbrot] Problème sur les listes

Message  P.Fradin le Dim 15 Fév - 2:27

Une autre méthode,

Qui donne des images plus jolies, mais bien plus longues à calculer (1 à 2 mn)

Avec la même fenêtre initiale [-2, 0.54] X [-1.2, 1.2] Xscale=1 et Yscale=1.

On dessine les pixels en dehors de l'ensemble de Mandelbrot avec une certaine couleur. Bien sûr cela fait bien plus de points que dans la méthode précédente et en plus ils sont affichés individuellement...

Code:

[background(full,black), T:=50,
Marges(0,0,0,0), size(10,1), density:=96,
nb:=(Xmax-Xmin)*Xscale/2.54*density, pasX:=(Xmax-Xmin)/(nb-1),
nb:=(Ymax-Ymin)*Yscale/2.54*density, pasY:=(Ymax-Ymin)/(nb-1),
{pour export eps}
Special("/dot{ 0.6 0 360 arc fill stroke}bind def"),
for x from Xmin to Xmax step pasX do
          for y from Ymin to Ymax step pasY do
              z:=0, N:=0, c:=x+i*y,
              repeat
                    z:=z^2+c, Inc(N,1)
              until (N=T) Or (abs(z)>2) od,
              if N<T then Color:= MixColor(darkred,(1-(N-1)/(T-1)),yellow,(N-1)/(T-1)), Point(c) fi
          od
 od ] 



zoom1



zoom 2



Bon, mais il faut quand même avouer que TeXgraph n'est pas le plus adapté pour ce genre dessin Smile

_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: [Mandelbrot] Problème sur les listes

Message  Eric Kouris le Dim 15 Fév - 13:24

En voyant les figures hier soir, j'avais justement hésité à demander une nouvelle figure avec les vitesses de fuites pour les points ne se trouvant pas dans l'ensemble.

Eric Kouris

Nombre de messages : 150
Age : 49
Date d'inscription : 26/03/2008

Voir le profil de l'utilisateur http://pagesperso-orange.fr/styren/

Revenir en haut Aller en bas

Re: [Mandelbrot] Problème sur les listes

Message  Joffrey le Dim 15 Fév - 19:15

Bonjour,

Bravo, pour l'ajout des couleurs, ça rend très bien.
Maintenant je continue mes investigations.
Si j'ai bien compris le principe, les ensembles de Julia se construisent de manière analogue, à l'exception que cette fois-ci c'est $c$ qui est fixé et $z0$ qui balaie le plan.
Mais ce que j'obtiens, en modifiant ton code ne me donne pas le résultat escompté.

Joffrey

Nombre de messages : 179
Age : 35
Localisation : Vichy(03) / Clermont-Ferrand(63)
Date d'inscription : 13/06/2008

Voir le profil de l'utilisateur http://mathex.servhome.org

Revenir en haut Aller en bas

Re: [Mandelbrot] Problème sur les listes

Message  P.Fradin le Dim 15 Fév - 21:54

Bonjour Joffrey,

Il y a en effet quelques modifications minimes à apporter:

Fenêtre initiale: [-1.5; 1.5] X [-1;1] Xscale=Yscale=1.
Code:

[T:=100, c:=-0.181-0.667*i,
Marges(0,0,0,0), size(10,1), density:=120,
nb:=(Xmax-Xmin)*Xscale/2.54*density, pasX:=(Xmax-Xmin)/(nb-1),
nb:=(Ymax-Ymin)*Yscale/2.54*density, pasY:=(Ymax-Ymin)/(nb-1),
{pour export eps}
Special("/dot{ 0.3 0 360 arc fill stroke}bind def"),
      for x from Xmin to Xmax step pasX do
          for y from Ymin to Ymax step pasY do
              N:=0, z:=x+i*y,
              repeat
                    z:=z^2+c, Inc(N,1)
              until (N=T) Or (abs(z)>2) od,
              Color:= MixColor(darkred,1-N/T,yellow,N/T),
              Point(x+i*y)
          od
      od] 

Attention, il faut être patient!!!



Un zoom


_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: [Mandelbrot] Problème sur les listes

Message  Joffrey le Dim 15 Fév - 23:20

Bonsoir,

Superbe!

Dans le code que j'avais, je demandais Point(z) et non Point(x+i*y) comme il fallait.
D'où le nuage informe que j'obtenais.

P.Fradin a écrit :
Bon, mais il faut quand même avouer que TeXgraph n'est pas le plus adapté pour ce genre dessin Smile


Ca rend quand même bien.

Merci

Joffrey

Nombre de messages : 179
Age : 35
Localisation : Vichy(03) / Clermont-Ferrand(63)
Date d'inscription : 13/06/2008

Voir le profil de l'utilisateur http://mathex.servhome.org

Revenir en haut Aller en bas

Re: [Mandelbrot] Problème sur les listes

Message  Alphonse Capriani le Lun 16 Fév - 15:26

Superbes figures Patrick!!! Bravo!!!

Elles ont tout a fait leur place dans la rubrique exemple ou dans la section contributions diverses...

Alphonse Capriani

Nombre de messages : 374
Age : 56
Localisation : East Harlem - NY
Date d'inscription : 21/01/2008

Voir le profil de l'utilisateur http://www.mediafire.com/?sharekey=61c7f7ce30421d314012e8015643d

Revenir en haut Aller en bas

Re: [Mandelbrot] Problème sur les listes

Message  P.Fradin le Lun 16 Fév - 22:11

Bonjour Alphonse,

Cela fait de jolies figures en effet mais à quel prix! C'est long à obtenir, j'ai essayé sous Ubuntu en 64bits pensant que ce serait plus rapide, et bien ... pas du tout, au contraire, deux fois plus long! Le plus rapide, en fait c'est la version 1.93. Comme quoi ce que l'on gagne en ergonomie/esthétique en faisant évoluer le programme avec des bibliothèques plus récentes, se paye par ailleurs...

Je pense que pour ce genre de graphiques, il serait bon que TeXgraph dispose d'une instruction qui permette d'allumer le pixel de son choix, cela ne créerait pas d'élément graphique, mais il faudrait aussi une commande pour sauvegarder l'image bitmap de la zone de dessin à l'écran dans une image jpg ou eps.

Sinon ces figures ont leur place dans la zone des contribution, mais j'hésite encore un peu, vu la longueur du temps de calcul...

_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: [Mandelbrot] Problème sur les listes

Message  Contenu sponsorisé Aujourd'hui à 2:07


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum