数式で独楽する

数式を使って楽しむブログです

[tex: ]

対数計算のアルゴリズム log 2

本稿では、対数を計算する手法を見ていきます。


toy1972.hatenablog.com

では、以下の2つの式を駆使すれば、計算していくことができることを述べました。
\begin{eqnarray}
(1) && \ \log_a x &=& \frac{1}{2} \log_a x^2 \\
(2) && \ \log_a x &=& 1+ \log_a \frac{x}{a}
\end{eqnarray}

具体例を見ていきます。まずはlog 2です。
底を省略していますが、底は10の常用対数です。

上記の(1)と(2)は、次のようになります。
\begin{eqnarray}
(1) && \ \log x &=& \frac{1}{2} \log x^2 \\
(2) && \ \log x &=& 1+ \log \frac{x}{10}
\end{eqnarray}

まず(1)を使います。
\begin{equation}
\log 2 = \frac{1}{2} \log 4
\end{equation}もう一度使います。
\begin{equation}
\log 2 = \frac{1}{2^2} \log 16
\end{equation}真数が10を超えたので、(2)を使います。
\begin{eqnarray}
\log 2 &=& \frac{1}{2^2} (1+\log 1.6) \\
&=& \frac{1}{2^2} +\frac{1}{2^2} \log 1.6
\end{eqnarray}
となります。
\begin{eqnarray}
1.6^2 &=& 2.56 \\
2.56^2 &=& 6.5536 \\
6.5536^2 &=& 42.94967296
\end{eqnarray}
なので、(1)と(2)を繰り返すと、
\begin{eqnarray}
\log 2 &=& \frac{1}{2^2} +\frac{1}{2^3} \log 2.56 \\
&=& \frac{1}{2^2} +\frac{1}{2^4} \log 6.5536 \\
&=& \frac{1}{2^2} +\frac{1}{2^5} \log 42.94967296 \\
&=& \frac{1}{2^2} +\frac{1}{2^5} (1+\log 4.294967296)
\end{eqnarray}
となります。
10桁の電卓で計算すると、ここまでの計算に誤差はありません。
しかし、
\begin{equation}
\frac{1}{2}+\frac{1}{2^5}=0.28125
\end{equation}なので真値にはまだ遠いです。

続けていくと、次のようになります。
3行目以降は真数の後ろの方の数字に誤差が出てきますが、便宜上、等号で繋いでいます。
\begin{eqnarray}
\log 2 &=& \frac{1}{2^2} (1+\log 1.6) \\
&=& \frac{1}{2^2} +\frac{1}{2^5} (1+\log 4.294967296) \\
&=& \frac{1}{2^2} +\frac{1}{2^5} + \frac{1}{2^6} (1+\log 1.844674407) \\
&=& \frac{1}{2^2} +\frac{1}{2^5} + \frac{1}{2^6} + \frac{1}{2^8}(1+\log 1.157920891) \\
&=& \frac{1}{2^2} +\frac{1}{2^5} + \frac{1}{2^6} + \frac{1}{2^8} + \frac{1}{2^{12}} (1+\log 1.044388841)
\end{eqnarray}
となります。
最後の行の真数は、2の4096乗からきています。1234桁の数です。
ここで書き下すと、
\begin{equation}
\frac{1}{2^2} +\frac{1}{2^5} + \frac{1}{2^6} + \frac{1}{2^8} + \frac{1}{2^{12}} \approx 0.3010253906
\end{equation}となります。
ここまで、使ったのは電卓の四則演算のみです。
一方、
\begin{equation}
\log 2 = 0.301029987 \cdots
\end{equation}で、5桁目までが一致します。