장치의 두 임의 지점 사이의 예상 거리를 추정합니다. $n$-sphere [중복]

Nov 21 2020

Wolfram Mathematica를 사용하여 예상되는 유클리드 거리를 추정하는 가장 좋은 방법은 무엇입니까? $(n+1)$단위에서 무작위로 균일하게 선택된 두 점 사이의 차원 공간 $n$-구체? 내가 염두에 둔 접근 방식은 길이가 비례하는 표현식을 사용합니다.$n$, 나는 더 간단하고 우아한 접근 방식을 원합니다.

답변

3 Roman Nov 21 2020 at 23:13

정확한 답은 아니지만 정확한 답을 확인하는 몬테카를로 방식입니다.

유닛에 무작위 포인트 생성 $n$-구체:

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

임의의 지점 사이의 평균 거리 측정 $P_0$ 그리고 유닛의 또 다른 무작위 포인트 $n$-스피어, 평균 이상 $m$ 무작위 포인트 :

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

다른 값을 시도하십시오. $n$:

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

결과는 1입니다.

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

이것은 @flinty의 결과와 일치합니다. $4/\pi$.

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

이것은 @flinty의 결과와 일치합니다. $4/3$.

더 많은 가치 :

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}    *)

최신 정보

정확한 답은

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

대형 $n$ 따라서 평균 거리는 대략

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

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

에 대한 $n=3$:

PDF는 $f(d) = d/2$또는 Mathematica에서 TriangularDistribution[{0, 2}, 2]-경사로 모양의 분포. 수치 적으로 테스트 할 수 있고$p$-값이 약 0.31이므로 적합합니다.

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}]]

예상되는 거리입니다 Mean[testdist]준다$4/3$. 또는 통합으로 직접 수행 할 수 있습니다.

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


에 대한 $n=2$:

원을 중심으로 적분하여 평균 1 점 고정을 찾을 수 있습니다.

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

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

RandomPoint임의의 Region정의 에서 샘플링하는 데 사용할 수 있으며 Sphere단위 구를$R^n$(기하학적 영역 및 그래픽 기본 요소 일 수 있음). 따라서 @flinty의 원래 솔루션은 임의의 차원 수로 일반화 할 수 있습니다. 이러한 유형의 접근 방식을 사용하면 문제에 대해 많이 알 필요가 없습니다 (@Roman의 솔루션에서와 같이).

이를 추정하는 Monte Carlo 기반 방법은 다음과 같습니다.

(*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]

이것은 위에서 언급 한 것과 동일한 결과를 산출합니다.

또한 반구 거리에 대한 주석 스레드의 후속 질문을 구현하기 위해 a Sphere와 a 를 결합하는 영역을 생성하는 것이 더 쉬울 수도 HalfPlane있지만, 이에 대해 충분히 알지 못합니다.$n>3$ 그것을 정확하게 구현하는 차원 기하학 ....