Philipp Gressly Freimann - Feb. 2018
Ulam Spirale | Philipps-Stern - 2018 - St. Moritz |
Beim Betrachten der Ulam Spirale (Stanislav Ulam) fällt auf, dass die Zahlen in
einem Rechteck bzw. in einem Quadrat angeordnet sind. Zahlen sind also nicht
notwendigerweise weiter weg vom Ursprung, wenn sie größer
sind.
Dieser Umstand kann gebrochen werden, indem Zahlen auf einer
Archimedischen
Spirale aber immer noch in quadratischen Kästchen
(Häuschen) aufgefädelt werden.
Dazu wird auch im Nullpunkt begonnen, aber so spiralförmig nach
außen gefahren, dass eine größere Zahl niemals den kleineren
euklidischen Abstand zum Mittelpunkt hat, als eine kleinere
Zahl.
Beim Betrachten der ersten Ergebnisse, scheint nichts spezielles aufzufallen. Die Primzahlen im Bild oben rechts sind gelb dargestellt. Wie bei Primzahlen zu erwarten, lümmeln sie so ziemlich zufällig in der Gegend herum. Dies war auch zu erwarten, denn einige Abstände (wie z. B. Der Abstand fünf) kommen wegen den Pythagoräischen Zahlentrippeln mehrfach vor und machen so jegliche Symmetrie kaputt.
Beim untersuchen von mehreren Millionen Zahlen, hat sich jedoch ein erstaunliches Muster gezeigt:
Dabei (Bild) sind die gelben Punkte Primzahlen. Die violett
bis blauen Punkte haben mehr als 2 Teiler. Je mehr Teiler eine
Zahl hat, umso blauer wurde sie dargestellt.
Auffallend sind die acht radialen Anhäufungen (aber gleichzeitig
auch Ausdünnungen) von Primzahlen bei
0⁰, 45⁰, 90⁰, 135⁰, 180⁰, 225⁰, 270⁰ und 315⁰.
Wie die originale Ulam-Spirale ist auch der Philipps-Stern invariant gegenüber der Startzahl. Es scheint hier eine Anhäufung von Vielfachen vor den eben benannten Winkeln zu geben. Mit vor meine ich die mathematisch positive Richtung; also um ca. 345-355⁰, 30-40⁰, etc.
Begonnen wird beim Philipps-Stern in der Mitte mit dem Wert
Null oder Eins (die folgende Skizze beginnt bei 0).
Beachte die Zahlen 1, 2, 3 und 4, welche den Abstand 1 zum
Mittelpunkt aufweisen. Die nächsten Zahlen (5, 6, 7 und 8)
haben den Abstand Wurzel aus 2 zum Mittelpunkt. Es folgen 9,
10, 11 und 12 mit Abstand 2 und so weiter.
Ist ein Abstand aufgebraucht, so wird nicht nur der
nächste Abstand gesucht, sondern es wird im Gegenuhrzeigersinn
(mathematisch positive Richtung) gleich mit der nächsten Zahl
weitergemacht. Dadurch entsteht eine Spirale, die der Idee der
archimedischen Spirale nahe kommt.
Legende: In der Mitte beginnt dieser Philipps-Stern mit der Zahl Null. Die Primzahlen sind grün markiert. Die kleinen Punkte in den anderen Feldern zeigen die Anzahl Teiler - so hat z. B. die Zahl 21 vier Teiler.
Mein Sohn Valentin hat mich darauf aufmerksam gemacht, ich solle mal die Vielfachen von zwei betrachten. Gerhard Wanner hat mir vorgeschlagen, einmal anstelle von Primzahlen eine Zufallsverteilung von 1/ln(n) zu verwenden. Ich habe im folgenden einige Beispiele mit Radius 370 durchgeführt. Dies entspricht etwa 430'000 Zahlen.
Zuerst (Bild Oben) zeige ich nochmals den Stern und verwende hier die Selben Farben und Größen, wie in den folgenden Vergleichsbildern.
Obiges Bild enthält keinerlei Symmetrien. Einzig ist es im linken bereich etwas unscharf, dies kommt jedoch daher, dass die "Pixel" (picture elements) im Bildschirm teilweise auf- bzw abgerundet wurden und somit "verschwimmen". Die Zahlen wurden wie folgt als "zufällig Prim" gewählt:
invln: real; invln := 1.0 / ln(value); "zufällig prim" := random(0.0, 1.0) < invln;
Wie zu erwarten, zeigt sich keine Struktur, außer, dass in der Mitte die Zahlen gehäuft auftreten. Die Zahlen sind zwar etwa gleich häufig wie Primzahlen, jedoch an ganz anderen Stellen.
In obigem Bild habe ich lediglich die Vielfachen von zwei weggefiltert. Hier ist der Stern schon deutlich sichtbar. Es scheint so zu sein, dass die Vielfachen von zwei den Löwenanteil am Aussehen des Sterns beitragen. Wenn man hier genau hinschaut, sieht man auch bei Vielfachen von ca. 25⁰ deutliche schmale Strahlen. Diese verblassen, je mehr Teiler wir wegfiltern:
Im obigen Bild habe ich Vielfache von 2 und 3 weggefiltert. Weiter geht es mit zwei weiteren Vielfachen:
Obiges Bild dünnt noch weiter aus, hier habe ich Vielfache von 2, 3, 5 und 7 weggefiltert.
Eine letzte Betrachtung kam von Gerhard Wanner: Ich solle mal alle Vielfachen von zwei wegfiltern, bei allen anderen Zahlen jedoch zufällig wegfiltern aber mit der Wahrscheinlichkeit 1/ln(n). Es scheint nun tatsächlich so, dass die Vielfachen von zwei den Hauptanteil darstellen. Vielfache von 3, 5, 7 haben keine weitere Struktur hineingebracht:
Vergleichen wir nun obiges Bild (Vielfache von zwei wegfiltern und alle anderen Zahlen zufallsverteilt) mit dem original (unten):
Tatsächlich scheint es sich nicht um eine Struktur der Primzahlen, sondern um eine Struktur der Anordnung der Vielfachen von zwei zu halten. Dies hat mich auf die Idee gebracht einmal nur die Vielfachen von 3 wegzufiltern:
Das obige Resultat (obiges Bild) zeigt deutlich eine zufällige Verteilung, wenn ich lediglich die Vielfachen von 3 wegfiltere. Eine Überlagerung mit dem Wegfiltern von Vielfachen von 2 ergibt natürlicherweise das erwartete, bereits beschriebene Bild:
Das stärkste Bild eines Stern hatten wir also beim Wegfiltern von Vielfachen von 2. Das obige Bild filtert nun Vielfache von zwei und drei weg. Ich habe viele Primzahlen einzeln weggefiltert, aber alle Bilder ergeben keinerlei Struktur. Somit stelle ich die Hypothese auf: Einzig die Vielfachen von zwei tragen zum Stern bei.
Eine spannende Idee kommt wieder von meinem Sohn Valentin: Ich solle im Philipps-Stern nur ungerade Zahlen eintragen und danach anschauen, ob nicht etwa die geraden Zahlen den Löwenanteil am Muster ausmachen:
In obigem Bild kommen also nur ungerade Zahlen vor, dennoch wurden nur Primzahlen markiert. Das Stern-Muster scheint gänzlich verschwunden. Dies ist ein weiterer Hinweis dafür, dass nur die geraden Zahlen den Stern ausmachen. Dies ist umso klarer, da im gegebenen euklidischen Abstand auf einem quadratischen Raster immer eine gerade Anzahl Punkte liegen (sicher Vielfache von vier).
Eine weitere Frage stellt sich, wie sich das Muster ändert, wenn wir anstelle von 1 (Eins) in der Mitte mit 0 (Null) beginnen. In der ursprünglichen Handskizze (oben) hatte ich ja mit 0 begonnen, einfach für einen Vergleich mit der Ulam-Spirale hatte ich die Eins genommen. Zum Glück spielt das keine entscheidende Rolle auf das Gesamtbild. Es zeigt jedoch einmal mehr, dass nur die geraden Zahlen zum Muster beitragen. Jeder Umdrehung in Philipps-Stern benötigt eine gerade Anzahl Punkte. Somit wird sich das Muster einfach umdrehen. Dies zeigt sich in den folgenden beiden Bildern, wo ich zunächst mit Eins und anschließend mit Null im Zentrum begann. Zunächst die Eins:
Bild oben: Starte mit 1 in der Mitte.
Nun starte ich in der Mitte mit Null:
Bild oben: Starte mit 0 in der Mitte.
Deutlich zu erkennen: Wenn im Zentrum mit 1 gestartet wird, sind die Primzahlen immer nach ("nach" im mathematisch positiven Sinne) den Diagonalen gehäuft; Wenn im Zentrum hingegen mit einer geraden Zahl gestartet wird, so sind die Primzahlen vor den Diagonalen häufiger. Ein weiterer Hinweis, dass lediglich die geraden Zahlen zum Muster beitragen.
Natürlich müssen wir Philipps-Stern auch mit der original Ulam-Spirale vergleichen:
In obigem Bild Ulams original Spirale, welche in der Mitte mit eins beginnt und im Gegenuhrzeigersinn alle zahlen im Rechteck aufreiht. Typisch sind Diagonale mit Anhäufungen von Primzahlen.
Wenn wir in der Ulam Spirale einmal nur gerade Zahlen wegstreichen, ist dies gänzlich uninteressant:
Obiges Bild wechselt strikt zwischen "prim" und "gerade" ab. Spannender vielleicht die Vielfachen von 3?
In obigem Bild wurden also nur die Teiler von 3 herausgefiltert. Auch dies ist noch sehr symmetrisch.
Natürlich haben wir auch mal Vielfache von 2 und 3 gleichzeitig herausgefiltert:
Auch dies ergibt ein reguläres Muster, was alleine durch die Anordnung erklärbar ist.
Schwieriger wird die Erklärung, wenn wir Vielfache von 2, 3, 5 und 7 wegfiltern:
Beim Wegfiltern von Vielfachen von 2, 3, 5 und 7 ergibt sich nun ein deutliches Muster von Diagonalen Linien. Jedes spätere Vielfache wird also aus diesen Diagonalen "löcher" herausstanzen.
Wenn wir nun das Muster nehmen, wo alle Vielfachen von 2, 3, 5 und 7 weggefiltert sind, so stellt sich die Frage, was passiert, wenn wir nun weiter Primzahlen herausfiltern. Natürlich erhalten wir dann den Ulam-Stern. So habe ich mir erlaubt, Zahlen herauszufiltern, welche die selbe Wahrscheinlichkeitsverteilung wie Primzahlen aufweisen:
Und siehe da, die Diagonalen sind verschwunden. Sind sie das? Wer ganz flach über das Bild in Diagonalenrichtung schaut, wird bemerken, dass einige Diagonalenteile noch nicht ganz aufgelöst sind...
Wir haben gesehen, dass die Anordnung der Zahlen auf einem Rechteck (Ulam-Spirale) oder mit euklidischem Abstand (Philipps-Stern) eine wesentliche Rolle auf das Muster der Primzahlverteilung hat.
Wo bei Philipps-Stern die Vielfachen von 2 den Wesentlichen Ausschlag auf das Muster geben, so liefert bei Ulams Spirale das Wegfiltern von Vielfachen von 2, 3, 5 deutliche durchgehende Diagonalen welche lediglich an den 45⁰-Winkeln des Koordinatensystems Unregelmäßigkeiten aufweisen.
Das Wegfiltern von weiteren Vielfachen kann jedoch nur aus diesen Diagonalen Punkte entfernen, denn daneben sind ja schon von Anfang an weniger Punkte vorhanden.
Um die Ulam-Spirale zu "entzaubern", dachten wir (insb. Gerhard Wanner) an ein Hexagonales Muster. Zur hexagonalen Anordnung wurden bereits Tests gemacht: hexnet.org Es scheint also, als sei die Ulam-Spirale vorwiegend eine art optischer Täuschung, die nicht dadurch zustande kommt, dass auf gewissen Linien speziell mehr Primzaheln vorhanden wären, als dadurch, dass durch die regelmäßigkeit der teiler eben gerade nicht Primzahlen auf parallelen Linien "weggefiltert" werden.
Der Programmcode wurde in Java geschrieben und es hat mich einiges gekostet, den Code effizient zu gestalten. Nicht, weil Java eine langsame Sprache ist, sondern eher, weil ich für jede Zahl prüfe, wie viele Teiler sie hat.
Um die Anzahl einer Zahl Teiler zu ermitteln, gibt es diverse rasche Methoden. Wenn ich jedoch von jeder Zahl ihre Teiler benötige, so kann ich einfach das Primzahlsieb des Eratosthenes erweitern. Dazu habe ich zunächst alle Zahlen in ein Feld (Array) eingefüllt und zunächst mal wie folgt initialisiert (denn zwei Teiler haben ja alle Zahlen, mit Ausnahme von 0 und 1, welche beide aber hier keine Rolle spielen):
0 1 2 3 4 5 6 7 8 9 10 11 12 13 ... 0 1 2 2 2 2 2 2 2 2 2 2 2 2 ...
Danach habe ich bei allen Vielfachen von zwei eins dazugezählt ...
0 1 2 3 4 5 6 7 8 9 10 11 12 13 ... 0 1 2 2 3 2 3 2 3 2 3 2 3 2 ...
... danach bei allen Vielfachen von 3 je eins dazugerechnet...
0 1 2 3 4 5 6 7 8 9 10 11 12 13 ... 0 1 2 2 3 2 4 2 3 3 3 2 4 2 ...
... am Ende steht im Array an jeder Stelle die Anzahl Teiler der entsprechenden Indizes:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 ... 0 1 2 2 3 2 4 2 4 3 4 2 5 3 ...
Dies dauert zwar etwas länger als das Primzahlsieb, doch so erhalte ich automatisch die Anzahl Teiler und kann so a) sofort sehen ob eine Zahl prim ist (sie hat 2 Teiler) und b) ich kann den Stern so kolorieren, dass ich die Zahlen anhand ihrer Teilerzahl in einem Verlauf einfärbe.
Viele Hilfsvariable kennzeichnen dieses Programm. Hier jedoch der wesentliche Ausschnitt, der zeigt, wie die Spirale aufgebaut wird:
ArrayListsortiert = new ArrayList (quadratseite*quadratseite); for(Zelle[] zArr: quadrat) { for(Zelle z: zArr) { sortiert.add(z); } } ZellenComparator zc = new ZellenComparator(); sortiert.sort(zc); double aktWinkel = 0.0; int nextAbst = 0 ; int nextValue = this.startZahl; int pruefeAb = 0; while(nextAbst >= 0 && nextAbst < kleinsterAbstandAusserhalb()) { ArrayList aktListe; aktListe = listeMitGegebenemAbstand(sortiert, nextAbst, pruefeAb); pruefeAb = pruefeAb + aktListe.size(); sortByWinkel(aktListe, aktWinkel); for(Zelle z: aktListe) { z.setValue(nextValue++); if(z.anzahlTeiler() > maxTeilerzahl) maxTeilerzahl = z.anzahlTeiler(); aktWinkel = z.winkel(); } nextAbst = naechsterAbstand(sortiert, nextAbst, pruefeAb); }
Bei Fragen und Anregungen bitte mich gleich "An Philipp" kontaktieren.