[Mandelbrot] Problème sur les listes
4 participants
Page 1 sur 1
[Mandelbrot] Problème sur les listes
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
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
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
Re: [Mandelbrot] Problème sur les listes
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:
la liste des termes de 0 à n peut être calculée ainsi:
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]
Re: [Mandelbrot] Problème sur les listes
Bonjour,
J'ai encore besoin d'un tuyau, j'aurais voulu représenter dans le plan l'ensemble des nombres complexes z tels que :
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
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
Re: [Mandelbrot] Problème sur les listes
Bonjour Joffrey,
Il faut définir le contour de la zone sous forme de chemin (Path). Une proposition:
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)
]
Re: [Mandelbrot] Problème sur les listes
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
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
Re: [Mandelbrot] Problème sur les listes
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!):
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
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
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
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
Re: [Mandelbrot] Problème sur les listes
Re,
En tout cas, merci, le rendu est très bien!
Bonne soirée
C'était bien ce que je voulais mais l'approche que j'en avais était fausse (messages précédents).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.
En tout cas, merci, le rendu est très bien!
Bonne soirée
Re: [Mandelbrot] Problème sur les listes
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...
zoom1
zoom 2
Bon, mais il faut quand même avouer que TeXgraph n'est pas le plus adapté pour ce genre dessin
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
Re: [Mandelbrot] Problème sur les listes
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.
Re: [Mandelbrot] Problème sur les listes
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é.
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é.
Re: [Mandelbrot] Problème sur les listes
Bonjour Joffrey,
Il y a en effet quelques modifications minimes à apporter:
Fenêtre initiale: [-1.5; 1.5] X [-1;1] Xscale=Yscale=1.
Attention, il faut être patient!!!
Un zoom
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
Re: [Mandelbrot] Problème sur les listes
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.
Ca rend quand même bien.
Merci
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
Ca rend quand même bien.
Merci
Re: [Mandelbrot] Problème sur les listes
Superbes figures Patrick!!! Bravo!!!
Elles ont tout a fait leur place dans la rubrique exemple ou dans la section contributions diverses...
Elles ont tout a fait leur place dans la rubrique exemple ou dans la section contributions diverses...
Re: [Mandelbrot] Problème sur les listes
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...
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...
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|