Derece 6 polinomunun kökleri açısından basit bir kapalı formül vardır.
Aslında sayıları ile etiketlenmiş yüzü olan genel bir adil ölçeği düşünmek biraz daha kolaydırd≥21,2,…,d.
Let eşit veya aşmak için gerekli rulo beklenen sayı İçin Aksi takdirde beklenti arasında olacağını hemen önceki değerini ulaşmak için daha fazla rulo sayısına beklentisine birden olan neredenekk.k≤0, ek=0.k−d,k−d+1,…,k−1,
ek=1+1d(ek−d+ek−d+1+⋯+ek−1).(1)
Bu doğrusal tekrarlama ilişkisinin bir çözümü vardır.
ek=2kd+1+∑i=1daiλki(2)
burada olan polinom kompleks kökleriλid
Td−1d(Td−1+Td−2+⋯+T+1).(3)
Sabitleri çözeltisinin uygulanmasıyla bulunan döndürmek için burada her durumda. Bu , sabitlerinde bir dizi lineer denklem verir ve benzersiz bir çözümü vardır. Çözümün işe yaradığını, her kökün tatmin ettiği gerçeğini kullanarak nüksü doğrulayarak gösterilebilirai(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.
Bu kapalı form çözümü bize yanıtı doğru bir şekilde değerlendirmenin yanı sıra doğru bir şekilde değerlendirmek için iyi yollar sunar. (Küçük ila mütevazı değerleri için , nüksün doğrudan uygulanması etkili bir hesaplama tekniğidir.) Örneğin, ile kolayca hesaplayabilirizk ,d= 6
e1000000= 285714.761905 …
Yaklaşımlar için benzersiz bir en büyük kök bu nedenle sonunda (yeterince büyük ) terimi, deki terimlerine hükmedecektirHata , köklerin ikinci en küçük normuna göre katlanarak azalacaktır . İle örnek devam katsayısı olan ve sonraki en küçük norm (Bu arada, diğer boyutu çok yakın olma eğilimindedir .) Bu nedenle önceki değere yaklaşık olarakλ+= 1kλk+d( 2 ) .k = 6 ,λ+bir+= 0,47619050,7302500.birben1
e1000000≈2 ×1066 + 1+ 0.4761905 = 285714.761905 …
sırasına göre bir hata ile0.7302500106≈10- 314368.
Bu çözümün ne kadar pratik olduğunu göstermek için, burada herhangi bir (çift duyarlıklı kayan nokta hesaplamaları kapsamında) değerlendirmek ve aşırı büyük değil ( kezR
bir fonksiyon döndüren kod :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)
}
Kullanımının bir örneği olarak, burada için beklentileri hesaplark = 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
Bu döner nesne Köklerin içerir ve çarpanları daha fazla analiz için. Çarpan dizisinin ilk bileşeni yararlı katsayı dırλbenbirbenbir+.
(Diğer parametrelerin ne için olduğunu merak ediyorsanız die
, yürütün die(2, 2, 0, c(1,0))$f(1:10)
ve çıkışı ;-) tanıyıp tanımadığınızı görün. Bu genelleme, fonksiyonun geliştirilmesine ve test edilmesine yardımcı oldu.)