Die gleichmäßigste Verteilung von Punkten auf der Kugel ist eine unglaublich wichtige Aufgabe in Mathematik, Naturwissenschaften und Computersystemen, und das Anwenden eines Fibonacci-Gitters auf die Oberfläche einer Kugel unter Verwendung derselben Projektion ist eine extrem schnelle und effiziente Näherungsmethode, um sie zu lösen. Ich werde zeigen, wie es mit geringfügigen Änderungen noch besser gemacht werden kann.
Vor einiger Zeit erschien dieser Beitrag auf der Hacker News Homepage. Die Diskussion kann hier gelesen
werden .
Einführung
Das Problem der gleichmäßigen Verteilung von Punkten auf einer Kugel hat eine sehr lange Geschichte. Dies ist eines der am besten untersuchten Probleme in der mathematischen Literatur zur sphärischen Geometrie. Es ist von entscheidender Bedeutung in vielen Bereichen der Mathematik, Physik und Chemie, einschließlich Berechnungsmethoden, Approximationstheorie, Codierungstheorie, Kristallographie, Elektrostatik, Computergrafik, Virusmorphologie und vielen anderen.
Leider ist es mit Ausnahme einiger Sonderfälle (nämlich platonischer Körper) unmöglich, Punkte auf einer Kugel perfekt zu verteilen. Darüber hinaus hängt die Lösung des Problems stark von dem Kriterium ab, anhand dessen die Einheitlichkeit bewertet wird. In der Praxis werden
viele Kriterien verwendet, darunter:
- Verpackung und Beschichtung
- Konvexe Rümpfe, Voronoi-Zellen und Delaunay-Dreiecke
- Kernel s Reis Energie
- Kubatur und Qualifikation
Es ist sehr wichtig, diesen Aspekt zu klären: Normalerweise gibt es keine einzige optimale Lösung für dieses Problem, da eine optimale Lösung, die auf einem Kriterium basiert, oft keine optimale Punkteverteilung für andere ist. Zum Beispiel werden wir auch herausfinden, dass die Verpackungsoptimierung nicht unbedingt eine optimale konvexe Hülle erzeugt und umgekehrt.
Der Kürze halber werden in diesem Beitrag nur zwei Kriterien betrachtet: der minimale Packungsabstand und das konvexe Rumpf / Delaunay-Netz (Volumen und Fläche).
In Abschnitt 1 zeigen wir, wie Sie das kanonische Fibonacci-Raster ändern können, um eine verbesserte
Verteilung der Verpackungen zu erreichen . In Abschnitt 2 zeigen wir, wie Sie das kanonische Fibonacci-Gitter ändern können, um verbesserte
Parameter für konvexe Hüllen (Volumen und Oberfläche) zu erstellen.
Abschnitt 1. Optimierung des Verpackungsabstands
Dieses Problem wird oft als
Tamms-Aufgabe zu Ehren des Botanikers Tamms bezeichnet, der nach einer Erklärung der Oberflächenstruktur von Pollenkörnern suchte. Das Verpackungskriterium erfordert, dass wir den kleinsten Abstand zwischen den Nachbarn für maximieren
N. Punkte. Also
d N = m i n i n e q j | x i - x j |
Dieser Wert nimmt mit der Geschwindigkeit ab.
1 / s q r t N. Daher ist es nützlich, den normalisierten Abstand sowie die asymptotische Grenze des normalisierten Abstands als zu bestimmen
d∗N= sqrtNdN, quad quadd∗= limN rightarrow inftyd∗N
Fibonacci-GitterEine sehr elegante Lösung modelliert die in der Natur vorkommenden Knoten, beispielsweise die Verteilung von Samen in einem Sonnenblumen- oder Tannenzapfen. Dieses Phänomen nennt man spiralförmige
Phyllotaxis . Coxeter zeigte, dass solche Strukturen einen fundamentalen Zusammenhang mit der Fibonacci-Reihe haben,
F_k = \ {1, 1, 2, 3, 5, 8, 13, ... \}F_k = \ {1, 1, 2, 3, 5, 8, 13, ... \} und der goldene Schnitt
phi=(1+ sqrt5)/2 .
In der Literatur finden sich zwei ähnliche Definitionen der Punktmenge eines sphärischen Fibonacci-Gitters. Die Quelle ist streng für definiert
N gleich einem der Mitglieder der Fibonacci-Reihe,
Fm und gut in der Zahlentheorie studiert.
ti= left( fraciFm, fraciFm−1Fm right) quad textrmfor0 leqi leqN−1
Die zweite Definition verallgemeinert die Formel auf einen beliebigen Betrag
N und wird häufiger in Berechnungen verwendet:
ti= left( fraciN, fraci phi right) quad textrmfor0 leqi leqN tag1
wo
phi= frac1+ sqrt52= limn rightarrow infty left( fracFn+1Fn right)
Unten sehen Sie ein Beispiel für dieselben Fibonacci-Gitter. Durch Transformation können Sie diese Punktmengen in Fibonacci-Spiralen verwandeln, die uns bekannt sind.
(r, theta)=( sqrtx1,2 pix2)
In ähnlicher Weise können diese Punktmengen vom Einheitsquadrat übertragen werden
[0,1]2 auf einer Kugel mit einer zylindrischen isometrischen Projektion:
(x,y) rightarrow( theta, phi): quad left( cos−1(2x−1)− pi/2,2 piy right)
( theta, phi) rechterPfeil(x,y,z): quad left( cos theta cos phi, cos theta sin phi, sin theta rechts)
Viele verschiedene Versionen von Python-Code dafür finden Sie im Stackoverflow:
Gleichmäßige Verteilung von Punkten auf einer Kugel .
Selbst trotz der Tatsache, dass sphärische Fibonacci-Mengen global nicht die beste Verteilung von Proben auf einer Kugel sind (weil ihre Lösungen nicht mit den Lösungen für platonische Körper für übereinstimmen
n=$4,6,8,12,2 ) haben sie ausgezeichnete Probenahmeeigenschaften und sind im Vergleich zu anderen, komplexeren sphärischen Probenahmeschemata sehr einfach aufzubauen.
Da die Übertragung vom Einheitsquadrat auf die Oberfläche der Kugel durch eine Projektion unter Erhaltung der Fläche erfolgt, ist zu erwarten, dass die Startpunkte bei gleichmäßiger Verteilung auch ziemlich gut auf der Oberfläche der Kugel verteilt sind. Dies bedeutet jedoch nicht, dass die Verteilung nachweislich optimal ist.
Diese Übertragung leidet unter zwei verschiedenen, aber miteinander verbundenen Problemen.
Erstens wird diese Überlagerung durchgeführt, während der Bereich und nicht der Abstand beibehalten werden. Da in unserem Fall die Bedingung darin besteht, den minimalen paarweisen Abstand zwischen Punkten zu maximieren, werden solche Bedingungen und Beziehungen nach der Projektion nicht unbedingt erfüllt sein.
Das zweite Problem ist aus praktischer Sicht am schwierigsten zu lösen: Die Überlagerung weist an jedem Pol zwei entartete Punkte auf. Betrachten Sie zwei Punkte, die sehr nahe am Pol liegen, sich jedoch in der Länge um 180 Grad unterscheiden. Auf einem einzelnen Quadrat (und auf einer zylindrischen Projektion) entsprechen sie zwei sehr weit voneinander entfernten Punkten. Wenn sie jedoch auf die Oberfläche einer Kugel gelegt werden, können sie durch einen sehr kleinen Bogen verbunden werden, der durch den Nordpol verläuft. Aufgrund dieses speziellen Problems sind viele Spiralüberlagerungen nicht optimal genug.
Die aus Gleichung 1 erhaltene sphärische Fibonacci-Helix gibt den Wert an
d∗N für alle
N , also
d∗=2 .
Mesh 1Eine häufigere Version (insbesondere auf Computersystemen), die einen besseren Wert schafft
d∗=3,09 hat die Form:
ti= left( fraci+1/2N, fraci phi right) quad textrmfor0 leqi leqN−1 tag2
Es platziert die Punkte an den Mittelpunkten der Intervalle (gemäß der Mittelpunktsregel in der quadratischen Gauß-Formel), z
n=100 Die Werte der ersten Koordinate sind wie folgt:
\ {\ frac {0,5} {100}, \ frac {1,5} {100}, \ frac {2,5} {100}, \ ldots, \ frac {97,5} {100}, \ frac {98,5} {100} , \ frac {99.5} {100} \}
Gitter 2.Der Schlüssel zur weiteren Verbesserung von Gleichung 2 ist die Erkenntnis, dass
d∗N entspricht immer dem Abstand zwischen Punkten
t0 und
t3 das sind an den Polen. Das heißt, sich zu verbessern
dN Punkte in der Nähe der Pole sollten noch weiter voneinander entfernt sein.
Wenn wir folgende Verteilung definieren:
ti( varepsilon)= left( fraci+1/2+ varepsilonN+2 varepsilon, fraci phi right) quad textrmfor ;;0 leqi leqN−1
d∗N - Kurven für verschiedene Werte.
varepsilon=0 (blau);
varepsilon= frac12 (orange);
varepsilon= frac32 (grün); und
varepsilon= frac52 (rot). Sie können das sehen
varepsilon= frac52 gibt Ergebnisse näher an asymptotischen Ergebnissen. Das heißt, mit
N>20 Der folgende einfache Ausdruck erzeugt signifikant bessere Ergebnisse.
d∗=3,29 im Vergleich zum kanonischen sphärischen Fibonacci-Gitter:
ti= left( fraci+3N+5, fraci phi right) quad textrmfor0 leqi leqN−1 tag3
Das heißt, mit
N=100 Die Werte der ersten Koordinate sind gleich:
\ {\ frac {3} {105}, \ frac {4} {105}, \ frac {5} {105}, \ ldots, \ frac {100} {105}, \ frac {101} {105} , \ frac {102} {105} \}
Abbildung 1. Unterschiedliche Werte d∗N bei verschiedenen Werten epsilon . Je höher der Wert, desto optimaler die Konfiguration. Wir sehen das epsilon simeq2.5 bietet eine nahezu optimale Lösung.Mesh 3.Wie oben erwähnt, besteht eines der schwerwiegendsten Probleme der gleichmäßigen Verteilung von Punkten auf einer Kugel darin, dass die Optimalität der Verteilung entscheidend von der verwendeten Zielfunktion abhängt. Es stellt sich heraus. dass lokale Mengen mögen
d∗N manchmal „vergeben sie Fehler fast nicht“ - ein einzelner Punkt in einer unzureichend optimalen Position kann die Bewertung der gesamten Punkteverteilung katastrophal reduzieren.
In unserem Fall unabhängig von der Größe
N Wert
D∗N normalerweise definiert durch die vier Punkte, die jedem der Pole am nächsten liegen, insbesondere
t0 und
t3 . Über dieses Gitter ist jedoch auch bekannt, dass sich das
größte Voronoi-Polygon am Pol befindet. Also versuchen zu maximieren
dN Indem wir die ursprünglichen Polarpunkte in einer Reihe teilen, vergrößern wir den Hohlraum am Pol sogar noch mehr! Daher haben wir eine Alternative zu Gitter 2 vorgestellt, die im Allgemeinen vorzuziehen ist, da sie in der Nähe der Pole keinen so großen Hohlraum aufweist.
Es ist fast identisch mit Gitter 2, weist jedoch zwei Unterschiede auf. Erstens benutzt sie
varepsilon=11/2 bei
1 leqi leqN−2 . Zweitens daneben
N−2 Der erste und der letzte Punkt befinden sich an jedem der Pole.
Also:
t0=(0,0);tn=(1,0); quadti= left( fraci+6N+11, fraci phi right) quad textrmfor1 leqi leqN−2 tag4
Eine erstaunliche Eigenschaft dieser Bauweise ist, dass sie trotz der Tatsache, dass ihre Entstehung durch den Wunsch motiviert war, Hohlräume an den Polen zu minimieren, tatsächlich den besten Wert unter allen Methoden aufweist dN und d∗ mit d∗=3,31 !Das heißt, mit
N=100 Die Werte der ersten Koordinate lauten wie folgt:
\ {0; \; \ frac {7} {111}, \ frac {8} {111}, \ frac {9} {1111}, \ ldots, \ frac {102} {111}, \ frac {103} {111}, \ frac {104} {111}; \; 1 \}
Abbildung 2. Verschiedene Gitterkonfigurationen. Das kanonische Fibonacci-Gitter links. Beachten Sie, dass obwohl das mittlere Gitter d∗N verbessert, an der Stange hat sie eine spürbare Leere. Gitter 3 hat keine Lücke an der Stange und hat den besten Wert d∗N .VergleichFür große Werte
N dieser Wert
d∗ Sehr gut vergleichbar mit anderen Methoden, zum Beispiel geodätischen Kuppeln, die auf triangulierten Projektionen von den Flächen platonischer Körper auf die Oberfläche einer Kugel basieren. Es ist nicht überraschend, dass die geodätischen Kuppeln von höchster Qualität auf der Basis des Ikosaeders oder Dodekaeders gebaut werden.
Geodätische Kuppeln auf Ikosaederbasis bei verschiedenen Werten
N .
\ begin {array} {| c | cccccccccc |} \ hline N & 12 & 42 & 92 & 162 & 252 & 362 & 492 & 642 & 812 & 1002 \\ \ hline d ^ * & 3,64 & 3,54 & 3,34 & 3,22 & 3.15 & 3.09 & 3.06 & 3.03 & 3.00 & 2.99 \\ \ hline \ end {array}
Geodätische Kuppeln auf Dodekaederbasis für verschiedene Werte
N .
\ begin {array} {| c | ccccccc |} \ hline N & 20 & 32 & 122 & 272 & 482 & 752 & 1082 \\ \ hline d ^ * & 3,19 & 3,63 & 3,16 & 2,99 & 2,90 & 2,84 & 2.81 \\ \ hline \ end {array}
Zusätzlich ein abgeschnittenes Ikosaeder, das der Form von Fulleren entspricht
C60 hat nur
d∗=3.125 .
Das heißt, mit
N>100 Das auf Gleichung 3 basierende Netz ist besser als jedes geodätische Polyeder.
Gemäß den Daten aus der ersten Quelle in der nachstehenden Referenzliste weisen einige der modernen Methoden, die normalerweise komplex sind und eine rekursive und / oder dynamische Programmierung erfordern, die folgenden Indikatoren auf.
\ begin {array} {| lr |} \ hline \ text {Gitter 1} & 3.09 \\ \ hline \ text {Maximale Determinante} & 3.19 \\ \ hline \ text {Gitter 2} & 3.28 \\ \ hline \ text {Gitter 3} & 3.31 \\ \ hline \ text {Zonale gleiche Fläche} & 3.32 \\ \ hline \ text {Coulomb} & 3.37 \\ \ hline \ text {Log Energy} & 3.37 \\ \ hline \ end { Array}
Schlussfolgerung aus Abschnitt 1Das durch Gleichung 3 erstellte Gitter 3 ist eine Modifikation des kanonischen Fibonacci-Gitters, das eine viel bessere Verpackung für die Verteilung von Punkten bietet. Also
t0=(0,0);ti= left( fraci+6N+11, fraci phi right);tN−1=(0,1); quad textrmfor1 leqi leqN−2
Abschnitt 2. Optimierung der konvexen Hülle (Delaunay-Netz)
Im vorherigen Abschnitt haben wir die Verteilung um optimiert
d∗N Diese Modifikationen verschlechtern jedoch andere Indikatoren, beispielsweise das Volumen einer konvexen Hülle (Delaunay-Netz). In diesem Abschnitt wird beschrieben, wie Sie Punkte auf einer Kugel gleichmäßig verteilen, um einen globaleren Indikator wie das Volumen einer konvexen Hülle zu optimieren (zu maximieren).
Wir bezeichnen
CN wie eine konvexe Hülle
N Punkte
epsilonN=N left( frac4 pi3− textrmVol(CN) right)
Normalisierungsfaktor enthalten
N , weil die absolute Diskrepanz mit der Geschwindigkeit abnimmt
1/N .
Verhalten
epsilonN bei verschiedenen
N ist in Abbildung 3 (blaue Linie) zu sehen.
Um die Nichtübereinstimmung der Volumina zu verringern, sollte beachtet werden, dass trotz der Verwendung von
phi , aus der Logik des Goldenen Schnitts bei
N rightarrow infty Daraus folgt nicht unbedingt, dass es der beste Wert für das Finale ist
N . Wissenschaftlich gesehen können wir sagen, dass wir den Einfluss der Korrektur von Gliedmaßen berücksichtigen müssen.
Fassen wir Gleichung 1 wie folgt zusammen:
ti= left( fraci+1/2N, fracig(N) right) quad textrmfor0 leqi leqN−1 tag4
wo wir definieren
g(n) wie
g (n) = \ begin {Fälle} 3- \ phi, & \ text {wenn $ k $ gerade ist} \\ \ phi, & \ text {wenn $ k $ ungerade ist} \ end {Fälle} \ tag {5}
wo
k= left lfloor textrmlog phi( fracn1.5) right rfloor= left lfloor frac ln(n/1.5) ln phi right rfloor
wo
lfloorx rfloor - die Funktion des Abrundens auf die nächste ganze Zahl.
Abbildung 3 zeigt, wie stark die Volumenfehlanpassung für die Hälfte der Werte optimiert ist.
N .
Der Grund dafür ist eine wenig bekannte Tatsache: alle Zahlen
x Die Befriedigung der speziellen Mobius-Transformation, ausgehend von Irrationalität, ist gleichwertig
phi .
x= fraca phi+bc phi+d, quad textrmfüralleganzenZahlena,b,c,d textrmsodass|ad−bc|=1
Daher der Grund dafür
phi und
3− phi so gut zusammenpassen, ist das
frac1 phi= frac phi+12 phi+1, quad quad frac13− phi= frac2 phi+11 phi+1
Abbildung 3. Die Nichtübereinstimmung zwischen dem Volumen der konvexen Hülle von Punkten und dem Volumen der Einheitskugel. Denken Sie daran, je kleiner es ist, desto besser. Die Abbildung zeigt, dass das Hybridmodell (orange Linie) auf basiert phi und 3− phi bietet eine bessere Punkteverteilung als das kanonische Fibonacci-Gitter (blaue Linie).Für die verbleibende Hälfte definieren wir zunächst eine Hilfsreihe
AN eine Variation der Fibonacci-Serie
A1=1,A2=4;An+2=An+1+An textrmforn=1,2,3,...
Also
AN=1,4,5,9,14,23,37,60,97,157,254,411,...
Alle Brüche dieser Reihe haben elegante kontinuierliche Brüche und konvergieren im Grenzfall zu
phi . Zum Beispiel
t _5 / t_4 = 1+ \ cfrac {1} {1+ \ cfrac {1} {1+ \ cfrac {1} {1+ \ cfrac {1} {4}}}
Jetzt können wir vollständig verallgemeinern
g(n) wie folgt:
g (N) = \ begin {Fälle} 3- \ phi, & \ text {wenn $ k $ gerade ist} \\ A_ {j + 1} / A_j, & \ text {wenn $ k $ ungerade ist, wo $ j = (k + 7) / 2 $} \ end {case} \ tag {6}
Die folgende Tabelle zeigt die Werte
g(N) für verschiedene
N .
\ begin {array} {| c | c | c | c | c | c | c | c | c |} \ hline N & 4-6 & 7-10 & 11-16 & 17-26 & 27-43 & 44- 70 & 71-114 & 115-184 & 185-300 \\ \ hline g (n) & 3- \ phi & \ frac {23} {14} & 3- \ phi & \ frac {37} {23} & 3- \ phi & \ frac {60} {37} & 3- \ phi & \ frac {97} {60} & 3- \ phi \\ \ hline \ end {array}
Abbildung 4 zeigt, dass diese neue Verteilung in Bezug auf das Volumen der konvexen Hülle für alle Werte besser ist als das kanonische Gitter
nAbbildung 4. Die Nichtübereinstimmung zwischen dem Volumen der konvexen Hülle und dem Volumen der Einheitskugel. Je niedriger der Wert, desto besser. Dies zeigt uns, dass die vorgeschlagene neue Methode (grüne Linie) ständig eine bessere Verteilung liefert als das kanonische Fibonacci-Gitter (blaue Linie).Abbildung 5. Visueller Vergleich des kanonischen Netzes (links) mit dem neuen modifizierten Netz (rechts) mit n = 35 und n = 150. Optisch sind die Unterschiede kaum wahrnehmbar. Unter Bedingungen, die maximale Effizienz erfordern, bietet die modifizierte Version (rechts) eine kleine, aber quantifizierbare Verbesserung sowohl des Volumens als auch der Oberfläche der konvexen Hülle.Seltsamerweise ist diese Verteilung ebenfalls unbedeutend, verringert jedoch stetig die Fehlanpassung zwischen der Oberfläche der konvexen Hülle und der Oberfläche einer einzelnen Kugel. Dies ist in Abbildung 6 dargestellt.
Abbildung 5. Normalisierte Nichtübereinstimmung von Bereichen zwischen der Oberfläche einer konvexen Hülle (Delaunay-Netz) und der Oberfläche einer einzelnen Kugel. Je niedriger der Wert, desto besser. Dies zeigt, dass die vorgeschlagene neue Modifikation (grüne Punkte) eine kleine, aber konstante Abnahme des Oberflächenunterschieds im Vergleich zum kanonischen Fibonacci-Gitter (blaue Punkte) zeigt.Schlussfolgerung aus Abschnitt 2Das Gitter, das Gleichung 6 entspricht, ist eine Modifikation des kanonischen Fibonacci-Gitters, wodurch eine viel bessere Verteilung der Punkte basierend auf dem Volumen und der Oberfläche der konvexen Hülle (Delaunay-Gitter) erzeugt wird.
Quellen