【Python】対数(log)の計算

■対数の定義

a > 0、a ≠ 0、N > 0 において、

x = logaN ⇄ N = ax

この x を a を底とする N の対数、N を対数 x の真数と呼ぶ。

▼イメージ

2を3乗すると8になる。

■例題

問題1

loga81 = 4

問題2

logb5 = -1 / 2

問題3

log3243

問題4

log21/8

■サンプルコード

問題1・2はsympy.solve()を使用して解く。

なお、問題1・2をそれぞれ以下のような形式に変更する。

問題1

loga81 = 4
a4 = 81
a4 – 81 = 0

問題2

logb5 = -1 / 2
b(-1/2) = 5
b(-1/2) – 5 = 0

問題3・4については、math.log()を使用して解く

# -*- Coding:UTF-8 -*-
import sympy
import math

# 今回の問題の回答は実数のみとする
# (虚数は含まない)

# ▼問題1
# log(a)81 = 4

# 回答1
a = sympy.Symbol('a')
ques1 = sympy.solve(a**4 - 81, a)
print('問題1:' + str(ques1))


# ▼問題2
# log(b)5 = -1/2

# 回答2
b = sympy.Symbol('b')
ques2 = sympy.solve(b**(-1/2) - 5, b)
print('問題2:' + str(round(ques2[0], 2)))


# ▼問題3
# log(2)243

# 回答3
ques3 = math.log(243, 3)
print('問題3:' + str(round(ques3)))


# ▼問題4
# log(2)1/8

# 回答4
ques4 = math.log(1/8, 2)
print('問題4:' + str(ques4))

■実行結果

問題1:[-3, 3, -3*I, 3*I]
問題2:0.04
問題3:5
問題4:-3.0

※問題1の解は実数0より大きい実数のみのため[3]のみが正解

タイトルとURLをコピーしました