Un programme Python que j'ai créé pour visualiser l'ensemble de Mandelbrot sur calculatrice, basé sur le (magnifique) tutoriel de The Coding Train : https://www.youtube.com/watch?v=6z7GQewK-Ks
J'y utilise une fonction de mon module Color Converter Python, donc vous en aurez besoin dans le même dossier.
Pour modifier la taille de l'écran de visualisation (je vous conseille 60x60 pour 2 minutes de chargement, ou bien 100x100 pour les détails mais 5 minutes de chargement , l'image que j'ai mise est en 150x150), la taille ou l'emplacement de la "simulation" (j'ai pas trouvé de mot plus adéquat, ou alors zoom), ou le nombre d'itérations maximum (100 c'est bien), modifiez les valeurs des variables juste après les définitions de fonctions dans le fichier.
English description:
A Python program that i created to display the Mandelbrot Set on calculator, based on the (excellent) tutorial from The Coding Train : https://www.youtube.com/watch?v=6z7GQewK-Ks
I use a function in it for rendering from my module Color Converter Python, so you will need it in the same directory.
To dchange the size of the visualization screen (I advise 60x60 for 2-3 minutes of loading, or 100x100 for the details but with 5-10 minutes of loading , the image I put is 150x150), the size or the location of the "simulation" (I didn't find any better word, or maybe "zoom"), or the number of maximum iterations (100 is good), you need to change the variables just after the definitions of functions in the file.
Joli ! Y'a les couleurs et tout. J'ai eu quelques soucis (déjà Planète Casio renomme les scripts, c'est con, du coup Colorcon.py → colrconv.py, et ensuite il manquait un from casioplot import *), mais rien de majeur.
J'aurais bien aimé qu'on puisse le faire plus rapide, mais je vois pas d'optimisation. A part précalculer 2**2 et simplifier les carrés en multiplications (x**2 → x*x), mais je doute qu'on gagne grand chose
Could try something like this
It saves 2 squares and 1 mult
for (i = 0; i < maxi; i++) {
x2 = x*x
y2 = y*y
if x2+y2 > 4:
break
x = ((x*y)<<1)+y
y = x2-y2+x
}
Lephenixnoir a écrit : simplifier les carrés en multiplications (x**2 → x*x)
I would have thought the other way around
heres a version that is faster only if squaring is must faster multiplying
It replaces a mult with a square. but adds on additional add and sub
for (i = 0; i < maxi; i++) {
x2 = x * x;
y2 = y * y;
x2y2 = x2 + y2;
if (x2y2 > 4)
break;
xy = x + y;
x = xy * xy - x2y2 + sy;
zr = x2 - y2 + sx;
}
Merci pour ces retours ! Je serais toujours étonné de voir des commu aussi actives !
Merci Lephe pour ces problèmes, je viens de découvrir le fait que planet casio renomme les scripts (j'avais oublié l'import mais c'est parce que je me suis fait une librairie de dessin 2D genre lignes, carrés, ronds, ... qui avait déjà l'import dedans mais je l'ai enlevée parce que elle ne servait plus à rien).
Lephenixnoir a écrit : J'aurais bien aimé qu'on puisse le faire plus rapide, mais je vois pas d'optimisation. A part précalculer 2**2 et simplifier les carrés en multiplications (x**2 → x*x), mais je doute qu'on gagne grand chose
Oui j'ai laissé le 2**2 mais on peut le remplacer par 4, mais sinon oui c'est difficile à optimiser, sauf si j'ajoute des add-ins de performances.
Thanks Redcmd ! I will try your ideas later (sry I don't have time right now), thank you for your suggestions !
Redcmd a écrit : (idk valid js syntax)
I think I can read your code, it's not that complicated. Although on your line
x = ((x*y)<<1)+y
is that bit shifting ? I've already seen it but idk how to use this if you could help me.
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd