Zunächst ein mathematisches Zwischenspiel, kurz und lohnenswert:
Wenn 0 < a < 4
, bildet die Logistikfunktion f(x) = ax(1-x)
das Intervall [0,1] in sich selbst ab. Dies bedeutet, dass man das Iterationsspiel spielen kann; Wenn beispielsweise a = 2 ist, wird der Anfangswert 0,3 zu 0,42, dann zu 0,4872 usw.
Mit a
zunehmendem Parameter wird die quadratische Funktion f
im folgenden Sinne komplizierter:
0 < a < 1
Alle Anfangswerte werden in Richtung 0 iteriert.1 < a < 3
0 wird abstoßend, aber es gibt einen neuen festen Punkt (a-1) / a, der alle Iterationen anzieht.3 < a < 1+sqrt(6)
Der neue Fixpunkt wird abstoßend, aber es erscheint ein Zyklus von 2 anziehenden Punkten.3.44949... < a < 3.54409...
Der 2-Zyklus wird abstoßend, aber es erscheint ein Zyklus von 4 anziehenden Punkten.- etc.
Feigenbaum stellte fest, dass die Länge dieser Parameterintervalle mit einer Geschwindigkeit abnimmt 4.6692...
, die der Feigenbaum-Konstante immer näher kommt . Die wunderbare Entdeckung ist, dass diese Bifurkationssequenz der Periode 2 ein allgemeines Phänomen ist, das von jeder Funktion geteilt wird, die (wie die quadratische Parabel) zunimmt und dann abnimmt. Dies war einer der ersten Berichte über die Universalität des Chaos .
Nun zur Herausforderung! Schreiben Sie den kürzestmöglichen Code, der die Feigenbaum-Konstante mit einer Genauigkeit Ihrer Wahl berechnet . Hier geht es nicht darum, das System zu betrügen, indem Sie eine Zahl codieren, die Sie gegoogelt haben, sondern darum, dass der Computer den Wert tatsächlich findet. Als Referenz ist hier die Konstante mit 30 Stellen:
4.669201609102990671853203821578
Antworten:
Javascript,
141138135131 Bytes, 8 StellenEs ist etwas, was ich denke. Es sollte ziemlich viel verbesserungsfähig sein. Wenn jemand einen Start muss: wie Feigenbaum berechnen . Und wenn Sie lieber wissen möchten, wie es im Code gemacht wird, lesen Sie dies .
Kopieren Sie den folgenden Code und fügen Sie ihn in Ihre Konsole ein. Errechnet 4.6692016 68823243 (also nicht wirklich präzise).
quelle
Python, 127 Bytes
Gutschrift geht für @ThomasW mit seiner Javascriptantwort.
Add
print(d)
to output 4.669201673141983 . Dauert einige Sekunden, da die langen Zeichenfolgen vor der Ausführung berechnet werden.quelle
Kohle , 84 Bytes
Probieren Sie es online! Link zum ausführlichen Code zur Erklärung.
Verwendet den Algorithmus von hier .
Drucke 4.66920 0975097843 (6 Stellen)
quelle