かーく諸誌

趣味のいろいろ。

MENU

暗算で冪乗・冪乗根・対数などを近似する方法

こんにちは。かえるです。先日、風呂に入っているときに考え事をしていてふと、

暗算で対数を計算したい!

と思い立ってしまいました。しかし僕はお世辞にも暗算が得意な方ではないので、簡単なやり方を探しました。そこで、対数のついでに冪乗・冪乗根についても調べたところ面白いやり方を見つけたので備忘録として書いておきたいと思います。

それではどうぞ!

冪乗

まずは基本となる冪乗です。これのネックは

  • 桁が多い
  • たくさん数字を覚えなければならない

などでしょう。桁が多いのは近似(切り捨てる)と指数法則(桁数の足し算)でどうにかするとして、たくさんの数字をどうするか調べていたところ、こんなやり方を見つけました。6^11を例に取ると、

11を2進数で表して1011

11 = 2^3 + 2^1 + 2^0

6^11 = ((6^2)^2)^2 × 6^2 × 6

6^2は36  36^2は35^2とするとインド式計算で1225

1225^2 ≒ 1200^2で1440000 ≒ 15×10^5

15×10^5 × 36 × 6はだいたい15×10^5 × 2×10^2

30×10^7 = 3×10^8

よって、大体3億くらいと求まりました。実際に計算すると362797056なので、最初の桁はあっていますが6千万くらい誤差が出ています。

まあこの辺に関しては慣れてくれば概数で切り上げたか切り捨てたか考えればだいたい補正できるようになると思います。もう少し計算ができる方はもう一桁くらい下まで計算するのもありです。

このやり方は計算途中で必要な数字が全て出揃うのでかなり楽です。

冪乗根

これに関しては一発で求める方法がないので何回も計算をしての近似になります。

暗算できそうなものを探していると、こんなやり方がありました。

50の5乗根を例に取ると、

まずは整数で近いものを探します。このとき目的の数より大きくても小さくてもいいです。今回は2^5=32を使います。

5 × 2^( 5-1 )  =  5 × 2^4  =  5 × 16  =  80

50-32 = 18

18÷80は20÷80として大体0.25

2+0.25 = 2.25

これが大体の値です。もっと近づけたい方は

5 × 2.25^( 5-1 ) としてその先は繰り返しでOKです。試しに計算すると、

2.25^4は2.2^4として4.84 ≒ 4.8

4.8^2 = 23.04 ≒ 23

2.25^5 ≒ 23×2.2 = 50.6

50-50.6 = -0.6

-0.6÷23 ≒ -0.1÷4 = -0.025

2.25-0.025 = 2.225

よって、大体の値が求まりました。実際に計算すると約2.186724なので結構近いことがわかります。もっと近づけたい方はこの計算を繰り返せばいいです。

当てずっぽうで出すよりかなり楽だと思います。

対数

これがメインです。桁からして違う大幅にスケールの違う数を直線状に並べるのに便利です。

これを出すには2の冪乗から出す方法が簡単です。そしてこの計算をするのに覚えておいたほうがいい数字がいくつかあります。一覧で書くと、

  1. 2の冪乗(できれば対数を出したい数値まで)
  2. √2 = 1.414…
  3. できれば2の4乗根,8乗根,…(無くてもいい)
  4. 対数の底にしたい数字と2の対数(今回はlog(2)10で0.3…)

こんな感じです。ちなみに僕の場合は2の冪乗は2^18(262144)まで覚えています。

それでは試しにやってみましょう。

log(10)1700を計算すると、

まず2の冪乗で1700に近いものを探します。今回は2^10=1024を使います。

√2=2^0.5を使って1700に近い数値を作ります。

2^10.5 ≒ 1024×1.414 ≒ 1000×1.4 ≒ 1400

次に2の4乗根を使ってより近づけます。わからない方は前述の累乗根を使って求めましょう。ここでは実際に求めてみます。

1.2^2 = 1.44 ≒ √2

2×1.2^(2-1) = 2×1.2 = 2.4

√2 - 1.44 ≒ 1.41-1.44 = -0.03

-0.03÷2.4 ≒ -3÷240 ≒ -1÷8÷10 = -0.0125

1.2-0.0125 =1.1875

2^0.25 ≒ 1.1875 ≒ 1.19 ≒ 1.2

求まったので近づけていきます。

2^10.75 ≒ 1400×1.2 = 1680 ≒ 1700

よってlog(2)1700 ≒ 10.75であることがわかります。

ここから対数法則と上のリストの(4)を使って、

log(2)1700 × log(10)2 = log(10)1700

10.75 × 0.3 ≒ log(10)1700

log(10)1700 ≒ 3.225

大体の値が求まりました。実際に計算すると約3.23044なので結構近いことがわかると思います。

底を10以外の数(例えば3,5など)にしたいときはlog(3)2やlog(5)2などを覚えておけばOKですね。

まとめ

こういう暗算をするときはいろいろな数値をだいたいでいいので記憶しておくと計算が早くなります。二桁×二桁の計算などもインド式計算などで楽にショートカットできる数値があるので(例えば○5×○5など)覚えておくと便利です。

それでも計算に慣れてくれば自然と覚えられるようになるのでいろいろな数値で練習して数値と計算方法を忘れないようにすることが大切ですね。

それでは今回はこのくらいで終わりにしましょう。

またこのブログを見に来てくれるとありがたいです。

それでは、よい暗算ライフを!