容易に想像できるように, LとRの列RL0RLR2LRL4RLR6L ...は, 1年前のブログにあるeの連分数展開[2,1,2,1,1,4,1,1,6,1,1,8]と同じパターンである.
昔のブログの最後の方の中間近似分数にも同じ分数が現れる.
「コンピュータの数学」には無理数αからLとRの列を求める式もある.
if α < 1 then (output(L); α:=&alpha/(1-&alpha))
else (output(R); α:=α-1)
途中のαと一緒にLとRを計算すると
from math import e
print(e)
alpha=e
lri=[]
def sb():
global alpha
if alpha<1:
lri.append("L")
alpha=alpha/(1-alpha)
else:
lri.append("R")
alpha=alpha-1
print(alpha)
for i in range(16):
sb()
print(lri)
2.718281828459045
1.718281828459045
0.7182818284590451
2.5496467783038432
1.5496467783038432
0.5496467783038432
1.2204792856454296
0.22047928564542962
0.2828395468977148
0.39438809777395056
0.651222501282252
1.8671574389873726
0.8671574389873726
6.5277079301786785
5.5277079301786785
4.5277079301786785
3.5277079301786785
['R','R','L','R','R','L','R','L','L','L','L','R','L',
'R','R','R']
つまり連分数で1なら文字は1回, 2なら2回 繰り返すのであり, Stern Brocot木による計算は連分数展開の近似を, 中間近似分数まで含めて得ていたのであった.
0 件のコメント:
コメントを投稿