Średnia odległość dwóch punktów w jednostkowym hiperszerze n-wymiarowym


13

Łatwym sposobem zrozumienia jednostki n-wymiarowej hipersześcianu jest rozważenie obszaru przestrzeni w n wymiarach, który można uzyskać, jeśli każdy komponent współrzędnej leży w [0, 1]. Tak więc dla jednego wymiaru jest to odcinek linii od 0 do 1, dla dwóch wymiarów jest to kwadrat z narożnikami (0, 0) i (1, 1) itd.

Napisz program lub funkcję, która dająca n zwraca średnią odległość euklidesową dwóch równomiernie losowo wybranych punktów z hipersześcianu n-wymiarowego. Twoja odpowiedź musi mieścić się w zakresie 10–6 rzeczywistej wartości. Jest ok, jeśli twoja odpowiedź przepełnia natywny typ zmiennoprzecinkowy twojego języka dla dużej liczby n.

Losowe wybranie „dużej” liczby punktów i obliczenie średniej nie gwarantuje takiej dokładności.

Przykłady:

1 → 0,33333333333 ...
2 → 0,5214054331 ...
3 → 0,6667071822 ...
4 → 0,7776656535 ...
5 → 0,8785309152 ...
6 → 0,9689420830 ...
7 → 1,0515838734 ...
8 → 1.1281653402 ...

Dane pozyskane z MathWorld .

To jest , wygrana o najniższej liczbie bajtów.


Powtórzono kryterium zwycięstwa w edycji.
Magic Octopus Urn

Żeby było jasne: odległość odnosi się do odległości euklidesowej, tak?
Dennis

3
@carusocomputing Jaki jest sens wyzwania, jeśli chcesz, żebym go rozwiązał?
orlp

4
@orlp rejestruje mój sprzeciw wobec wyzwania, które jest zagadką matematyczną, dopóki ktoś nie zrozumie matematyki, a następnie staje się zagadką programistyczną, gdy wszyscy kopiują formułę w różnych językach. Muszę zadać na ten temat meta pytanie.
Sparr

1
Kiedy mówisz o 5 cyfrach dokładności, czy masz na myśli przedział od 1e-5, czy też oszacowanie 1,500000000000001 byłoby błędne, gdy wynik powinien wynosić 1,499999999999999?
xnor

Odpowiedzi:


5

Mathematica, 68 bajtów

NIntegrate[(1-((E^-u^2+u*Erf@u√π-1)/u^2)^#)/u^2,{u,0,∞}]/√π&

Wdrożenie formuły za pomocą NIntegrateprzybliżenia jej wartości.

Wizerunek


Pokonaj mnie o 58 sekund :(
JungHwan Min

Gdzie znalazłeś wzór?
feersum

@feersum Jest to formuła (8) z pobierania linii Hypercube . (10) jest literówką i nie powinien mieć podwójnej całki lub du.
mile

Jeśli faktycznie wprowadzisz to jako tekst, zostanie on przeanalizowany u√πjako jeden token, więc potrzebujesz odstępu między ui .
feersum
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.