Die Dottie-Zahl ist der Fixpunkt der Kosinusfunktion oder die Lösung der Gleichung cos (x) = x . 1
Ihre Aufgabe wird es sein, Code zu erstellen, der sich dieser Konstante annähert. Ihr Code sollte eine Funktion darstellen, die eine ganze Zahl als Eingabe annimmt und eine reelle Zahl ausgibt. Die Grenze Ihrer Funktion, wenn die Eingabe zunimmt, sollte die Dottie-Zahl sein.
Sie können einen Bruch, eine Dezimalzahl oder eine algebraische Darstellung einer Zahl ausgeben. Ihre Ausgabe sollte willkürlich genau sein können, Floats und Doubles reichen für diese Herausforderung nicht aus. Wenn Ihre Sprache keine Zahlen mit willkürlicher Genauigkeit unterstützt, müssen Sie sie entweder implementieren oder eine neue Sprache auswählen.
Dies ist eine Code-Golf- Frage, daher werden die Antworten in Bytes bewertet, wobei weniger Bytes besser sind.
Tipps
Eine Möglichkeit, die Konstante zu berechnen, besteht darin, eine beliebige Zahl zu nehmen und den Cosinus wiederholt darauf anzuwenden. Da die Anzahl der Anwendungen gegen unendlich tendiert, tendiert das Ergebnis gegen den festen Kosinuspunkt.
Hier ist eine ziemlich genaue Annäherung an die Anzahl.
0.739085133215161
1: Hier nehmen wir den Kosinus im Bogenmaß
quelle
Decimal
?ÆẠȷ¡
dass es ungültig ist. Versucht Brachylog; oh nein Brachylog schwimmt nicht einmal.Antworten:
MATL ,
343019 BytesDank Sanchises 11 Bytes weniger !
Die letzten Dezimalstellen in der Ausgabe sind möglicherweise deaktiviert. Die Anzahl der korrekten Ziffern von links steigt jedoch mit der Eingabe und das Ergebnis konvergiert gegen die tatsächliche Konstante.
Probieren Sie es online!
Erläuterung
Für den Eingang n gilt ab x = 1 die Funktion
x ↦ cos ( x )
mit n- stelliger Arithmetik mit variabler Genauigkeit n- mal.
quelle
Python 3 , 58 Bytes
Probieren Sie es online!
quelle
evalf
in M : oPHP , 50 Bytes
Probieren Sie es online!
quelle
for($a=$argv[1];$a--;)$j=cos($j);echo$j;
(40 Bytes) genug ist.GNU bc-1, 30
Punktzahl enthält +1 für
-l
Flagge anbc
.Die letzte Zeile ist wichtig und notwendig.
Probieren Sie es online aus .
-l
macht 2 Dinge:c()
für cos (x)bc
hat eine willkürliche Genauigkeitsberechnung)Ich bin mir nicht ganz sicher, welche Präzision erforderlich ist. Wie es ist, berechnet dieses Programm auf 20 Dezimalstellen. Wenn eine andere Genauigkeit erforderlich ist,
scale=n;
muss zu Beginn des Programmsn
die Anzahl der Nachkommastellen eingegeben werden. Ich weiß nicht, ob ich das zu meiner Punktzahl hinzufügen soll oder nicht.Beachten Sie auch, dass bei einigen Dezimalstellen (z. B. 21, aber nicht 20) die Berechnung auf beiden Seiten der Lösung in der letzten Ziffer oszilliert. Beim Vergleich der aktuellen und vorherigen Iterationen dividiere ich beide Seiten durch 10 (
A
), um die letzte Ziffer zu löschen.quelle
Mathematica, 22 Bytes
Eingang
Ausgabe
quelle
R (+ Rmpfr), 55 Bytes
Dennis hat jetzt Rmpfr zu TIO hinzugefügt, damit dies funktioniert. einige Testfälle hinzugefügt.
Erläuterung:
Ist der Code , den ich aus schrieb diese Herausforderung zu bewerten
cos
n
mal ab1
, aber zuerst angeben ich die Präzision ich die Werte wollen in sein , indem er ein Objekt erstelltb
der Klassempfr
mit dem Wert1
und Präzisionn
,n>=2
, so dass wir mehr Präzision erhalten , wie wir entlang gehen.Probieren Sie es online!
quelle
Oktave , 42 Bytes
Probieren Sie es online!
So ziemlich ein Duplikat meiner Antwort auf "Approximate the Plastic Number" , aber etwas kürzer aufgrund entspannterer Anforderungen.
quelle
Mathematik oder Mathematica, 46 Bytes
Probieren Sie es online!
quelle
K: 6 Bytes
f/
giltf
bis zum Erreichen eines festen Punktes.quelle
Python - 89 Bytes
Verwendet das Dezimalmodul.
quelle
Perl 5, 41 Bytes
Bignum wird für die beliebige Genauigkeit benötigt. Definiert eine Funktion f, die den Cosinus rekursiv auf 0 N-mal anwendet.
TIO scheint kein Bignum zu haben, also kein Link :(
quelle
Mathematica 44 Bytes
FindRoot
verwendet standardmäßig die Newton-Methode.quelle
Python 2, 86 Bytes
Neue Version mit dem mitgelieferten Tipp.
Python 2, 105 Bytes
Verwendet die Newton-Methode und die rekursive Funktion, um den Wert zu berechnen.
x
ist der Anfangswert undn
die Rekursionsgrenze.quelle
Axiom, 174 Bytes
ungolfed und kommentiert
Ergebnisse:
Ich würde die Newton-Methode verwenden, weil sie schneller ist als die wiederholte cos (x) -Methode.
In der ersten Spalte steht die Anzahl der Ziffern und in der zweiten Spalte, wie viel Newton-Methode schneller ist als die wiederholte cos (x) -Methode. Guten Morgen
quelle