【python】対数の計算方法について(log,log2,log10,log1p)[mathライブラリ]

2020年3月31日

対数計算は底が概念があるので計算関数にもいくつか種類があります。
一般的である底がe(ネイピア数)、2、10では専用の関数がデフォルトで存在します。
もちろん底の指定は可能です。
mathライブラリには4種類の対数関数があるので用途に分けて使用しましょう。

log関数
math.log(x)e(2.71828 )
math.log2(x)2
math.log10(x)10
math.log(x,y) y(第2引数で底の指定が可能)
math.log1p(x+1)
引数を1加算される
e( 2.71828 )

底をeとして対数計算を行う

import math

e = math.e
print( "log(e    ) =", math.log( e ) )         #log(e    ) = 1.0
print( "log(e*e  ) =", math.log( e * e ) )     #log(e*e  ) = 2.0
print( "log(e*e*e) =", math.log( e * e * e ) ) #log(e*e*e) = 3.0

底を2として対数計算を行う

import math

print( "log2(  2 ) =", math.log2(  2 ) ) #log2(  2 ) = 1.0
print( "log2(  4 ) =", math.log2(  4 ) ) #log2(  4 ) = 2.0
print( "log2(  8 ) =", math.log2(  8 ) ) #log2(  8 ) = 3.0
print( "log2( 16 ) =", math.log2( 16 ) ) #log2( 16 ) = 4.0
print( "log2( 32 ) =", math.log2( 32 ) ) #log2( 32 ) = 5.0

底を10として対数計算を行う

import math

print( "log10(     10 ) =", math.log10(     10 ) ) #log10(     10 ) = 1.0
print( "log10(    100 ) =", math.log10(    100 ) ) #log10(    100 ) = 2.0
print( "log10(   1000 ) =", math.log10(   1000 ) ) #log10(   1000 ) = 3.0
print( "log10(  10000 ) =", math.log10(  10000 ) ) #log10(  10000 ) = 4.0
print( "log10( 100000 ) =", math.log10( 100000 ) ) #log10( 100000 ) = 5.0

底を指定して対数計算を行う

import math

print( "log( 49,7 ) =", math.log( 49, 7 ) ) #log( 49,7 ) = 2.0
print( "log( 27,3 ) =", math.log( 27, 3 ) ) #log( 27,3 ) = 3.0

底をeとして対数計算を行う(引数を1加算)

import math

e = math.e
print( "log1p(  e-1) =", math.log1p(   e - 1 ) ) #log1p(  e-1) = 1.0
print( "log1p(e*e-1) =", math.log1p( e*e - 1 ) ) #log1p(e*e-1) = 2.0

ソースコードはこちらから