いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

対数を使って3の1000乗の桁数を求められるか

 少し前2の累乗の桁数を対数の近似値を使って計算する問題で、誤差が桁数にどう影響を及ぼすのか考えました。 

www.omoshiro-suugaku.com

www.omoshiro-suugaku.com

今回は問題としてもよくある、3の累乗について同様に考察してみます。次の問題を考えましょう。

f:id:Inuosann:20200703193415p:plain

解き方は以下の通り。

f:id:Inuosann:20200703194235p:plain

とおき,各辺の常用対数を取ると

f:id:Inuosann:20200703194516p:plain

f:id:Inuosann:20200703194956p:plain

となり、結局24桁と分かりました。

2の累乗のときと同様、

f:id:Inuosann:20200703195500p:plain

というのは近似値なのですから、累乗の指数によっては誤った桁数が計算されるでしょう。今回も、どんなときなら安全なのか調べてみます。まず、

f:id:Inuosann:20200703195819p:plain

であるとしましょう。各辺をm倍して

f:id:Inuosann:20200703195945p:plain

2の累乗のときと同様で、

f:id:Inuosann:20200703200346p:plain

すると、k≦maかつmb≦k+1 すなわち
mb≦k+1≦ma+1 ……★

であるときにはk+1桁です。前回同様、これは十分条件であって、これが不成立だからと言って必ず桁数を求められない、ということではありません。さて、

f:id:Inuosann:20200703201210p:plain

ということですから、a=0.47705、b=0.47715とおいて、さっきの★を考えれば

0.47715m ≦ k+1 ≦0.47705m + 1

です。これが成立するkが存在すれば誤差なく3の累乗の桁数を計算できるのです。なお、このときの桁数はk+1です。

 例えば……m=415のときは上の不等式は

198.01725≦ k+1 ≦198.97575 となり、これを満たすkは存在しません。(ここまでの話の通り、だからと言って絶対に桁を正しく計算できない、ということではありませんが)実際、パソコンで調べるとこのとき桁数に誤差が生じています。

 2の累乗のときと同様、Pythonで調べてみるとmが2000以下のとき桁数に誤差が生じるのは次の指数のときです。

415
568
677
721
830
874
939
983
1027
1092
1136
1180
1201
1245
1289
1333
1354
1398
1442
1463
1486
1507
1551
1595
1616
1639
1660
1704
1725
1748
1769
1792
1813
1857
1878
1901
1922
1945
1966
1987

 今回もどうやら教員が試験に使いそうな指数はたまたまありません。結局底が2か3のときはあまり気にしなくてもトラブルは起こらなそうです。おめでとうございます!