Coucou les zestueux,
Pour la petite histoire, ça a commencé ici.
Petarabbit c’est le projet d’un simulateur numérique d’ensembles de Julia (et bien plus), en particulier du Lapin de Douady. (D’où le nom : peta + rabbit, merci @dri1).
Le projet
Il s’agirait de l’action conjointe de deux programmes.
- Un premier qui serait un visualiseur d’images de très grandes tailles (très, très grandes tailles, au-delà du milliards de pixels). Ce programme devrait permettre de se balader dans l’image de façon fluide.
- Le deuxième serait le simulateur. Il a pour rôle de produire l’image de très grande taille.
Sur le simulateur
Le simulateur fonctionne selon 3 axes :
- Le premier axe gère l’aspect mathématique descriptif : structures algébriques, définition de la dynamique discrète et du critère de convergence.
- Le second axe joue le rôle de pilote : il lance les tests de convergence sur les points. C’est ici que se joue le multithreading.
- Le troisième axe a pour but d’inscrire les informations en une image. Il donne au deuxième axe les points à calculer et gère l’information pour inscrire le résultat dans un .png.
L’état actuel
Le code est là.
Actuellement les fichiers sont répartis de la façon suivante :
- Premier axe = Algebre.cpp, Julia.cpp, Cycle.cpp, Mandelbrot.cpp
- Deuxième axe = Dynamicien.cpp
- Troisième axe = main.cpp avec Moteur.cpp (et Parametre.h et SFML et lodepng.cpp)
Cette base permet de fournir des images de grande taille (voir billet plus haut) mais ne propose ni de très grande taille (du fait d’optimisations à faire et de matériel à avoir — que je n’ai pas) ni de logiciel pour explorer les grandes images.
Sur ce qu’il faut faire
Le visionneur d’images grandes tailles.
C’est une partie indépendante qui doit répondre à deux objectifs :
- fluide ;
- permet de sélectionner n’importe quel .png en entrée.
Je ne doute pas qu’un zestueux talentueux en informatique pourra le faire sans trop d’encombres.
Le simulateur.
Actuellement il faudrait commencer le travail de parallélisation sur GPU.
Quelques précisions pour finir
Jusque là, je me suis lancé en C++ après avoir comparé différents langages à ma portée. J’ai l’impression que ça tourne plutôt bien et que le rapport simplicité d’écriture / efficacité est bon. Mais si vous avez de meilleures options, je serai heureux de les entendre.
Aussi, je compte réellement sur vous pour travailler sur ce projet. Je n’ai pas de grande compétence en informatique. Ma contribution est surtout sur la compréhension mathématique du sujet, qui n’est pas sans difficulté.
À long terme
Je pense que ce projet peut être fini assez rapidement si on le limite au calcul d’un lapin avec des dimensions très très grandes.
Mais ça serait dommage de se limiter au lapin de Douady. Il y a plein d’ensembles de Julia passionnant à examiner, et l’intérêt du premier axe serait de pouvoir passer facilement d’un exemple à l’autre.
Actuellement on peut déjà faire quasiment tous les ensembles de Julia possible (je ne parle pas uniquement de Julia de polynômes, mais aussi de fractions rationnelles). On peut aussi faire l’ensemble de Mandelbrot.
Mieux : on pourrait avec un premier axe propre permettre de simuler des dynamiques discrètes sur des espaces plus exotiques que $\mathbf C\cup\{\infty\}$ comme par exemple $\mathbf CP^2$ ou $\mathbf CP^3$ qui sont des sujets de recherche très actuels.
Mot de la fin
Pour finir, j’aimerai vous signaler que c’est une opportunité pour ZdS de mener à bout un tel projet. En effet, toutes les images de Wikipédia concernant des ensembles de Julia pourraient être refaites et dans une qualité bien supérieure.
Rien qu’à titre d’exemple, comparez le lapin de Wikipédia et celui dans ma balise en début de topic …
Si on fait ces images, on pourrait donner de la visibilité à ZdS à travers tous les articles mentionnant les ensembles de Julia mais aussi les fractales. Ce sont des pages très visitées (pour des pages de maths).
Bisous ! Et bonne année 2018