【数学嫌い克服】対数の「底の変換公式」とは?新人エンジニアが知るべき自由自在な計算術

こんにちは。ゆうせいです。

前回の記事で、対数(ログ)は「何回掛けたかを逆算する道具」だというお話をしましたね。

しかし、実際のプログラミングや計算の現場で対数を使おうとすると、ある「壁」にぶつかることがあります。

「あれ? このプログラミング言語、底(てい)が指定できないぞ?」

例えば、情報の量を計算するために「底が2」の対数を使いたいのに、手元の関数電卓や標準ライブラリには「底が10」や「底が e (ネイピア数)」のボタンしかない。そんな経験はありませんか?

これ、実は新人エンジニアがつまずきやすいポイントなんです。

でも、諦めないでください。数学の世界には、どんな底でも自分の好きな数字に書き換えて計算できる、魔法のような公式が存在します。

それが今回解説する「底の変換公式」です。

この公式を使いこなせば、あなたはどんな対数計算も自由自在に扱えるようになりますよ。さあ、一緒にその仕組みを見ていきましょう。

そもそも「底(てい)」が違うと何が困るの?

まずは、なぜ変換が必要なのかを整理しましょう。

対数の式は次のような形をしていましたね。

\log_a b

この小さな a の部分が「底」です。これは「何倍ずつ増える世界か」という基準を表しています。

  • \log_2 8 なら「2倍ずつ増える世界」
  • \log_{10} 100 なら「10倍ずつ増える世界」

基準が違うということは、例えるなら「メートル法」と「ヤード・ポンド法」が混在しているようなものです。

古いシステムや特定の数学ライブラリでは、基準となる底があらかじめ決まっていることがよくあります。自分が計算したい基準(底)と、道具が持っている基準(底)が合わない。このズレを解消するために、変換公式が必要になるのです。

魔法の道具「底の変換公式」

では、その公式を紹介します。見た目は分数の形をしていて少し複雑に見えるかもしれませんが、意味がわかれば単純です。

\log_a b = \frac{\log_c b}{\log_c a}

ここで新しく登場した c が、あなたの好きな「新しい底」です。

この式が言っていることは、とてもシンプルです。

「扱いにくい底 a の対数は、自分の好きな底 c を使った分数に書き直せる」

これを、具体的な数字で試してみましょう。

例題で実感してみよう

あなたは今、\log_2 8 の値を知りたいとします。もちろん、答えは「3」ですよね(2を3回掛けると8になるから)。

でも、あなたの手元には「底が10の電卓」しかありません。この電卓を使って「3」という答えを導き出せるでしょうか?

ここで変換公式の出番です。底を「2」から、電卓で計算できる「10」に変換してみましょう。

公式に当てはめるとこうなります。

\log_2 8 = \frac{\log_{10} 8}{\log_{10} 2}

これを電卓で計算してみてください。

  • \log_{10} 8 は、だいたい 0.903 です。
  • \log_{10} 2 は、だいたい 0.301 です。

これを割り算してみましょう。

0.903 \div 0.301 = 3

ほら! 見事に「3」という答えが出てきましたね。

つまり、底の変換公式とは「共通の物差し(新しい底)を使って、比率を計算する」ことだと言えます。

エンジニアにとってのメリットとデメリット

この公式は、エンジニアの実務でも頻繁に登場します。どんな利点と注意点があるのかを見てみましょう。

メリット:どんな環境でも計算が可能になる

多くのプログラミング言語(Java, Python, JavaScriptなど)の標準ライブラリにある Math.log(x) という関数は、通常「自然対数(底が e )」を計算します。

もしあなたが「情報量(ビット数)」を計算したくて、底が2の対数を使いたい場合、標準関数そのままでは計算できません。

しかし、変換公式を知っていれば、自分で関数を作れます。

「求めたい値の自然対数」 \div 「2の自然対数」

コードで書くなら Math.log(x) / Math.log(2) とすることで、簡単に底が2の対数を実現できるのです。これは非常に強力なメリットです。

デメリット:割り算による誤差とコスト

一方で、デメリットも理解しておく必要があります。

ひとつは「計算誤差」です。コンピュータで小数の割り算を行うと、どうしてもわずかな誤差(浮動小数点数誤差)が発生します。整数の答えが欲しいのに 2.99999999 のようになってしまうことがあるのです。

もうひとつは「計算コスト」です。割り算は、足し算や掛け算に比べて、コンピュータにとって少し負担の大きい計算です。膨大な回数のループ処理の中で変換公式を使いすぎると、処理速度に影響が出る可能性があります。

まとめ

今回は、対数の計算を自由にする「底の変換公式」について解説しました。

ポイントを整理しましょう。

  • 底の変換公式は、扱いにくい底を自分の好きな底に変換する魔法
  • 形は分数。「真数の対数」を「元の底の対数」で割るだけ
  • \log_a b = \frac{\log_c b}{\log_c a}
  • プログラミング言語の標準機能で足りない計算を補うために必須の知識

公式を丸暗記する必要はありません。「割り算を使えば、基準を変えられるんだな」という感覚を持っておくだけで十分です。

今後の学習の指針

さて、対数の基本と変換方法がわかったら、次は「対数グラフ(ログスケール)」について学んでみることをおすすめします。

サーバーのアクセスログ解析や、株価の変動、音の大きさ(デシベル)など、エンジニアが扱うデータの多くは、普通のグラフよりも対数グラフで見たほうが傾向をつかみやすいものがたくさんあります。

「なぜここでは対数軸を使うのか?」という疑問を持てるようになれば、あなたはもうデータ分析の入り口に立っていますよ。

数学を道具として使いこなし、エンジニアとしての視点を広げていきましょう!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。