- 0-1の範囲の2倍して2等分(パイ生地を伸ばして折ること)を繰り返すと、誤差によって0に丸められて、50回くらい処理を繰り返すとどんな点も0に収束してしまう話
- それをRで確かめてみた
- 誤差影響の範囲が全体を覆ってしまうことの意味を考えた
- 折り返しを周期関数と見立てて、折り返し処理を周期の細かさにすることで、処理回数を増やさない
- メンバーが増えた
- 処理を繰り返さない方の結果が「正しい」とすれば、処理を繰り返した場合の「誤差」の出現の具合は、「正しい」ものとの違いを見せればよい。それをやってみる
- 52回繰り返しのときの図(k=1は初回、k=2は1回処理、…)
pieKone <- function(x,k){
1/2-asin(cos(2^(k-1) * pi * x))/pi
}
for(i in 1:length(ks)){
X[i,] <- pieKone(x,ks[i])
}
matplot(t(X),type="l")
pieKone.2 <- function(x){
y <- 2*x
y[which(x>0.5)] <- 2 - 2*x[which(x>0.5)]
y
}
x <- seq(from = 0, to = 1, length = 1000)
ks <- 1:100
X <- X.2 <- matrix(0,length(ks),length(x))
X[1,] <- x
X.2[1,] <- x
for(i in 2:length(ks)){
X[i,] <- pieKone(x,ks[i])
X.2[i,] <- pieKone.2(X.2[i-1,])
}
matplot(t(X),type="l")
matplot(t(X.2),type="l")
for(i in 1:length(ks)){
title = paste("k = ",i)
plot(X[i,],X.2[i,],type="l",main = title)
Sys.sleep(0.3)
}