Il existe une formule fermée simple en termes de racines d'un polynôme de degré 6.
Il est en fait un peu plus facile d'envisager un dé de foire général avec faces étiquetées avec les nombresré≥ 21 , 2 , … , d.
Soit le nombre attendu de rouleaux nécessaires pour égaler ou dépasser Pour Sinon, l'attente est une de plus que l'attente du nombre de rouleaux pour atteindre la valeur immédiatement précédente, qui serait parmi oùekk .k ≤ 0 , ek= 0.k - d,k−d+1,…,k−1,
ek=1+1d(ek−d+ek−d+1+⋯+ek−1).(1)
Cette relation de récurrence linéaire a une solution sous la forme
ek=2kd+1+∑i=1daiλki(2)
où les sont les racines complexes du polynômeλid
Td−1d(Td−1+Td−2+⋯+T+1).(3)
Les constantes sont trouvées en appliquant la solution aux valeurs où dans tous les cas. Cela donne un ensemble d' équations linéaires dans les constantes et il a une solution unique. Que la solution fonctionne peut être démontrée en vérifiant la récurrence utilisant le fait que chaque racine satisfaitai(2)k=−(d−1),−(d−2),…,−1,0ek=0dd(1)(3):
1+1d∑j=1dek−j=1+1d∑j=1d(2(k−j)d+1+∑i=1daiλk−ji)=2kd+1+∑i=1daiλk−di[1d(1+λi+⋯+λd−1i)]=2kd+1+∑i=1daiλk−diλdi=2kd+1+∑i=1daiλki=ek.
Cette solution sous forme fermée nous donne de bons moyens d'approximer la réponse ainsi que de l'évaluer avec précision. (Pour les valeurs petites à modestes de l'application directe de la récurrence est une technique de calcul efficace.) Par exemple, avec nous pouvons facilement calculerk,d=6
e1000000=285714.761905…
Pour les approximations, il y aura une racine unique plus grande donc finalement (pour un suffisamment grand ) le terme dominera les termes dansL'erreur diminuera de façon exponentielle selon la deuxième plus petite norme des racines. Poursuivant l'exemple avec le coefficient de est et la norme la plus petite suivante est ( passant , les autres ont tendance à être très proches de en taille.) Ainsi, nous pouvons approximer la valeur précédente commeλ+=1kλk+d(2).k = 6 , λ + a + = 0,4761905 0,7302500. a i 1k=6,λ+a+=0.47619050.7302500.ai1
e1000000≈2×1066+1+0.4761905=285714.761905…
avec une erreur de l'ordre de0.7302500106≈10−314368.
Pour démontrer à quel point cette solution est pratique, voici du R
code qui retourne une fonction pour évaluer pour tout (dans le cadre des calculs en virgule flottante double précision) et pas trop grand (il s'embourbera une fois ):ekkdd≫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)
}
À titre d'exemple de son utilisation, il calcule ici les attentes pourk=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
L'objet qu'il renvoie inclut les racines et leurs multiplicateurs pour une analyse plus approfondie. Le premier composant du tableau des multiplicateurs est le coefficient utileλiaia+.
(Si vous êtes curieux de savoir à quoi die
servent les autres paramètres , exécutez die(2, 2, 0, c(1,0))$f(1:10)
et voyez si vous reconnaissez la sortie ;-). Cette généralisation a aidé à développer et à tester la fonction.)