Oszacuj spodziewaną odległość między dwoma losowymi punktami na urządzeniu $n$-kula [duplikat]
Jakie jest najlepsze podejście do oszacowania, z Wolframem Mathematica, oczekiwanej odległości euklidesowej w a $(n+1)$-wymiarowa przestrzeń między dwoma punktami wybranymi jednakowo losowo na jednostce $n$-kula? Podejście, które mam na myśli, wykorzystuje wyrażenie, którego długość jest proporcjonalna do$n$, podczas gdy chciałbym prostszego i bardziej eleganckiego podejścia.
Odpowiedzi
Nie jest to dokładna odpowiedź, ale sposób sprawdzenia dokładnych odpowiedzi metodą Monte Carlo.
Wygeneruj losowy punkt na jednostce $n$-kula:
P[n_Integer?Positive] := Normalize[RandomVariate[NormalDistribution[], n]]
Zmierz średnią odległość między przypadkowym punktem $P_0$ i kolejny losowy punkt na jednostce $n$-kula, uśredniając ponad $m$ losowe punkty:
M[n_Integer?Positive, m_Integer?Positive] := With[{P0 = P[n]},
Mean[Table[Norm[P[n] - P0], {m}]]]
Wypróbuj różne wartości $n$:
M[1, 10^6]
(* 0.998648 *)
Wynik to 1.
M[2, 10^6]
(* 1.27374 *)
To pasuje do wyniku @ flinty o wartości $4/\pi$.
M[3, 10^6]
(* 1.33315 *)
To pasuje do wyniku @ flinty o wartości $4/3$.
Więcej wartości:
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} *)

Aktualizacja
Myślę, że dokładna odpowiedź brzmi
d[n_] = 2^(n-1)*Gamma[n/2]^2/(Sqrt[π]*Gamma[n-1/2])
Dla dużych $n$ średnia odległość jest zatem w przybliżeniu
Series[d[n], {n, ∞, 1}]
(* Sqrt[2] - 1/(4 Sqrt[2] n) + O(1/n)^2 *)
Dla $n=3$:
Plik PDF jest $f(d) = d/2$lub w Mathematica TriangularDistribution[{0, 2}, 2]
- rozkład w kształcie rampy. Możemy to przetestować numerycznie i otrzymamy wysoki$p$-wartość około 0,31, więc dobrze pasuje:
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}]]

Oczekiwana odległość jest tym, Mean[testdist]
co daje$4/3$. Lub możesz to zrobić samodzielnie jako integralną część
$$ \int_{0}^{2} x\cdot\frac{x}{2} dx = \frac{4}{3} $$
Dla $n=2$:
Możesz zintegrować wokół koła, aby znaleźć średnią utrzymującą jeden punkt.
Integrate[
EuclideanDistance[{0, 1}, {Cos[θ], Sin[θ]}],
{θ, 0, 2 π}]/(2 π)
(* result: 4/Pi *)
RandomPoint
może służyć do próbkowania z dowolnych Region
definicji i Sphere
opisuje sfery jednostek w$R^n$(może to być zarówno region geometryczny, jak i prymityw graficzny). Oryginalne rozwiązanie @ flinty można uogólnić na dowolną liczbę wymiarów. Użycie tego typu podejścia pozwala uniknąć konieczności bardzo dużej wiedzy o problemie (jak w rozwiązaniu @ Roman).
Sposób oszacowania tego w oparciu o metodę Monte Carlo może wyglądać następująco:
(*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]
Daje to takie same wyniki, jak opisano powyżej.
Może też ułatwić generowanie regionu łączącego a Sphere
z a HalfPlane
w celu realizacji kolejnego pytania w wątku komentarza o odległościach półkul, ale nie wiem wystarczająco dużo o$n>3$ geometria wymiarowa, aby poprawnie to zaimplementować ....