Distanza media di due punti nell'ipercubo n-dimensionale


13

Un modo semplice per comprendere l'ipercubo n-dimensionale dell'unità è considerare la regione dello spazio in n dimensioni che puoi ottenere se ogni componente di coordinate si trova in [0, 1]. Quindi per una dimensione è il segmento di linea da 0 a 1, per due dimensioni è il quadrato con angoli (0, 0) e (1, 1), ecc.

Scrivi un programma o una funzione che dato n restituisce la distanza euclidea media di due punti uniformemente selezionati dall'ipercubo di dimensione n dell'unità. La tua risposta deve essere compresa tra 10 e 6 del valore effettivo. Va bene se la tua risposta trabocca del tipo a virgola mobile nativo della tua lingua per big n.

La selezione casuale di un "grande" numero di punti e il calcolo della media non garantiscono tale precisione.

Esempi:

1 → 0,3333333333 ...
2 → 0,5214054331 ...
3 → 0,6617071822 ...
4 → 0,7776656535 ...
5 → 0,8785309152 ...
6 → 0,9689420830 ...
7 → 1,0515838734 ...
8 → 1,1281653402 ...

Dati acquisiti da MathWorld .

Questo è , vince il conteggio dei byte più basso.


Criterio vincente reiterato in una modifica.
Magic Octopus Urn,

Giusto per essere chiari: la distanza si riferisce alla distanza euclidea, sì?
Dennis,

3
@carusocomputing Qual è il punto della sfida se vuoi che la risolva per te?
orlp,

4
@orlp registrando la mia obiezione a una sfida che è un puzzle di matematica fino a quando qualcuno non capisce la matematica, quindi diventa un puzzle di programmazione quando tutti copiano la formula in diverse lingue. Devo fare una meta domanda al riguardo.
Sparr

1
Quando dici 5 cifre di precisione, intendi entro 1e-5 o una stima di 1.500000000000001 sarebbe errata quando l'output dovrebbe essere 1.49999999999999999?
xnor

Risposte:


5

Mathematica, 68 byte

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

Implementazione della formula usando NIntegrateper approssimare il suo valore.

Immagine



Dove hai trovato la formula?
feersum

@feersum È la formula (8) di Hypercube Line Picking . (10) è un refuso e non dovrebbe avere il doppio integrale o du.
miglia

Se lo inserisci effettivamente come testo, viene analizzato u√πcome un token, quindi hai bisogno di uno spazio tra ue .
feersum
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.