数式で独楽する

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

[tex: ]

対数計算のアルゴリズム

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

以下の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}

まず(1)ですが、
\begin{equation}
x=\sqrt{x^2}
\end{equation}で、平方根は1/2乗なので、成り立つことが分かります。
(1)を使って真数を大きくすることができます。
\begin{equation}
\log_a x = \frac{1}{n} \log_a x^n
\end{equation}なので別に n=2である必要はありませんが、2乗の計算がいちばん簡単です。

(1)を繰り返して真数が底を超えると、(2)を使って2の冪乗分の1の部分を確定させていきます。
\begin{equation}
x=a \cdot \frac{x}{a}
\end{equation}であるので、(2)は成り立ちます。
あとは(1)と(2)を繰り返し、欲する桁まで計算していけば良いのです。

こうして \log_a xを計算していくと2の冪乗分の1が次々出てきます。
これが収束するかどうか、見てみましょう。
真数の xですが、 1 < x < aとしても一般性は失いません。
\begin{equation}
\log_a x = \sum_{n=1}^{\infty} a_n
\end{equation}とすると、
\begin{equation}
a_n = \frac{1}{2^n} \ \mathrm{or} \ 0
\end{equation}なので、
\begin{equation}
a_n \leq \frac{1}{2^n}
\end{equation}です。
また、
\begin{equation}
\lim_{n \to \infty} \frac{1}{2^n} =0
\end{equation}なので、
\begin{equation}
\lim_{n \to \infty} a_n=0
\end{equation}です。
したがって、
\begin{eqnarray}
\log_a x &=& \sum_{n=1}^{\infty} a_n \\
& < & \sum_{n=1}^{\infty} \frac{1}{2^n} \\
&=& \frac{1}{2} + \frac{1}{2^2} + \frac{1}{2^3} + \cdots \\
&=& \frac{\displaystyle \frac{1}{2}}{1-\displaystyle \frac{1}{2}} \\
&=& 1
\end{eqnarray}
であり、1未満で収束することが分かります。