Die kurze Antwort lautet: Ja! Es kann funktionieren und ist so einfach wie das Multiplizieren des Vektors mit einer ganzen Zahl und das Nehmen des ganzzahligen Teils jeder seiner Komponenten. mtn∈ ( 0 , 1 )dm
Die längere Antwort ist, dass Ihre Intuition korrekt ist und in der Praxis gemischte Ergebnisse erzielt, abhängig von der Wahl von:
- welche Sequenz Sie wählen (Halton, Sobol, etc ..)
- die Basisparameter (zB 2,3,5, ...)
- und in geringerem Maße der Wert von .m
Ich habe jedoch kürzlich einen ausführlichen Blog-Beitrag geschrieben: "Die unvernünftige Wirksamkeit von Quasirandom-Sequenzen , wie auf einfache Weise eine offene Sequenz mit geringer Diskrepanz in beliebigen Dimensionen erstellt werden kann, ist für die Diskretisierung viel zugänglicher als bestehende vorhandene Sequenzen mit geringer Diskrepanz, wie z die Halton- und Kronecker-Sequenzen.
Der Abschnitt im Beitrag "Covering" befasst sich speziell mit Ihrer Frage der Diskretisierung der Sequenzen mit geringer Diskrepanz.
In den folgenden Bildquadraten (die einen eindeutigen ganzzahligen Gitterpunkt anzeigen) mit weniger Rot bedeutet dies eine gleichmäßigere Verteilung, da jedes rote Quadrat anzeigt, dass die Zelle keinen blauen Punkt enthält. Man kann deutlich sehen, wie selbst die Sequenz Punkte im Vergleich zu anderen zeitgenössischen Methoden verteilt.R
Die Lösung ist eine additive Wiederholungsmethode (Modulo 1), die das eindimensionale Problem verallgemeinert, dessen Lösung vom Goldenen Schnitt abhängt. Die Lösung des dimensionalen Problems hängt von einer speziellen Konstante , wobei der Wert des kleinsten positiven reellen Werts von so dass
ϕ d ϕ d x x d + 1dϕdϕdx
xd+1=x+1
Für ist , was der kanonische goldene ist.φ 1 = 1,618033989 ...d=1ϕ1=1.618033989...
Für ist , was oft als plastische Konstante bezeichnet wird und einige schöne Eigenschaften hat. Es wurde vermutet, dass dieser Wert höchstwahrscheinlich der optimale Wert für ein verwandtes zweidimensionales Problem ist [Hensley, 2002].d=2ϕ2=1.3247179572...
Jacob Rus hat eine wunderschöne Visualisierung dieser zweidimensionalen Sequenz mit geringer Diskrepanz veröffentlicht, die hier zu finden ist .
Mit dieser speziellen Konstante ist die Berechnung des ten Terms jetzt extrem einfach und schnell zu berechnen:n
R:tn=αα0+nαα(mod1),n=1,2,3,...
whereαα=(1ϕd,1ϕ2d,1ϕ3d,...1ϕdd),
Der Grund, warum dies als Wiederholungssequenz bezeichnet wird, ist natürlich, dass die obige Definition
R:tn+1=tn+αα(mod1)
In fast allen Fällen die Wahl von nichts an den Schlüsselmerkmalen. Aus Gründen der offensichtlichen Einfachheit ist die übliche Wahl. Es gibt jedoch einige Argumente in Bezug auf Symmetrie, die darauf hindeuten, dass eine bessere Wahl ist.ααα0ααα0=00αα0=1/21/2
Der Python-Code lautet
# Use Newton-Rhapson-Method
def gamma(d):
x=1.0000
for i in range(20):
x = x-(pow(x,d+1)-x-1)/((d+1)*pow(x,d)-1)
return x
d=5
n=1000
# m can be any number.
# In the diagram above it is chosen to be exactly sqrt of n,
# simply to to make the visualization more intuitive
# so that ideally each cell should have exactly one dot.
m=10
g = gamma(d)
alpha = np.zeros(d)
for j in range(d):
alpha[j] = pow(1/g,j+1) %1
z = np.zeros((n, d))
c = (np.zeros((n,d)).astype(int)
for i in range(n):
z = (0.5 + alpha*(i+1)) %1
c = (np.floor(m *z)).astype(int)
print(c)
Ich hoffe, das hilft!