Hay una fórmula cerrada simple en términos de las raíces de un polinomio de grado 6.
En realidad, es un poco más fácil considerar un dado justo general con re≥ 2 caras etiquetadas con los números 1 , 2 , ... , d.
Sea mik el número esperado de rollos necesarios para igualar o exceder k . Para k ≤ 0 , mik= 0. De lo contrario, la expectativa es uno más que la expectativa del número de rollos para alcanzar el valor inmediatamente anterior, que estaría entre k - d, k - d+ 1 , ... , k - 1 , donde
mik= 1 + 1re( ek - d+ ek - d+ 1+ ⋯ + ek - 1) .(1)
Esta relación de recurrencia lineal tiene una solución en la forma
mik= 2 kre+ 1+ ∑i = 1reunayoλkyo(2)
donde λyo son las raíces complejas re del polinomio
Tre- 1re( Tre- 1+ Tre- 2+ ⋯ + T+ 1 ) .(3)
Las constantes unayo se encuentran aplicando la solución ( 2 ) a los valores k = - ( d- 1 ) , - ( d- 2 ) , … , - 1 , 0 donde mik= 0 en todos los casos. Esto proporciona un conjunto de re ecuaciones lineales en las constantes re y tiene una solución única. Se puede demostrar que la solución funciona verificando la recurrencia ( 1 )usando el hecho de que cada raíz satisface ( 3 ) :
1 + 1re∑j = 1remik - j= 1 + 1re∑j = 1re( 2 ( k - j )re+ 1+ ∑i = 1reunayoλk - jyo)= 2 kre+ 1+ ∑i = 1reunayoλk - dyo[ 1re( 1 + λyo+ ⋯ + λre- 1yo) ]= 2 kre+ 1+ ∑i = 1reunayoλk - dyoλreyo= 2 kre+ 1+ ∑i = 1reunayoλkyo= ek.
Esta solución de forma cerrada nos brinda buenas formas de aproximar la respuesta, así como de evaluarla con precisión. (Para valores pequeños a modestos de k , la aplicación directa de la recurrencia es una técnica computacional efectiva). Por ejemplo, con re= 6 podemos calcular fácilmente
mi1000000= 285714.761905 ...
Para aproximaciones, habrá una raíz única más grande λ+= 1 por lo que eventualmente (para k suficientemente grande ) el término λk+ dominará los términos re en ( 2 ) .El error disminuirá exponencialmente según la segunda norma más pequeña de las raíces. Continuando con el ejemplo con k = 6 , el coeficiente de λ+ es una+= 0,4761905 y la siguiente norma más pequeña es 0.7302500. (Por cierto, el otro unayo tienden a ser muy cerca de1 en tamaño.) Así, podemos aproximar el valor anterior como
mi1000000≈ 2 × 106 66 + 1+ 0.4761905 = 285714.761905 ...
con un error del orden de 0.7302500106 6≈ 10- 314368.
Para demostrar cuán práctica es esta solución, aquí hay un R
código que devuelve una función para evaluar mik para cualquier k (dentro del alcance de los cálculos de coma flotante de precisión doble) y no demasiado grande re (se empantanará una vez re≫ 100 ):
die <- function(d, mult=1, cnst=1, start=rep(0,d)) {
# Create the companion matrix (its eigenvalues are the lambdas).
X <- matrix(c(0,1,rep(0,d-1)),d,d+1)
X[, d] <- mult/d
lambda <- eigen(X[, 1:d], symmetric=FALSE, only.values=TRUE)$values
# Find the coefficients that agree with the starting values.
u <- 2*cnst/(d+1)
a <- solve(t(outer(lambda, 1:d, `^`)), start - u*((1-d):0))
# This function assumes the starting values are all real numbers.
f <- Vectorize(function(i) Re(sum(a * lambda ^ (i+d))) + u*i)
list(f=f, lambda=lambda, a=a, multiplier=mult, offset=cnst)
}
Como ejemplo de su uso, aquí calcula las expectativas para k = 1 , 2 , … , 16 :
round(die(6)$f(1:10), 3)
1.000 1.167 1.361 1.588 1.853 2.161 2.522 2.775 3.043 3.324 3.613 3.906 4.197 4.476 4.760 5.046
λyounayouna+.
(Si tiene curiosidad por cuáles son los otros parámetros die
, ejecute die(2, 2, 0, c(1,0))$f(1:10)
y vea si reconoce la salida ;-). Esta generalización ayudó a desarrollar y probar la función).