考慮したいもう 1 つのことは、自然対数のテイラー級数を使用することです。
このシリーズのいくつかの項を使用して自然対数を概算したら、基数を簡単に変更できます。
編集:これは別の便利なアイデンティティです:
これを使用して、次の行に沿って何かを書くことができます
def ln(x):
n = 1000.0
return n * ((x ** (1/n)) - 1)
それをテストすると、次のようになります。
print ln(math.e), math.log(math.e)
print ln(0.5), math.log(0.5)
print ln(100.0), math.log(100.0)
出力:
1.00050016671 1.0
-0.692907009547 -0.69314718056
4.6157902784 4.60517018599
これは、(スペースで区切られた) 値と比較したmath.log
値を示しており、ご覧のとおり、かなり正確です。ln(10000)
サイズが非常に大きくなるにつれて (たとえば0.4
、必要以上に大きくなるなど)精度が低下し始める可能性n
がありますが、必要に応じていつでも精度を上げることができます。