Le défi a pour objectif de tracer approximativement l' attracteur de la carte logistique en fonction de son paramètre r (également appelé diagramme de bifurcation ), ou d'une sous-région de celui-ci. L'aspect du graphique peut être vu dans l'image suivante de Wikipedia:
Contexte
La carte logistique est une fonction mathématique qui prend une entrée x k et la met en correspondance avec une sortie x k + 1 définie comme
x k + 1 = r x k (1− x k )
où r est le paramètre de la carte, supposé se situer dans l'intervalle [0, 4].
Compte tenu de r dans [0,4], et une valeur initiale x 0 dans l'intervalle [0,1], il est intéressant d' appliquer de façon répétée la fonction d'un grand nombre N d'itérations, en produisant une valeur finale x N . Notez que x N se situera nécessairement aussi dans [0,1].
À titre d'exemple, considérons r = 3,2, N = 1000. La valeur initiale x 0 = 0,01 donne x 1000 = 0,5130. Pour x 0 = 0,02, le résultat est x 0 = 0,7995. Pour toute autre valeur initiale x 0, les valeurs finales x 1000 sont extrêmement proches de 0,5130 ou 0,7995. Ceci est vu dans le graphique comme la hauteur des deux lignes à la position horizontale r = 3,2.
Cela ne signifie pas que pour r = 3,2, chaque séquence converge vers l'une de ces deux valeurs. En fait, pour les deux valeurs initiales considérées ci-dessus, les séquences sont (notez le comportement oscillant):
x 0 = 0,01, ..., x 1000 = 0,5130, x 1001 = 0,7995, x 1002 = 0,5130, ...
x 0 = 0,02, ..., x 1000 = 0,7995, x 1001 = 0,5130, x 1002 = 0,7995 , ...
Ce qui est vrai, c'est que pour N suffisamment grand , et pour presque toutes les valeurs initiales x 0 , le terme x N sera proche de l'un des éléments de l'ensemble {0.5130, 0.7995}. Cet ensemble est appelé l' attracteur pour ce r spécifique .
Pour les autres valeurs du paramètre r, la taille de l'ensemble d'attracteurs ou de ses éléments changera. Le graphique trace les éléments de l'attracteur pour chaque r .
L'attracteur pour un r spécifique peut être estimé par
- tester une large gamme de valeurs initiales x 0 ;
- laisser le système évoluer pour un grand nombre N d'itérations; et
- prendre note des valeurs finales x N obtenues.
Le défi
Contributions
N : nombre d'itérations.
r 1 , r 2 et s . Celles-ci définissent l'ensemble R des valeurs de r , à savoir R = { r 1 , r 1 + s , r 1 + 2 s , ..., r 2 }.
Procédure
L'ensemble X des valeurs initiales x 0 est fixe: X = {0,01, 0,02, ..., 0,99}. En option, 0 et 1 peuvent également être inclus dans X .
Pour chaque r dans R et chaque x 0 dans X , Itérer la carte logistique N fois pour produire x N . Enregistrez les tuples obtenus ( r , x N ).
Production
Tracez chaque tuple ( r , x N ) comme un point dans le plan avec r comme axe horizontal et x N comme axe vertical. La sortie doit être graphique (pas art ASCII).
Règles supplémentaires
- La procédure indiquée définit le résultat requis, mais n'est pas appliquée. Toute autre procédure qui procède au même ensemble de ( r , x N ) tuples peut être utilisée.
- L'entrée est flexible comme d'habitude.
- Les erreurs en virgule flottante ne seront pas retenues contre le répondeur.
- Une sortie graphique est requise, dans tous les formats acceptés . En particulier, la sortie peut être affichée à l'écran, ou un fichier graphique peut être produit, ou un tableau de valeurs RVB peut être sorti. Si vous affichez un fichier ou un tableau, veuillez publier un exemple de ce à quoi il ressemble lorsqu'il est affiché.
- Les graphiques peuvent être vectoriels ou raster. Pour les graphiques raster, la taille de l'image doit être d'au moins 400 × 400 pixels.
- Chaque point doit être affiché comme un seul pixel, ou comme une marque avec une taille de l'ordre d'un pixel (sinon le graphique s'encombre rapidement).
- La plage des axes doit être [0,4] pour r (axe horizontal) et [0,1] pour x N (axe vertical); ou il peut être plus petit tant qu'il comprend tous les points obtenus.
- Les échelles des axes sont arbitraires. En particulier, l'échelle n'a pas besoin d'être la même pour les deux axes.
- Les lignes de quadrillage, les étiquettes d'axe, les couleurs et les éléments similaires sont acceptables, mais pas obligatoires.
- Le code le plus court en octets gagne.
Cas de test
Cliquez sur chaque image pour une version haute résolution.
N = 1000; r1 = 2.4; r2 = 4; s = 0.001;
N = 2000; r1 = 3.4; r2 = 3.8; s = 0.0002;
N = 10000; r1 = 3.56; r2 = 3.59; s = 0.00002;
Reconnaissance
Merci à @FryAmTheEggman et @AndrasDeak pour leurs commentaires utiles pendant que le défi était dans le bac à sable.