Análisis
Vamos a adivinar y luego mejorar sistemáticamente la suposición hasta que sea correcta.
Comience adivinando que la respuesta es . Por supuesto que está mal. Para ver qué tan incorrecto, etiquete a un compañero en cada par "Rojo" y al otro "Azul". Desde la perspectiva de cualquier individuo Rojo, existe una posibilidad de que su compañero (Azul) se siente frente a ellos. Debido a que hay individuos rojos, restemos de esa suposición inicial.11 / ( 2 n - 1 )norten × 1 / ( 2 n - 1 )
Pero espere, todavía no está del todo bien, porque todos los pares de parejas han sido contados dos veces. Si una pareja está sentada enfrente, quedan parejas, lugares, y desde el punto de vista de cualquier individuo Rojo, la posibilidad de que formen parte de una segunda pareja es . Por lo tanto, necesitamos volver a agregar .n - 12 n - 21 / ( 2 n - 3 )(norte2) ×1/(2n-1)×1/(2n-3)
Pero ahora tenemos menos contribuciones al resultado de triples de parejas, que debemos corregir. Y así sigue, hasta que finalmente hemos acomodado a todas las parejas en la fórmula. (Esto, por supuesto, es solo el Principio de Inclusión-Exclusión en acción). norte
La fórmula resultante es
∑i = 0norte( - 1)yo(norteyo)1( 2 n - 1 ) ( 2 n - 3 ) … ( 2 n - 2 i + 1 )=1F1( - n , - n +12, -12) .(1)
Cálculo
Para enteros positivos , la función hipergeométrica confluente de Kummer es un polinomio de grado en . De la transformación de Kummernorte 1F1( - n , - n +12, z)nortez
1F1( - n , - n +12, -12) =mi- 1 / 2 1F1(12, - n +12,12)
es sencillo deducir que el valor límite de la probabilidad a medida que crece es . La convergencia es lenta: debes multiplicar por para obtener un dígito decimal adicional. Sin embargo, los valores precisos (doble precisión) se pueden calcular rápidamente para cualquier al notar que los términos en la suma de la izquierda de crecen más lentamente que las potencias de . Por lo tanto, en el momento alcanza , los nuevos valores serán esencialmente cero en comparación con (y, de hecho, un análisis más detallado sugiere que parar la suma pornortemi- 1 / 2≈ 0.6065306597 …norte10norte( 1 )- 1 / 2yo52mi- 1 / 2i = 45 trabajará).
Esta fórmula se descompondrá durante más de 10,000,000 en ciertos entornos informáticos debido a la imprecisión en la función de registro Gamma. El problema surge de la cancelación de las diferencias que surgen al calcular los términos de la serie. Se puede encontrar una aproximación excelente a esas diferencias cuando es suficientemente grande en términos de , donde es la derivada de (la función digamma ). Eso se implementa en el siguiente código, con un ligero costo en tiempo de cálculo.nortenorteψ ( n - 1 / 4 )ψIniciar sesiónΓ
Implementación
El siguiente Rcódigo calcula unos 20,000 valores de doble precisión por segundo.
f <- function(n) {
h <- function(n) {
ifelse(n < 1e6, lfactorial(n) - lfactorial(n-1/2), digamma(n+3/4)/2)
}
m <- min(n, 46)
k <- 0:m
x <- exp(h(n) - h(n-k) - lfactorial(k) - k*log(2)) * (-1)^k
sum(x)
}
Como ejemplo, rastreemos qué tan cerca se log(f(n))encuentra su valor límite de para grande . Como se afirmó anteriormente, cada factor de en agrega un lugar decimal de precisión limitante. Por lo tanto, veamos el lugar decimal en el logaritmo de la relación de a , para potencias enteras de desde hasta :- 1 / 2norte10nortenortethF( n )mi- 1 / 210n =101n =1014
> round(sapply(1:14, function(n) 10^n * (log(f(10^n)) + 1/2)), 3)
[1] -0.255 -0.251 -0.250 ... -0.250 -0.249 -0.249 -0.400
(Se han omitido siete valores del medio, todos iguales a -0.250). El patrón constante es claro. Al final, con , comienza a descomponerse, lo que indica pérdida de precisión. Mejorar esto probablemente requeriría aritmética de alta precisión.n =1014