こんにちは。iQeda [@iQeeeda] です。
プログラムの計算時間を評価するときなどに「対数」という言葉がでてきます。
だいたい「累乗」という言葉とセットででてきます。
大きい累乗は指数的爆発が起きやすい…と以前説明しました。
そもそも大きい累乗を計算するのは大変です。
対数を使うと大きい累乗計算を簡略化できたりして便利です。
今回はまず「対数の基礎」を説明します!
目次
10 を底とする対数
対数とは
100000 という数字の 0 の個数は 5 ですね。これは、
- 100000 の「対数」を求めると 5
- 100000 の「対数」を取ると 5
- 100000 の「対数」を得ると 5
- 100000 の「対数」を計算すると 5
…といった色々な言い方ができます。
たとえば 100000 の対数は 5、100 の対数は 2、1000 の対数は 3 といえます。
10000000000000000 なら、その対数は 16 です。
巨大な数字はパっと見だと何桁か分からないですが、対数なら小さい数字で表現できます。
つまり巨大な数字は対数を取ると扱いやすくなるといえます。
底 (基数) とは
もう少し正確に対数を表現してみます。
- 1000 の対数は 3 である
- 10 を「底」として 1000 の対数を取ると 3 になる
- 10 の 3 乗 は 1000 である
- 10 を「底」として 1000 の対数を取ると 3 になる
…と言うことができます。
「底」とは「どんな数字を 3 乗したら 1000 になる?」を聞いています。
※ 底は「基数」と呼ばれることもあります。
つまり「1000 は 10 の 何乗か?」を考えればよいので、
1000 に 0 が何個あるのか注目していたわけです。
底 (基数) をもっと深く知りたい方は
対数を log 表記する
次の 2 つの文は同じことを言っています。
- 10 の 5 乗は 100000 になる
- 10 を底として 100000 の対数を取ると 5 になる
累乗と対数は逆の計算方法をとっているのです。
累乗と対数は逆の関係
累乗と対数の関係性を説明します。
- 累乗
- 「指定した回数だけ掛け算を繰り返す」計算
- 10 の 5 乗は
10^5
(10 の 5 乗) と表記する10^5
の計算結果は 100000
- 対数
- 「掛け算を何回繰り返してその数字が作られたのかを調べる」計算
- 100000 の対数は
log[10]100000
(ログ 10 万) と表記するlog[10]10000
の計算結果は 5
対数は英語で logarithm (ロガリスム) なので log[10]10000
のように表記されます。
対数はあくまで「累乗の逆」とだけ意識しておけば大丈夫です。
対数クイズ
log[10]1000 の値はいくつ?
log[10]1000
の値は 3 です。
逆に 10^3
の値は 1000 になります。
log[10]10^3 の値はいくつ?
10^3
は 1000 なので、log[10]1000
と全く同じです。答えは 3 です。
基数 10 の指数 3 がそのまま答えになっていることに注目してください。
log[10]N
は「10 を何乗したら N になるか?」を聞いているので、log[10]10^a
にできるのであれば、その答えは a になるわけです。
10^log[10]1000 の値はいくつ?
まず log[10]1000
は log[10]10^3
のことでした。
そして log[10]10^3
の値は 3 でした。
なのでこの問題は 10^3
のことを聞いてるだけなので、答えは 1000 となります。10^log[10]1000
の最後の 1000 がそのまま答えになっていることに注目してください。
10^log[10]N
の答えは常に N になります。
対数の値を求めても、結局 10 の累乗計算で元通り…になっているのですね。
2 を底とする対数
ここまでは 10 を底とする対数の説明をしてきました。
10^3
- 1000 のこと
log[10]1000
- 3 のこと
log[10]1000
は「底 10 を何乗したら 1000 になるか」を表していますが、
この考え方は 2 を底とする対数でも同じです。
2^3
- 8 のこと
log[2]8
- 3 のこと
log[2]8
は「底 2 を何乗したら 8 になるか」を表しています。
対数クイズ
log[2]2 の値はいくつ?
log[2]2
の値は 1 です。
逆に 2^1
の値は 2 になります。
log[2]256 の値はいくつ?
log[2]256
の値は 8 です。
逆に 2^8
の値は 256 になります。
指数法則と対数
10^a * 10^b = 10^a+b
とできることを「指数法則」といいます。
具体例
指数法則の例をあげると 10^2 * 10^3 = 10^5
のようになります。答えは 100000 です。
指数 2 と 指数 3 の足し算が行われています。
そして指数を得るには、対数を得ればよいことになりますね。
100 * 1000
は 100000- 累乗を使うと
10^2 * 10^3
で表現できる - 対数をとると
log[10]2
とlog[10]3
で表現できる- 指数法則から
log[10]2 + log[10]3
の足し算が可能log[10]5
とは10^5
のこと- これを「対数の逆をとる」という
- 指数法則から
- 累乗を使うと
100 * 1000
という掛け算を「指数の足し算10^2+3
に変換」しているのですね。
10^5
の計算結果はもちろん 100000 ですが、
数が大きくなるので 10^5
のままにしておくことは多いです。
対数のメリットは「掛け算を指数の足し算に変換できること」だと思って大丈夫です。
対数を使って指数法則を一般化する
先ほどの具体例を一般化すると log[10](A * B) = log[10]A + log[10]B
になります。
A * B
- 対数をとると
log[10]A
とlog[10]B
で表現できる- 指数法則から
log[10]A + log[10]B
の足し算が可能- これを「対数の逆をとる」という
- 指数法則から
- 対数をとると
底が書かれていない対数 (logN)
よく使う「底」はしばしば省略されます。※ 通常 10 の底が省略されます。
例えば log[10]5
は log 5
と書かれることがあるので覚えておきましょう。
関連記事
次回
前回
お仕事ください!
僕が代表を務める 株式会社 EeeeG では Web 制作・システム開発・マーケティング相談を行っています。 なにかお困りごとがあれば、Twitter DM や Web サイトからお気軽にご相談ください。
カテゴリ「CS」の最新記事
対数の解説、とてもわかりやすかったです!
こむずかしいことを平易に表現していただき、大変ありがたいです!
一点、
文中の以下の 10000 は 100000 の間違いではないかと思うのですが、
いかがでしょうか?
10000 という数字の 0 の個数は 5 ですね。これは、
10000 の「対数」を求めると 5
10000 の「対数」を取ると 5
10000 の「対数」を得ると 5
10000 の「対数」を計算すると 5
…といった色々な言い方ができます。
たとえば 10000 の対数は 5、
ご確認ください。
ご指摘ありがとうございます!
確かに 0 が足りていませんでした。。。
記事を修正いたしました。今後とも当ブログをよろしくお願いします!