次数6の多項式の根に関する単純な閉じた式があります。
d≥21,2,…,d.
ekk.k≤0, ek=0.k−d,k−d+1,…,k−1,
ek=1+1d(ek−d+ek−d+1+⋯+ek−1).(1)
この線形反復関係は、次の形式の解を持っています
ek=2kd+1+∑i=1daiλki(2)
λid
Td−1d(Td−1+Td−2+⋯+T+1).(3)
ai(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.
k,d=6
e1000000=285714.761905…
λ+=1kλk+d(2).k=6,λ+a+=0.47619050.7302500.ai1
e1000000≈2×1066+1+0.4761905=285714.761905…
0.7302500106≈10−314368.
R
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)
}
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
λiaia+.
(の他のパラメーターのdie
目的に興味がある場合は、実行die(2, 2, 0, c(1,0))$f(1:10)
して出力を認識できるかどうかを確認してください;-)。この一般化は、関数の開発とテストに役立ちました。)