83.対数表
授業のレポートで、数値を求めさせる問題を出した。すると、「ルートの計算ができない」と書かれていて、有効数字とか関係のない答案があった。たとえば、特殊相対性理論でローレンツ因子 √(1- v2 / c2 )なんてのがあって、c は光の速さ、v は物体の速さだが、物体が光の速さの 99.5%で進んでいるときには、この ローレンツ因子は
√(1-(0.995c / c )2 )= 0.05×√3.99 となって、√3.99 なんかが必要になるのだが、だいたい 2 では答えが出ないので、もう少し精度が必要になる。昔と違って今は関数電卓で一発で答えが出る。関数電卓を持っていないとしてもパソコンは必携で持っているし、スマホはつついているんだろうから、無料アプリで関数電卓もあるし。
そもそも理工学部生なんだから。
電卓の無い時代はどうしていたか?
第 28 回で「対数」の話をした。少し復習。
たとえば、数字 y を知っていたとき、10 を何回掛けたら y になるか、つまり
y = 10×10×・・・×10
↑ u 個の10
= 10 u
のときのu は
u = log y
と書く。log というのは「底が10の常用対数」と呼ばれ、log y というのは、28 回ではlog10 y と書いていたものである。数学は一般化するので、 もはや u を自然数に限らないでおこう。
今、
10 u×10 v = 10 u+v
になっていることはすぐに気づかれるだろう。10 を u 回掛けたものと、10 を v 回掛けたものをさらに掛け合わせると、結局 10 が u+v 回掛けられているということだから。
そうすると、
y = 10 u , z=10 v
としておくと、対数を使って
u = log y , v = log z ・・・(1)
だ。一方、
x = y × z = 10 u+v ・・・(2)
とすると、対数を使って
u + v = log x ・・・(3)
だから、(1)、(2)と(3)から結局
log x = u + v = log y + log z
つまり、
x = y × z なので log (y × z) = log y + log z ・・・(0)
となる。対数を考えれば、掛け算は足し算になる。
ということで、a を b 回掛けた数を c とすると、
log c = log ab = log (a × a ×・・・× a)
↑ b 個
= log a + log a +・・・+ log a
↑ b 個
= b×log a
= b log a
となる。最後の行では掛け算記号を省略した。
やっぱり数学は一般化するので、b は整数に限らない。たとえば
log √3 = log 3 1/2 = ( 1/2 ) × log 3
のようになる。
私が学生の頃には、数値を扱う物理実験などでは、その実験の手引書には三角関数表とともに常用対数表が載せられていた。こんな感じ。
(改訂新版 物理学実験(吉川泰三編) 学術図書出版 (1985年3月 第4刷)より)
なぜか?
ルートを開いて小数表示することを考える。もちろん、小数点以下が延々と続くことの方が多いので、適当な精度で留めておく。以下では 4 桁の対数表を使うので小数点以下 4 桁までで求めよう。さきほどの √3.99 を、小数点以下 4 桁の精度で考えてみる。ということで、計算の途中では小数点以下 5 桁まで考えて、最後に 5 桁目を四捨五入しよう。
求めるべきは
y = √3.99 = 3.99 1/2
まず、対数をとる。そうすると
log y = log 3.99 1/2 = (1/2) × log 3.99 ・・・(4)
そこで、対数表で 3.99 を探す。見にくいので拡大したものを。
左端の列は、たとえば 39 だと、3.9 と読み替える。一番上、または一番下の行の数字は小数点以下 2 桁目と読む。3.99 の対数 log 3.99 が欲しければ左の列の 39 の所を右に辿り、右から 2 番目の 9 の列の数字を見る。6010 とある。これは小数点以下の数字と読み替え、0.6010 となる。こうして、
log 3.99 = 0.6010
であることがわかる。現代の利器である関数電卓で確かめると
log 3.99 = 0.6009728957・・・
と出た。小数点以下 5 桁目を四捨五入したものが 0.6010 だ。こうして(4)は
log y = log 3.99 1/2 = (1/2) × log 3.99 = (1/2) × 0.6010 = 0.3005
と得られる。今度は対数表で 0.3005 になるところを探す。じっと探すと、1.99 の対数が 0.2989、2.00 の対数が 0.3010 であることが読み取れる。欲しい 0.3005 がないので、本当はそうではないのだが、1.99 の対数と 2.00 の対数は比例関係にあると近似してしまい、0.3005 になる対数を探す。本当は直線ではないのに直線だとしてしまうところで、小数点以下 4 桁目に狂いが入る。だから有効数字としては 4 桁と思って、4 桁目には誤差があると考えておこう。4 桁の精度で考えてみようと言った所以である。対数の関係が下の図のようになっていると考える。
対数が 0.3005 になる 1.99 と 2.00 の間の数 1.99 + x を求めよう。図の直線の傾きは
( 0.3010 - 0.2989 ) / ( 2.00 - 1.99 ) = 0.21
なので、
0.3005 = 0.2989 + 0.21 x , よって x = 0.00761・・・
と得られるので、対数が 0.3005 になる数 y 、つまり log y = 0.3005 になる数 y は
y = 1.99 + x = 1.99 + 0.00761・・・= 1.99761・・・ (5)
と得られる。こうして、欲しかった y、すなわち、y = 3.99 1/2 が(5)で求まった。
log y = log √3.99 = 0.3005
すなわち
y ( = √3.99 ) = 1.99761・・・ ≒ 1.9976 ・・・(6)
だ。
関数電卓で再びチェック。√3.99 = 1.99749・・・と出る。小数点以下 4 桁目に若干狂いが生じるが、まぁ最初の狙い通りで、これで良いだろう。1.99762 = 3.9904 になるので、まぁまぁだ。
3.99 のルートというのは、あまり良い例ではなかった。というのは
3.99 1/2 = ( 4-0.01 )1/2 = 2×( 1-0.01 / 4 )1/2 = 2×( 1-(1/2)×( 0.01 / 4 ) +・・・)
と精度よくテーラー展開で求められてしまうからだ。最右辺を計算すると 1.9975 となる。
ほかにも、r の平方根、√r ( = r 1/2 ) をもとめるには、
a' = ( a + r / a ) / 2
として、r の平方根に近い数字をまず探し、それを a として左辺の a' を求め、次に a' を改めて a と思って右辺に代入し、この操作を繰り返していっても良い。数列で書けば
an+1 = ( an + r / an ) / 2
でn → ∞ として、an = an+1 = a∞ とすると上の式は
a∞ = ( a∞ + r / a∞ ) / 2
となって、これを a∞ について解くと a∞2 = r が得られるので、a∞ = r1/2 になる。r = 3.99 だと、その平方根に近いのはおそらく 2 だろうと見当がつくので、a=2 として a' を求めてみる。すると
a' = ( 2 + 3.99 /2 ) / 2 = 1.9975
となる。1.9975を 改めて a と思って、また a' を求めると
a' = (1.9975 + 3.99 / 1.9975 ) /2 = 1.997498436・・・
次にまた a' を求めると
a' = ( 1.997498436 + 3.99 / 1.997498436 ) / 2 = 1.997498436・・・
で、この桁まで √3.99 の精確な値に一致している。
挙げた例が、他の計算法でも容易に求まる例になっていたのであまり良くなかったが、とにかく、対数表があれば、こんな風に根号を小数表示できる。
3 乗根でも同じで
log 3.99 1/3 = (1/3) × log 3.99
になるので、同じような手順で求まる。答えを知っている数でやってみよう。27 の 3 乗根は 3 だ。33 = 3×3×3=27 だから。でも、答えを知らないとして対数表を使って求めてみよう。
y = 27 1/3
よって
log y = log 27 1/3 = ( 1/3 ) × log ( 2.7×10 ) = ( 1/3) × (log 2.7 + log 10 )
になる。ここで、積の対数は、対数の和になるという規則(0)を使った。log 10 = 1である。だって、10 = 101 だから、10 の肩の数は 1 だ。対数表で log 2.7 を探す。左の列の 27、横の行の 0 のところ、4314、つまり
log 2.7 = 0.4314
だ。こうして、
log y = log 27 1/3 = ( 1/3) × (log 2.7 + log 10 ) = ( 1/3 ) × 1.4314 = 0.4771
だ。またまた対数表で 0.4771 になるところを探す。0. は書いてないので、4771 を探すことになる。
あった。左の列で 30、横の行で 0 のところの数値がまさに 4771。つまり、3.00 ということだ。
こうして、
log 271/3 = 3.00
と、正しく得られた。
私が物理学実験を取っていた大学 1 年生時代の実験の手引書には対数表が載っていたが、その 10 年後、大学で教える側になって物理学実験を受け持った時に使った実験の手引書には、もはや三角関数表も対数表も載っていなかった。安価に関数電卓が手に入る時代になっていた。
今や、スマホの無料アプリだ。