Python3 - 対数
Pythonで対数を出すには、math.logを使います。import mathで使えるようになります。
import mathprint(math.log(2, 10))0.30102999566398114
これは、10を何乗したら2になるか?です。log102です。 試しに、10を0.30102999566398114乗してみます。
print(pow(10, 0.30102999566398114))1.9999999999999998
100の0.5乗は、100の平方根なので10です。
print(pow(100, 0.5))10.0
27の0.3333333333333333333333333333333333333333333乗は、大体27の立方根なので、3に近いはずです。
print(pow(27, 0.3333333333333333333333333333333333333333333))3.0
おージャスト3.0になった。
print(pow(27, 0.333333333333333))2.9999999999999964
print(pow(27, 0.3333333333333333))3.0
少数15桁までだと2.99…になりますが、16桁にするとジャスト3.0になる。
10を底とする対数を常用対数といいます。
対数関数と指数関数は逆関数の関係にあります。逆関数はy=xに対して対称です。指数関数と対数関数のグラフを書いてみます。 y = axの指数関数と、y = logaxの対数関数を書きます。
numpyを使いたいので、math.logではなくnp.logを使います。aを2として、np.log2を使います。例えばnp.log2(4)とすると2になります。2を底とした4の対数を出しています。
import numpy as npimport matplotlib.pyplot as plt
x = np.arange(0.1, 3, 0.1)y = xplt.plot(x, y, label='y=x')y = 2 ** xplt.plot(x, y, label='y=2**x')y = np.log2(x)plt.plot(x, y, label='y=log2 x')plt.grid(True)plt.legend()plt.show()
対称なのか全然これじゃ分からない。
対数関数は、 対数が1より小さいとき、 底が1より大きければ、真数は底より小さい。 底が1より小さければ、真数は底より大きくなる。
対数関数を、底の大きさのパターンで2つ書いてみる。
import mathimport numpy as npimport matplotlib.pyplot as plt
#底は1ではない正の数#底が1より大きい場合a = 2#底が1より小さい場合b = 0.5#xは真数x_list = np.arange(0.1, 3, 0.1).tolist()#yは対数y_a = []y_b = []for x in x_list: y_a.append(math.log(x, a)) y_b.append(math.log(x, b))plt.plot(x_list, y_a)plt.plot(x_list, y_b)plt.grid(True)plt.show()
2100の桁数を出すには、常用対数を使います。 log102100 = 100log102 = 100 * 0.30102999566398114 = 30.102999566398114 よって31桁です。10の2乗は100なので3桁です。10の3乗は1000で4桁です。2.1乗は100より大きく、1000より小さいので3桁です。30.10乗は31桁です。