Schätzen Sie den erwarteten Abstand zwischen zwei zufälligen Punkten auf der Einheit $n$-Kugel [Duplikat]

Nov 21 2020

Was ist der beste Ansatz, um mit Wolfram Mathematica die erwartete euklidische Entfernung in a zu schätzen? $(n+1)$-dimensionaler Raum zwischen zwei Punkten, die gleichmäßig zufällig auf der Einheit ausgewählt werden $n$-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

3 Roman Nov 21 2020 at 23:13

Keine genaue Antwort, sondern eine Monte-Carlo-Methode, um die genauen Antworten zu überprüfen.

Generieren Sie einen zufälligen Punkt auf der Einheit $n$-Kugel:

P[n_Integer?Positive] := Normalize[RandomVariate[NormalDistribution[], n]]

Messen Sie den mittleren Abstand zwischen einem zufälligen Punkt $P_0$ und ein weiterer zufälliger Punkt auf der Einheit $n$-Kugel durch Mittelung über $m$ zufällige Punkte:

M[n_Integer?Positive, m_Integer?Positive] := With[{P0 = P[n]},
    Mean[Table[Norm[P[n] - P0], {m}]]]

Versuchen Sie es mit verschiedenen Werten von $n$::

M[1, 10^6]
(*    0.998648    *)

Das Ergebnis ist 1.

M[2, 10^6]
(*    1.27374    *)

Dies entspricht dem Ergebnis von @ flinty von $4/\pi$.

M[3, 10^6]
(*    1.33315    *)

Dies entspricht dem Ergebnis von @ flinty von $4/3$.

Weitere Werte:

Table[M[n, 10^6], {n, 1, 10}]
(*    {0.998648, 1.27374, 1.33315, 1.35903, 1.37166,
       1.37969, 1.38504, 1.38929, 1.39232, 1.39459}    *)

Aktualisieren

Ich denke die genaue Antwort ist

d[n_] = 2^(n-1)*Gamma[n/2]^2/(Sqrt[π]*Gamma[n-1/2])

Für große $n$ Der mittlere Abstand beträgt daher ungefähr

Series[d[n], {n, ∞, 1}]

(*    Sqrt[2] - 1/(4 Sqrt[2] n) + O(1/n)^2    *)
2 flinty Nov 21 2020 at 22:21

Zum $n=3$::

Das PDF ist $f(d) = d/2$oder in Mathematica TriangularDistribution[{0, 2}, 2]- eine rampenförmige Verteilung. Wir können dies numerisch testen und bekommen ein High$p$-Wert von ungefähr 0,31, also passt es gut:

points = RandomPoint[Sphere[], {1000000, 2}];
distances = EuclideanDistance @@@ points;
testdist = TriangularDistribution[{0, 2}, 2];
DistributionFitTest[distances, TriangularDistribution[{0, 2}, 2]]
Show[Histogram[distances, 1000, "PDF"], 
 Plot[PDF[testdist, x], {x, 0, 2}], Plot[d/2, {d, 0, 2}]]

Die erwartete Entfernung ist Mean[testdist]die, die gibt$4/3$. Oder Sie können dies selbst als integraler Bestandteil tun

$$ \int_{0}^{2} x\cdot\frac{x}{2} dx = \frac{4}{3} $$


Zum $n=2$::

Sie können um den Kreis herum integrieren, um den Durchschnitt zu finden, der einen Punkt festhält.

Integrate[
  EuclideanDistance[{0, 1}, {Cos[θ], Sin[θ]}],
  {θ, 0, 2 π}]/(2 π)

(* result: 4/Pi *)
1 JoshuaSchrier Nov 22 2020 at 01:09

RandomPointkann verwendet werden, um aus beliebigen RegionDefinitionen abzutasten, und Spherebeschreibt die Einheitskugel in$R^n$(Es kann sowohl ein geometrischer Bereich als auch ein Grafikprimitiv sein). Die ursprüngliche Lösung von @ flinty kann also auf eine beliebige Anzahl von Dimensionen verallgemeinert werden. Mit diesem Ansatz müssen Sie nicht viel über das Problem wissen (wie in der Lösung von @ Roman).

Eine Monte-Carlo-basierte Methode zur Schätzung kann folgendermaßen aussehen:

(*sample Euclidean distances of pairs of points*)
distanceDistributionOnSphere[dimensionality_, nSamples_ : 10^5] := 
 With[
  {randomPointsOnSurfaceOfNSphere = RandomPoint[Sphere[dimensionality], {nSamples, 2}]},
  EuclideanDistance @@@ randomPointsOnSurfaceOfNSphere]

(*Evaluate mean of the sample*)
MeanAround /@ distanceDistributionOnSphere /@ Range[10]

Dies ergibt die gleichen Ergebnisse wie oben angegeben.

Es kann auch einfacher sein, eine Region zu generieren, die a Spheremit a kombiniert HalfPlane, um die nachfolgende Frage im Kommentarthread über Hemisphärenabstände zu implementieren, aber ich weiß nicht genug darüber$n>3$ Maßgeometrie, um das richtig umzusetzen ....