最近、ちょっとした計算を楽にこなす「裏技」に興味を持っている。発端は最近ハマッてるライトノベル系ミステリー「万能鑑定士 Q の事件簿 I」。
28 かける 35。偶数と 5 の倍数をかけるときには、偶数の 2 だけ先にかけるんだよ。 28 は、14 の二倍だ。だから 35 を二倍して 70。それに 14 をかけるのは頭のなかでもできるだろ。それで 980 ってことだ
「万能鑑定士 Q の事件簿 I」 p.141 より引用
ファインマン流の計算術
ファインマンの計算エピソードは「ご冗談でしょう、ファインマンさん」の下巻「ラッキー・ナンバー」に載っている。タイトルが「ラッキー・ナンバー」とある通り、たまたまファインマンが知っていた定数を上手く活用しただけなのだけど、物理学を学ぶものとしてこういう「とっておき」がいつ役に立つか分かったものじゃない。
本エントリーでその計算方法を後追いしてみる。
e3.3 = 27.1126...
この計算にはまず、三つの数字を知っていたことが幸いした。即ち
- ln 10 = 2.3026
- ln 2 = 0.69315
- e = 2.71828
一つ目の式は対数の底を 10 から e に変換するのに使われる。例えばこの様な具合 (ln は底が e の対数、log は底が 10 の対数): ln 2 = loge 2 = (log 2) / (log e) = (log 2) / (ln 10)-1 = (log 2) * (ln 10)。
二つ目の式は放射能の半減期と崩壊定数の関係式 (τ = ln 2/λ) で使われる定数値。三つ目の式は e そのものの値。
これらをふまえて計算に入る。
e3.3 = e2.3 + 1.0 = e2.3 * e
さて、式 1. の ln 10 = 2.3026 を変形して 10 = e2.3026 が得られる。つまり、e2.3026 * e = 10 * e = 27.1828... 実際は e2.3026 ではなく e2.3 なので 27.1828 より小さくなる。なので、まず 27 という大雑把な数字を出しておいて、e0.0026 (= e2.3026 - 2.3 の補正を行なう。
e3 = 20.085...
e3 = e2.3 + 0.7 = e2.3 * e0.7
式 2. を少し緩く書くと ln 2 = 0.69315 〜 0.7。これを変形すると 2 〜 e0.7 を得る (「〜」は近似の記号)。前節より e2.3 〜 10。従って、e3 〜 10 * 2 = 20 付近の数と当たりを付けることができる。そして周りの人間が驚いている間に 0.693 の補正を行なう。
e1.4 = 4.05
e1.4 = e0.7 + 0.7 = e0.7 * e0.7
e0.7 〜 2 であるから、e1.4 〜 2*2 = 4。あとは補正を加えるだけ。
282 = 800 前後
28 の二乗と聞くと、ぼくなんかは (30-2)2=302-2*30*2+2*2 などと素因数分解をしてしまう。けれどファインマンの思考は違う。ファインマンは 2 の平方根が約 1.4 ということに注目する。
282 = (1.4 * 20)2 = 1.42 * 202 〜 2 * 400 = 800
1/1.73 = 0.577
3 の平方根が約 1.73 であることを使う。
1/1.73 〜 1/√3 = √3/3 = 0.5766... 〜 0.577
分数 1/√3 の分母・分子に √3 をかけるのがコツ。小数による割り算が、整数による割り算に変わる。
1729.03 の三乗根 = 12.002...
最後の問いはかなり運が良かった。ファインマンは 1 立方フィートが 1728 立方インチだということをたまたま覚えていた。フィートとインチについて日本人は疎いが、調べてみると 1 フィート = 12 インチと分かる。従って、以下の式が成り立つ。
123 = 1728
これをひっくり返せば、1728 の三乗根は 12 であることが分かる。問いは 1729.03 で 1728 より少し大きいから、答えも 12 より少し大きな数だと分かる。
1729.03 - 1728 = 1.03。この補正を行なえば、もっと正確な値が出る。微積分によると、「1 よりわずかに大きい数の立方根は、その超過分の 1/3 だけ 1 より大きい」とされる。例えば 1.02 の三乗根を電卓で計算すると 1.0066227... と出る。これを手計算で行なうなら 1 の超過分 0.02 を 3 で割り 0.02/3 = 0.0066... この値を 1 に足して 1.0066 を得る。電卓を使わないと大変な計算も概算で下 4 桁までが合う。
話を戻す。1729.03 = 1728 + 1.03 = 1728 * (1 + 1.03/1728) 〜 1728 * (1 + 1/1728)。この式に対して三乗根を取る。1728 の三乗根は 12 であるから、12 * (1 + 1/1728 * 1/3) = 12 + 1/1728 * 12/3 = 12 + 1/1728 * 4。地道に 1/1728 を計算すれば 0.00057。これを 4 倍して 0.0023。よって、1729.03 の三乗根は 12 + 0.002 = 12.002 と求まる。
ベーテ
ファインマン曰く、ハンス・ベーテはまるで計算の神様みたいな人だった
。彼のエピソードを引用して、本エントリーを締めたい。
その数分後、今度は 2.5 の三乗根を計製する必要ができてきた。(中略)。またベーテが「だいたい 1.35 ぐらいだろうな」と言った。
計算機でやってみると確かにそうなる。「今のはいったいどうやったんです?」と僕は不思議でしかたがない。「数の三乗根をとる秘訣でもあるんですか?」
「うん。2.5 の対数はこれこれで、その 1/3 は 1.3 の対数(しかじか)と 1.4 の対数(しかじか)の間にあるんだから、補間したまでだよ。」
これを聞いて僕は、まずベーテが対数表を完全に頭に入れていること、彼が補間に際してやった算術だけとっても、僕だったら対数表をもってきて計算機のボタンを押すよりずっと長くかかったに違いないことに気がつき、舌を巻いた。
あとがき
ファインマン流の計算方法は、対数や平方根 etc. の値を暗記し、加えてエレガンスな計算を行なう。そのほとんどは概算値であるけれど、「大まかな数字」を一瞬で出さなきゃいけない場面がある。
興味を持ったら、ちょっと対数表なんかを眺めてみるのも面白いかもしれない。
see also.