1. はじめに
Pythonで数値計算を行う際、「指数関数」や「対数関数」は、統計処理・機械学習・金融計算など様々な場面で活躍します。Pythonでは、math
モジュールを使うことで、簡単に指数・対数の計算が可能です。
本記事では、math.exp()とmath.log()の使い方や応用例について、初心者でも理解できるように丁寧に解説していきます。これらの関数を使いこなすことで、実務での計算業務やアルゴリズム開発の幅がぐっと広がります。
2. Pythonで指数・対数を計算する基本:math.exp(), math.log()
math.exp(x):eのx乗を計算
math.exp(x)
は、自然対数の底e(約2.718)をx乗した値を返します。例えば、exp(1)ならeの1乗、exp(2)ならeの2乗を求めます。
import math
# eの1乗を求める
result = math.exp(1)
print(result)
実行結果:
2.718281828459045
math.log(x[, base]):対数を求める
math.log(x)
は、自然対数(底e)を計算します。
また、math.log(x, base)
のように第二引数で底を指定することで、任意の底の対数も計算可能です。
import math
# 自然対数を求める(ln(10))
ln_result = math.log(10)
# 底10の対数(log10)
log10_result = math.log(1000, 10)
print("ln(10):", ln_result)
print("log10(1000):", log10_result)
実行結果:
ln(10): 2.302585092994046
log10(1000): 3.0
3. よくある使い方・応用例
指数関数を使った成長のモデル化(例:人口増加)
指数関数は「何倍にも増える」成長を表現する際によく使われます。例えば、人口やウイルス感染者数などのシミュレーションに有効です。
import math
# 初期人口
P0 = 1000
# 増加率(例:10%増)
r = 0.1
# 時間(年)
t = 5
# 指数関数による人口増加モデル:P = P0 * e^(rt)
P = P0 * math.exp(r * t)
print("5年後の人口推定:", P)
実行結果:
5年後の人口推定: 1648.7212707001281
対数を使ったスケール変換(例:データのスケーリング)
機械学習や統計解析では、数値のスケールが大きすぎる場合、対数変換してスケーリングすることで学習精度を高めるテクニックがあります。
import math
data = [10, 100, 1000, 10000]
# log10でスケール変換
scaled_data = [math.log(x, 10) for x in data]
print("スケーリング後のデータ:", scaled_data)
実行結果:
スケーリング後のデータ: [1.0, 2.0, 3.0, 4.0]
対数を使って逆算する(例:利率の年数逆算)
例えば「何年後に資産が2倍になるか?」などを対数を使って逆算することができます。
import math
# 元本に対して2倍にするには何年かかるか(利率5%)
r = 0.05
target_ratio = 2
# 対数で時間tを逆算:t = ln(2) / r
t = math.log(target_ratio) / r
print("資産が2倍になる年数:", t)
実行結果:
資産が2倍になる年数: 13.862943611198906
4. 注意点・エラー対策
math.log()に負の値を渡すとエラー
math.log()
に0や負の値を渡すとValueError
になります。必ずx > 0
であることを確認しましょう。
import math
try:
print(math.log(-5))
except ValueError as e:
print("エラー:", e)
実行結果:
エラー: math domain error
math.exp()で非常に大きな値を渡すとオーバーフロー
math.exp(1000)
のように非常に大きな値を渡すとOverflowError
が発生します。指数爆発には注意が必要です。
import math
try:
print(math.exp(1000))
except OverflowError as e:
print("エラー:", e)
実行結果:
エラー: math range error
5. まとめ
本記事では、Pythonのmath.exp()
とmath.log()
を使って指数・対数の計算を行う方法を解説しました。
math.exp(x)
:eのx乗を計算math.log(x)
:自然対数を計算math.log(x, base)
:任意の底の対数も可能- 実務例:人口成長・資産運用・スケーリング・逆算など
指数や対数は、機械学習・統計・経済計算など様々な現場で使われています。Pythonのmath
モジュールを活用することで、より実践的な数値処理が可能になります。学習のコツは、「使う場面を想定しながら手を動かす」こと。実務と結びつけながら学ぶことで、理解が深まります。