Tout d'abord, un intermède mathématique, court et qui en vaut la peine:
Si 0 < a < 4
, la fonction logistique f(x) = ax(1-x)
mappe l'intervalle [0,1] à l'intérieur d'elle-même. Cela signifie que l'on peut jouer au jeu d'itération; par exemple, si a = 2, la valeur initiale 0,3 devient 0,42, puis 0,4872, etc.
À mesure que le paramètre a
augmente, la fonction quadratique f
se complique dans le sens suivant:
0 < a < 1
toutes les valeurs initiales itèrent vers 0.1 < a < 3
0 devient repoussant, mais il y a un nouveau point fixe (a-1) / a qui attire toutes les itérations.3 < a < 1+sqrt(6)
le nouveau point fixe devient repoussant, mais un cycle de 2 points d'attraction apparaît.3.44949... < a < 3.54409...
le cycle 2 devient repoussant, mais un cycle de 4 points d'attraction apparaît.- etc.
Feigenbaum a remarqué que les longueurs de ces intervalles de paramètres diminuent à un rythme qui se rapproche de plus en plus de 4.6692...
la constante de Feigenbaum . La merveilleuse découverte est que cette séquence de bifurcation de la période 2 est un phénomène général partagé par toute fonction qui (comme la parabole quadratique) augmente, puis diminue. Ce fut l'un des premiers rapports sur l' universalité du chaos .
Maintenant pour le défi! Écrivez le code le plus court possible qui calcule la constante de Feigenbaum avec une précision de votre choix. Le point ici n'est pas de tromper le système en encodant un nombre que vous avez googlé, mais de faire en sorte que l'ordinateur trouve la valeur. Pour référence, voici la constante à 30 chiffres:
4.669201609102990671853203821578
Réponses:
Javascript,
141138135131 octets, 8 chiffresC'est quelque chose que je suppose. Cela devrait être assez évolutif. Si quelqu'un a besoin d'un début: comment calculer Feigenbaum . Et si vous voulez plutôt savoir comment le faire au niveau du code, consultez ceci .
Copiez collez le code suivant dans votre console. Calcule 4.6692016 68823243 (donc pas vraiment précis).
la source
Python, 127 octets
Le mérite revient à @ThomasW avec sa réponse javascript.
Ajouter
print(d)
à la sortie 4.669201673141983 . Prend quelques secondes, car les longues chaînes sont calculées avant l'exécution.la source
Fusain , 84 octets
Essayez-le en ligne! Lien vers le code détaillé pour explication.
Utilise l'algorithme d' ici .
Imprime 4.66920 0975097843 (6 chiffres)
la source