Poster un nouveau sujet Poster une réponse
Générer une fractale
Auteur Message
Plimpton_
Invité
Posté le : Ven 31 Juil 2015, 17:35   Citer 

Salut à tous !
J'ai réussi à créer un algorithme permettant d'afficher une portion de fractale générée à l'aide d'un nombre complexe C.
Pour comprendre cet algorithme, le niveau de terminale minimum est nécessaire, car il nécessite des connaissances sur les nombres complexes, sur les suites arithmétiques, et les fractales.
Cet algorithme utilise la suite Z(n)=Z(n+1)+C
C'est à vous d'entrer les caractéristques du nombre complexe C, à savoir sa partie réelle a et sa partie imaginaire b (C=a+bi).
Vous devrez ensuite entrer ce que j'ai appelé la "sensibilité", qui désigne à partir de quel nombre on n'active plus les pixels du graphique. Je vous conseille de tatonner entre 1 et 20, afin de voir quelque chose. Il est important également que a et b soient compris entre -1 et 1, ou la fractale ne se génèrera pas.

Notez aussi que la fractale met plusieurs minutes à s'afficher, car elle se génère point par point. Donc faites quelque chose en attendant, regardez une petite vidéo, et retournez voir votre calculatrice après winkle.gif

Voici le programme (pour TI-82 Stats FR) :




Input "PART REELLE C ? ",C
Input "PART IMG C ? ",D
Input "SENSIBILITE ? ",S
-1 --> Xmin
1 --> Xmax
-1 --> Ymin
1 --> Ymax
EffDessin
AxesAff
EtiqNAff
AffGraph

For(T,0,10000)
0 --> L
entAleat(-1,0)+NbrAléat --> X
entAléat(-1,0)+NbrAléat --> Z
X --> Q
Z --> R

While {{RACINE DE}} (Q²+R²)<2
L+1 --> L
Q --> A
R --> B
A²-B²+C --> Q
2AB+D --> R
End

If L=<S \\ "=<" signifie "inférieur ou égal", il se trouve dans le menu MATHS \\
Then
Pt-On(X,Z)
End

End




Je débute un peu dans la programmation, dites-moi ce que vous en pensez winkle.gif

  Haut de page Bas de page 
 
Mingerton



Autorisation : Membre
Nb de messages : 504
Inscrit le : Ven 07 Déc 2012, 20:09
Posté le : Ven 31 Juil 2015, 21:06   Citer 

Salut Plimpton_

C'est un bel algorithme ! Il mériterait une optimisation de vitesse, je sais pas encore si c'est possible ici. On perd peut être des cycles dans les boucles.

Sinon, tu peux demander un nombre complexe directement en ayant enclenché la mode a+bi au préalable, puis récupérer les parties réelles et imaginaires respectivement avec real(nombre) et imag(nombre).

Ce qui nous donne :


Code
a+bi
Prompt C
imag(C->D
real(C->C
Input "SENSIBILITE:",S
-1üXmin:1üXmax
-1üYmin:1üYmax
ClrDraw
AxesAff
EtiqNAff
AffGraph
For(T,0,1E4
DelVar L-randüX
-randüZ
XüQ
ZüR
While sqrt(Q²+R²<2
L+1üL
QüA
RüB
A²-B²+CüQ
2AB+DüR
End
If L=<S
Then
Pt-On(X,Z
End
End



----------------------
Mes articles
Mes programmes en ligne (je termine peu de projets)

Guide traduction Algo-Basic, par Linkakro
Catalogue des fonctions 82/83/84 FR/EN
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
Plimpton_
Invité
Posté le : Lun 10 Aoû 2015, 22:08   Citer 

Merci pour ta réponse ! Ton algorithme est pas mal, mais je n'ai pas tout compris au code ^^ mais je pense que je vais utiliser le tien. Je te passe quand même la 2eme version de mon algoritme qui est assez sympa. Il faut toujours attendre environ 20 min pour voir apparaitre la fractale, mais le resultat vaut vraiment le coup, et on a une vision de la totalité de l'image


Code

Input "PART REEL C ? ",C
Input "PART IMG C ?  ",D
Input "SENSIBILITE ?   ",S
-2-->Z
-2-4/94-->X
2-->Xmax
-2-->Xmin
2-->Ymin
-2-->Ymax
EffDessin
AxesAff
EtiqNAff
AffGraph
While Z<2
0-->L
X+4/94-->X
If X>2
Then
-2-4/94-->X
Z+4/62-->Z
End
Pt-On(X,Z)
X-->Q
Y-->R
While sqrt(Q^2+R^2)<2
L+1-->L
Texte(0,0,"....
Texte(0,0,L
Q-->A
R-->B
A^2-B^2+C-->Q
2AB+D-->R
If L>(S+1)
Then
9999-->Q
End
End
If L>=S
Then
Pt-On(X,Z
Else
Pt-Off(X,Z
End
End



Ce code affiche en plus en haut a gauche le nombre de boucles que fait le point actuel, et la fractale se genere point par point au lieu de proceder par points aleatoires winkle.gif

  Haut de page Bas de page 
 
Plimpton_
Invité
Posté le : Lun 10 Aoû 2015, 22:14   Citer 

Désolé pour le double post, je rajoute juste que la sensibilité optimale à mon gout est 15 winkle.gif

  Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Page générée en 9 requêtes