MENU
273,968

スレッドNo.2179

近似分数

らすかるさんのお仕事で
これだけの素数に対する常用対数値が共通分母で
log2 = 360565/1197771 = 0.3010299966 (真値 0.3010299957)
log3 = 571482/1197771 = 0.4771212527 (真値 0.4771212547)
log5 = 837206/1197771 = 0.6989700034 (真値 0.6989700043)
log7 = 1012234/1197771 = 0.8450981031 (真値 0.8450980400)
log11 = 1247350/1197771 = 1.0413927203 (真値 1.0413926852)
log13 = 1334249/1197771 = 1.1139433164 (真値 1.1139433523)
log17 = 1473796/1197771 = 1.2304488922 (真値 1.2304489214)
log19 = 1531654/1197771 = 1.2787536182 (真値 1.2787536010)
log23 = 1631038/1197771 = 1.3617277426 (真値 1.3617278360)
log29 = 1751618/1197771 = 1.4623980711 (真値 1.4623979979)
分母の1197771は10000000までで最も誤差が少なくなる値です。

の様に構成可能であることに驚きましたが、ふと分母を揃えなくとも
分母はものによって変化させてもよいならどうなるのか気になって調べてみました。


3桁ほどの分数での近似は、分母を揃えることに拘らないなら
gp > abs(146/485-log(2)/log(10))
%469 = 9.3217107035117801368259509460209827810 E-7
gp > abs(73/153-log(3)/log(10))
%470 = 2.9282868735104173903973984794620415878 E-6
gp > abs(339/485-log(5)/log(10))
%471 = 9.3217107035117801368259509460209517576 E-7
gp > abs(431/510-log(7)/log(10))
%472 = 7.9857055620241233702400874249978544429 E-10
gp > abs(478/459-log(11)/log(10))
%473 = 1.6503537575300559002466218995055742675 E-6
gp > abs(743/667-log(13)/log(10))
%474 = 3.2382107964776722479812223847580763836 E-7
gp > abs(299/243-log(17)/log(10))
%475 = 3.7535188454130236161139021156448952272 E-6
gp > abs(656/513-log(19)/log(10))
%476 = 1.1643056554722575810391097558286690920 E-6
gp > abs(1103/810-log(23)/log(10))
%477 = 5.5904413551619395128281053884536869710 E-7
gp > abs(525/359-log(29)/log(10))
%478 = 2.4547234686221517882671475279717504814 E-6
の様な分数でかなりの精度を上げれそうです。

引用して返信編集・削除(未編集)

近似分数に関しては以前少し研究したことがあります。
(分数の昇順で精度順に分数を列挙する方法を考えました(何十桁でもOK)。)
書かれている分数は、すべて連分数を打ち切って得られる分数ですね。
しかしそれは「3桁以下で最も良い」分数が得られるとは限りません。
例えばlog17は299/243より881/716の方が良い近似になります。
同様にlog29も525/359より914/625の方が少しだけ良い近似になります。
log23は3桁以下で連分数打ち切りで得られる分数では64/47が最大で
精度が出ないために分子4桁を許容したものと思いますが、
975/716でもそこそこの精度は出ます。
大半の値は、小数点以下の精度が(分母の桁数×2)桁程度になりますが、
たまたま連分数打ち切り直後の値が大きい場合は精度が良くなりますね。
log7は[0;1,5,2,5,6,1,4813,1,1,…]で4813の前で打ち切っているため
これだけ特別に精度が良くなっています。
円周率の355/113も同様ですね。

引用して返信編集・削除(未編集)

単に 1 つの対数値を機械計算を許して自由に有理数近似するだけでしたら、
数学感動秘話 > 累乗の上 4 桁
他、このサイトの何ヶ所かで同じ議論が繰り返し行われていますね。

引用して返信編集・削除(未編集)

29までの素数で、常用対数の連分数展開を求めてみましたが、log_{10}(7)のときの4813のような大きな数は現れませんでした。なお、log_{10}(5)=1-log_{10}(2)なので省略しています。

log_{10}(2)=[0;3,3,9,2,2,4,6,2,1,1,3,1,18,...]
[0;3,3,9,2,2,4,6,2,1,1,3,1]=97879/325147
=0.301029995663499893894146339963

log_{10}(3)=[0,2,10,2,2,1,13,1,7,18,...]
[0,2,10,2,2,1,13,1,7]=34367/33001
=0.477121254550546065527863343601

log_{10}(11)=[1;24,6,3,2,1,1,3,1,1,1,9,...]
[1;24,6,3,2,1,1,3,1,1,1]=22014/21139
=1.04139268507014938941244204721

log_{10}(13)=[1;1,8,1,3,2,7,1,6,16,...]
[1;1,8,1,3,2,7,1,6]=5113/4590
=1.11394335511982570806100217865

log_{10}(17)=[1,4,2,1,17,1,13,1,1,3,3,26,...]
[1;4,2,1,17,1,13,1,1,3,3]=99797/81106
=1.23045150790323773826843883313

log_{10}(19)=[1;3,1,1,2,2,1,3,2,2,1,4,1,1,1,6,1,3,1,3,1,47,...]
[1;3,1,1,2,2,1,3,2,2,1,4,1,1,1,6,1,3,1,3,1]=6497723/5081294
=1.27875360095282815755199364571

log_{10}(23)=[1;2,1,3,4,17,2,1,2,66,...]
[1;2,1,3,4,17,2,1,2]=9016/6621
=1.36172783567436943059960731007

log_{10}(29)=[[1;2,6,6,1,2,1,2,2,2,1,1,1,1,1,5,1,2,3,37,...]
[1;2,6,6,1,2,1,2,2,2,1,1,1,1,1,5,1,2,3]=5243915/3585833
=1.46239799789895402267757589380

引用して返信編集・削除(未編集)

log[10]7で連分数の8番目の値が4813ですが、
log[10]2は137番目が5393
log[10]3は562番目が2788
log[10]11は2179番目が3864
log[10]13は133番目が1378
log[10]17は710番目が3301
log[10]19は1341番目が2249
log[10]23は921番目が2695
log[10]29は352番目が1901
のようにずっと先まで見れば大きな数はいずれ出てきます。
log[10]7は奇跡的に前の方にあったということですね。

引用して返信編集・削除(未編集)

このスレッドに返信

ロケットBBS

Page Top