Schätzung des erwarteten euklidischen Abstands zwischen zwei zufälligen Punkten auf einer Einheit $n$-Hemisphäre

Nov 22 2020

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

5 flinty Nov 22 2020 at 00:45

Verwenden Sie zum Generieren eine Normalverteilung $n$Werte und Normalizeum 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 *)
2 JoshuaSchrier Nov 23 2020 at 10:02

Eine andere Möglichkeit, die Abtastung durchzuführen (unter Ausnutzung der eingebauten SphereFunktion und RandomPointFunktionalitä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 *)