コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

利用者:Delmonta iijima/メモ「対数」

記事「対数」についての編集用メモ。

記事本体の中に <!-- .... --> でコメントを仕込んでおいても、消されてしまうことがあるので。

「オリジナルの定義」に基づいて具体的に計算してみる

[編集]

「オリジナルの定義」による値は具体的にどんな値なのか実際に計算してみて、現在一般に使われている対数関数の値と比較してみる。

ジョン・ネイピアの式

[編集]
ネイピアによる対数の定義は次のようなものである:

正の実数 x に対して

を満たす実数 p がただ一つ定まる。この p のことを ネイピアの対数: Napierian logarithm)という。この値は、−107 ln (x/107) と 7 桁の精度で一致する。

この両辺を 107 で割り、両辺の自然対数を取ると、

ln (x/107) = p ln ( 1 − 10−7)
p = ln (x/107) / ln ( 1 − 10−7)

が得られる。ln 0.9999999 = −0.000000100000005 なので、p = −107 ln (x/107) が7桁の精度で成立する。

具体例として、p = 6931471 のとき x = 5000000.23p = 23025849 のとき x = 1000000.08 となる。

ヨスト・ビュルギの式

[編集]
ビュルギもまた対数の発見者であるが、ビュルギが用いた定義はネイピアのものとはわずかに異なっている。ビュルギによる対数の定義は次のようなものである:

正の実数 x に対して

を満たす実数 p がただ一つ定まる。この p のことをビュルギの対数という。この値は、104 ln (x/108) と4桁の精度で一致する。

両辺を 108 で割り、両辺の自然対数を取ると、

ln (x/108) = p ln (1 + 10−4)

が得られる。ln 1.0001 = 0.00009995 なので、p = 104 ln (x/108) が4桁の精度で成立する。

実はどちらの定義も、常用対数ではなく自然対数を算出している

[編集]

どちらの式でも、自然対数を使うとテイラー展開による多項式近似

ln ( 1 + x ) ≈ xx2/2 + ...|x| < 1

が使えるため、余計な係数がかからずに済んでいる。ここでもし常用対数を使ってしまうと、lg 0.9999999 = −4.34 × 10−8lg 1.0001 = 4.34 × 10−5 というややこしい値が登場することになる。

で、何でこの計算で掛け算を足し算に置き換えられるの?

[編集]

この時代にはまだ、実数の「無理数乗」という概念は存在していないことに注意する。分数乗ですら計算には膨大な手間を要する。したがって、ネイピアの定義でもビュルギの定義でも、与式中の変数 p には整数を1から順に代入して計算する

たとえば、ビュルギの例によって計算してみよう。底 1.0001 からスタートして、そのべき乗を繰り返し求めていく。そうすると、次のような表が p = 1, 2, 3, ... と順にびっしり続くことになる。

p 1.0001p x
10 1.0010 100,100,045
100 1.0100 101,004,966
250 1.0253 102,531,384
500 1.0513 105,126,847
750 1.0779 107,788,011
1000 1.1052 110,516,539
2000 1.2214 122,139,055
3000 1.3498 134,983,856
5000 1.6487 164,868,006
8000 2.2255 222,545,191
10000 2.7181 271,814,593
15000 4.4814 448,135,298
17500 5.7541 575,409,920
20000 7.3883 738,831,728
21000 8.1653 816,531,257
22000 9.0240 902,402,087
23000 9.9730 997,303,557
23027 10.0000 999,999,780
23028 10.0001 1,000,099,780

p ≈ 23027 のとき 1.0001p = 10 になることに留意する。

これをふまえて、たとえば a = 123 456 789b = 987 654 321 とおいて、この積 a b の計算を考える。

この表で 123 456 789に近い場所を探していくと、ちょうど p = 2107 が最も近い値となる。ゆえに、

a ≈ 1.00012107 × 108

987 654 321も同様に探していくと、今度は p = 22906 が最も近くなる。ゆえに、

b ≈ 1.000122906 × 108

この両者を掛けると、

a b = 1.00012107 + 22906 × 1016

このように、真数の積(または商)の計算をを指数の和(または差)の計算に変換できるという性質は、現在我々が知っている対数関数の特長と全く変わりがない。

ここで 1.000123027 = 10 に留意すると

1.00012107 + 22906 = 1.000123027 + 1986 = 10 × 1.00011986

最終的に、上記の表から p = 1986 に対応する x をさがすと、x = 121 968 188 である。

以上の計算より、

a b = 10 × (1.219 681 88 × 1016) = 1.219 681 88 × 1017

が得られる。

ちなみに、実際にdouble型で直接計算した値は 1.219 326 311 126 × 1017 であり、上記の近似計算が4桁の精度で正しい値を導いていることがわかる。