Distância média de dois pontos no hipercubo n-dimensional unitário

13

Uma maneira fácil de entender o hipercubo n-dimensional da unidade é considerar a região do espaço em n dimensões que você pode obter se cada componente de coordenada estiver em [0, 1]. Portanto, para uma dimensão é o segmento de linha de 0 a 1, para duas dimensões é o quadrado com cantos (0, 0) e (1, 1), etc.

Escreva um programa ou função que, dado n, retorne a distância euclidiana média de dois pontos uniformemente aleatórios selecionados no hipercubo da n-dimensão da unidade. Sua resposta deve estar entre 10 e 6 do valor real. Tudo bem se sua resposta ultrapassar o tipo de ponto flutuante nativo do seu idioma para o grande n.

Selecionar aleatoriamente um número "grande" de pontos e calcular a média não garante essa precisão.

Exemplos:

1 → 0.3333333333 ...
2 → 0.5214054331 ...
3 → 0.6617071822 ...
4 → 0.7776656535 ...
5 → 0.8785309152 ...
6 → 0.9689420830 ...
7 → 1.0515838734 ...
8 → 1.1281653402 ...

Dados adquiridos do MathWorld .

Isso é , vitórias mais baixas na contagem de bytes.

orlp
fonte
Critério de vitória reiterado em uma edição.
Magic Octopus Urn
Só para esclarecer: distância refere-se à distância euclidiana, sim?
Dennis
3
@carusocomputing Qual é o objetivo do desafio, se você quer que eu o resolva para você?
orlp
4
@orlp registrando minha objeção a um desafio que é um quebra-cabeça de matemática até que alguém descubra a matemática, então ele se torna um quebra-cabeça de programação quando todos copiam a fórmula em diferentes idiomas. Eu preciso fazer uma meta pergunta sobre isso.
Sparr
1
Quando você diz 5 dígitos de precisão, você quer dizer 1e-5 ou uma estimativa de 1.500000000000001 estaria errada quando a saída deveria ser 1.499999999999999?
Xnor

Respostas:

5

Mathematica, 68 bytes

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

Implementação da fórmula usando NIntegratepara aproximar seu valor.

Imagem

milhas
fonte
Me bater por 58 segundos :(
JungHwan Min
Onde você encontrou a fórmula?
precisa saber é
@feersum É a fórmula (8) do Hypercube Line Picking . (10) é um erro de digitação e não deve ter a integral dupla ou du.
miles
Se você realmente inserir isso como texto, ele será analisado u√πcomo um token, portanto, precisará de um espaço entre ue .
precisa saber é