利用者:Delmonta iijima/メモ「対数」
記事「対数」についての編集用メモ。
記事本体の中に <!-- .... -->
でコメントを仕込んでおいても、消されてしまうことがあるので。
「オリジナルの定義」に基づいて具体的に計算してみる
[編集]「オリジナルの定義」による値は具体的にどんな値なのか実際に計算してみて、現在一般に使われている対数関数の値と比較してみる。
ジョン・ネイピアの式
[編集]この両辺を 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.23、p = 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 ) ≈ x − x2/2 + ...(|x| < 1)
が使えるため、余計な係数がかからずに済んでいる。ここでもし常用対数を使ってしまうと、lg 0.9999999 = −4.34 × 10−8、lg 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 789、b = 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桁の精度で正しい値を導いていることがわかる。