- berechnet Collatz Folgen und collatzähnliche Folgen
- Ausgabe in CSV Format in Datei
- zwei Ausgabevarianten (vollständig und aggregiert)
- Optionen und Parameter über Konsoleneingabe konfigurierbar
Update 15.05.11: Version 0.5.
Update 14.05.11: Version 0.4.
Update 08.05.11: Windows Version hinzugefügt + Version 0.3.
Sourceforge Project (Download + SVN):
https://sourceforge.net/projects/collatztool/
Download:
Source:
collatz_0.5_src.zip
Windows 32bit:
collatz_0.5_win32bin.zip
(Kompiliert mit gcc 4.5.0, mingw32)
R Skripte:
collatz_r_scripts.zip
Aus Collatz Problem Bilder |
Bilder der visualisierten Daten auf picasa
Ein Artikel auf matheplanet erinnerte mich wieder an ein altes Problem: die Collatz-Folge und die bisher noch ungelöste Frage, ob sie für jede Zahl irgendwann wieder bei Eins terminiert. Siehe auch im Wiki-Artikel zum Collatz-Problem.
Da ich ohnehin mal nach einer Möglichkeit gesucht hatte, mit beliebigen natürlichen Zahlen zu rechnen, fand ich nun etwas Zeit, mal das ganze anhand des Collatz-Problems umzusetzen. Denkbar einfach eigentlich, wenn man folgende Bibliothek verwendet:
http://sourceforge.net/projects/cpp-bigint/
(GPL)
Man kann das Collatz-Problem ein wenig modifizieren und erneut die Frage stellen, ob diese für eine beliebige Zahl terminiert oder in einem Zyklus landet. Statt mit dem Faktor 3 kann man auch 5 oder 7 oder ... nehmen.
Die Zahlen werden jedoch schnell recht groß, sodass die Integer Datentypen hinfällig sind. Zum Experimentieren hab ich also mal ein Mini C++ Programm geschrieben, das obige Bibliothek verwendet.
Beispiel mit Faktor 7 und Startzahl 7. Die Anzahl der Stellen wächst nahezu linear (entspricht logarithmischer Skalierung der Zahlen).
Bild 1 in Gnuplot
Bild 2 in R spaßeshalber mit Regressionsgeraden
--
Inzwischen hab ich das Programm noch erweitert, sodass per Konsole die Optionen eingegeben werden können.
collatz tool (2011/04/28) - License GPL v2
OPTIONS:
-f factor - collatz factor (3)
-s startnumber - number where to start (23)
-m maxloops - maximum of loops (10000)
-o output - output file where all the numbers and digits will be saved ("output.csv")
Eine Ausgabe:
./collatz -f 7 -m 1000 -s 7 -o "myoutput.csv"
Time: 605 ms
Finished!
Startnumber: 7 Factor: 7
Last number:
165059775843459228273519944627021462143091242535195009952629545650013760819089 (Length: 78)
1000 iterations done (of max. 1000).
Output successfully written to myoutput.csv
Der QuellCode kann im Folgenden heruntergeladen werden. Die BigInteger Bibliothek ist mit enthalten. Die GPL Lizenz ist dabei zu berücksichtigen.
Anbei die einfache sowie erweiterte Version und die gnuplot und R Dateien, wen es interessiert.
Download:
Source:
collatz_0.5_src.zip
Windows 32bit:
collatz_0.5_win32bin.zip
(Kompiliert mit gcc 4.5.0, mingw32)
R Skripte:
collatz_r_scripts.zip
Veraltet:
Windows 32bit:
collatz_0.3_win32bin.zip
collatz_0.3_src_vsproject.zip
Linux Source:
collatz_0.1.tar.bz2
collatz_0.3.tar.gz
gnuplot_r.zip
Weitere Artikel zu Collatz:
http://11235813tdd.blogspot.com/2011/05/collatz-folge-fortsetzung.html
http://11235813tdd.blogspot.com/2011/05/collatz-folge-fortsetzung-2.html
http://11235813tdd.blogspot.com/2011/06/collatz-vermutung-weiterhin-nur-eine.html
Keine Kommentare:
Kommentar veröffentlichen