Schätzung des erwarteten euklidischen Abstands zwischen zwei zufälligen Punkten auf einer Einheit $n$-Hemisphäre
Was ist der beste Ansatz, um mit Wolfram Mathematica die erwartete euklidische Entfernung (in a $(n+1)$-dimensionaler Raum) zwischen zwei Punkten, die gleichmäßig zufällig auf einer Einheit ausgewählt werden $n$- Hemi Kugel ?
Der Ansatz, an den ich denke, verwendet einen Ausdruck, dessen Länge proportional zu ist $n$, während ich einen einfacheren und eleganteren Ansatz wünschen würde.
Antworten
Verwenden Sie zum Generieren eine Normalverteilung $n$Werte und Normalize
um einen Punkt auf der Kugel zu bekommen. Stellen Sie sicher, dass die letzte Koordinate immer das gleiche Vorzeichen hat Abs
. Generieren Sie Millionen dieser Punkte und schätzen Sie den mittleren Abstand zwischen Paaren:
n = 3;
topt[p_] := MapAt[Abs, Normalize[p], -1]
points = topt /@ RandomVariate[NormalDistribution[0, 1], {1000000, n}];
distances = EuclideanDistance @@@ Partition[points, 2];
Histogram[distances]
Mean[distances]
(* 1.13137 *)
Eine andere Möglichkeit, die Abtastung durchzuführen (unter Ausnutzung der eingebauten Sphere
Funktion und RandomPoint
Funktionalität (modifiziert aus einer ähnlichen Frage zur Abtastung von der Oberfläche der Kugel)
distanceDistributionOnHalfSphere[dimensionality_, nSamples_:10^5] :=
With[{
(* take a few extra samples account for loss *)
randomPointsOnSurfaceOfNSphere = RandomPoint[Sphere[dimensionality], {4*nSamples, 2}],
(* define an operator that deletes points when either last coordinate is negative *)
upperHemisphere = DeleteCases[{{___, x_}, {___, y_}} /; (Negative[x] || Negative[y])]
},
(* apply operator to the list and compute list of distances *)
EuclideanDistance @@@ upperHemisphere @ randomPointsOnSurfaceOfNSphere
]
(* Evaluate mean of the sample *)
MeanAround /@ distanceDistributionOnHalfSphere /@ Range[10]
(Das $N=3$ Ergebnis stimmt mit @ flintys Ergebnis überein *)