• 締切済み

log2の近似値

log2(10を底とする2の対数)の近似値を四則演算のみで計算する方法を教えてください。 ただし、微積分の知識は使わないものとします。 例えば、ln(1+x)の級数展開は使用せずに計算してください。

みんなの回答

  • zk43
  • ベストアンサー率53% (253/470)
回答No.2

四則演算のみでは困難ので、計算機と、そのルート機能は使うことにします。 それと対数の基本的な計算法則は既知とします。 まず次のような数値表を作っておきます。 x= 10 10^(1/2)=3.16227766 10^(1/4)=1.778279409 10^(1/8)=1.333521431 ・・・ 10^(1/4096)=1.000562311 10^(1/8192)=1.000281115 に対して、 log10 x= 1 1/2=0.5 1/4=0.25 1/8=0.125 ・・・ 1/4096=0.00024414 1/8192=0.00012207 次に、2の平方根をどんどん計算していくと、 2^(1/2048)=1.000338507 となって、 10^(1/4096)=1.000562311と10^(1/8192)=1.000281115 の間に入っていることがわかる。 (10^(1/8192)<2^(1/2048)<10^(1/4096)) これより、1/8192<log10 2^(1/2048)<1/4096、 すなわち、0.00012207<log10 2^(1/2048)<0.00024414 この区間は微小なので、この区間でlog10 xはほぼ直線として近似する。 すると、比例関係から、 (log10 2^(1/2048)-0.00012207)/(0.00024414-0.00012207) =(1.000338507-1.000281115)/(1.000562311-1.000281115) これより、 log10 2^(1/2048)=0.000146969 log10 2=2048×0.000146969=0.300992512 となって、大体0.301くらいまではわかります。 もっと近似精度を高めたければ、さらに先のべき乗の数値表を作って 調べればよいです。 17世紀初頭にネイピアの仲間のブリッグズという人が常用対数表を作る のに上記のような手法を使ったそうです。 平方根の計算(開平)を手計算でやったので、相当大変だったと思います。

oldperson
質問者

補足

No.1の回答のように開平なしで計算できること および開平計算そのものが近似値であることにより この方法は不採用とします。 No.1の方法をベースに計算方法を一般化すると 2^2=4 2^4=16=1.6*10 2^8=2.56*10^2 2^16=6.5536*10^4 2^32=42.9496*10^8=4.29496*10^9 2^64=18.446*10^18=1.8446*10^19 2^128=3.402*10^38 2^256=11.57*10^76=1.157*10^77 2^512=1.340*10^154 2^1024=1.797*10^308 2^2048=3.231*10^616 2^4096=10.44*10^1232=1.044*10^1233 2^8192=1.090*10^2466 以上により 2466/8192=0.30102 < log2 < 2467/8192=0.30114 となり、No.2の方法より少ない手間で開平操作をすることなく 同程度の精度を得ることができます。

noname#47894
noname#47894
回答No.1

どの程度の精度を求めるかによりますが、一例を示すと、 2^3<10 より、log2<1/3 10^2<2^7 より、2/7<log2 ここまでで、0.28、より大きく、0.34 より小さい事がわかります。 後は、もっと精度が必要なら、 10^3<2^10 や 2^13<10^4 から、0.3<log2<0.308 となります。 このように桁数を上げていけば、もっと精度が上がるはずですので、気合を入れて計算してみてください。

関連するQ&A

専門家に質問してみよう