指数・対数演算

C言語には、対数の関数として、自然対数eを底としたlog()と、10を底としたlog10()が用意されています。

じゃ、例えば2を底とした対数ってどうやって計算するんでしょ?

その昔、友人から「結局は自然対数を底とした関数だけありゃ、問題ないでしょ」と言われたことを思い出したんで、なんとなくまとめておくことにします。

結論だけ先に書くと、 \log_b(c) = \frac{ \log_a(c) }{ \log_a(b) }  として、底の変換が行えます。

...じゃ、これってどういうことなんでしょ。

ま、いい機会なんで、きっちり復習しちゃいましょう。

指数演算

1.  a^n = a \times a \times ... ※ aをn回乗算する

2.  a^n \times a^m = a^{n+m}

3.  a^n \div a^m = a^{n-m}

4.  a^0 = 1

5.  a^{-n} = \frac{1}{a^n}

6.  (a^n)^m = a^{n \times m}

対数演算

1.  \log(e^n) = n

2.  \log(1) = 0

3.  e^{\log(a)} = a

4.  \log(a) + \log(b) = \log( a \times b )

5.  \log(a) - \log(b) = \log( \frac{a}{b} )

6.  b\times\log(a) = \log(a^b)

7.  \log_a(b) \times \log_b(c) = \log_a(c)

8.  \log_b(c) = \frac{ \log_a(c) }{ \log_a(b) } ※ 対数の底の変換

1.  \log(e^n) = n 解説

 \log(a) は、eを底としたときの指数がいくつになるのかを示している。

つまり、「 e を何乗すると、nになるか?」ってことを示している。

一般に  e は自然対数を示すが、あんまり深く考えないでよろしい。

底を明示的に示す場合には  \log_2( 64 ) のように書く。

この場合、「2を何乗すると、32になるか?」って事だから、

 \log_2( 64 ) = \log_2(2^6) = 6

を示す。

2.  \log(1) = 0 解説

指数演算から、「 e^0 = 1」 って事はわかってるんで、対数は0になります。

3.  e^{\log(a)} = a  解説

多分これが一番重要な考え方です。
これさえ乗り越えれば、後は簡単なんで理解するまで、がんばりましょう。

 \log(a) 」とは、「 eを何乗すると、 a になるか?」ということを示しているから、その値を指数として、 eをべき乗すれば、 aとなります。

簡単のため、「 2^{\log_2(8)} 」を考えてみましょう。

 8 = 2 \times 2 \times 2 なので、 \log_2(8) = 3 ということがわかります。

すなわち、 2^{\log_2(8)} = 2^3 を示しています。

4.  \log(a) + \log(b) = \log( a \times b )


 \log(a) + \log(b) = \log( a \times b ) 」を考える前に、「 e^{\log(a) + \log(b)}」がどのような値になるのかを考えてみることにする。

指数演算を用いて、

 e^{\log(a) + \log(b)} = e^{\log(a)} \times e^{\log(b)}

対数演算3.より、「 e^{\log(a)}=a」「 e^{\log(b)}=b」といえるので、

 e^{\log(a) + \log(b)} = a \times b

当然、

 \log(e^{\log(a) + \log(b)}) = \log(a) + \log(b))
といえるので、

 \log(a) + \log(b) = \log( a \times b )

がわかる。

5.  \log(a) - \log(b) = \log( \frac{a}{b} )

4. と同じ

6.  b\times\log(a) = \log(a^b)

4. の解説と同様、まずは「 e^{b\times\log(a)} 」がどのような値になるのかを考えることにする。

指数演算より

 e^{b\times\log(a)} = (e^{\log(a)})^b
 = a^b ... ※  e^{\log(a)} = a

当然、

 \log(e^{b\times\log(a)}) = b\times\log(a)

といえるので、

 b\times\log(a) = \log(a^b)

が成り立つ

7.  \log_a(b) \times \log_b(c) = \log_a(c)

まずは、「 a^{\log_a(b) \times \log_b(c) } 」がどのような値になるのかを考えてみる。

指数演算より、

 a^{\log_a(b) \times \log_b(c) } = (a^{\log_a(b) })^{\log_b(c)}
 = b^{\log_b(c)} ... ※ a^{\log_a(b) } = b)
 = c ... ※ b^{\log_b(c) } = b)

すなわち、

 \log_a(b) \times \log_b(c) = \log_a(c)

が成り立つ。

8.  \log_b(c) = \frac{ \log_a(c) }{ \log_a(b) }

7.  \log_a(b) \times \log_b(c) = \log_a(c)  これがわかっちゃえば、底が変換できるように移項しただけなんで簡単ですよね。