容易に想像できるように, 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 件のコメント:
コメントを投稿