python - 无需数学 log python 即可获取对数

标签 python math

我需要生成日志的结果。

我知道:

enter image description here

然后我编写了代码:

def log(x, base):
    log_b = 2
    while x != int(round(base ** log_b)):
        log_b += 0.01
        print(log_b)
    return int(round(log_b))

但它运行速度非常慢。我可以使用其他方法吗?

最佳答案

您可能需要考虑的另一件事是使用自然对数的泰勒级数:

enter image description here enter image description here

一旦您使用本系列中的许多术语来近似自然对数,就可以轻松更改基数:

enter image description here

<小时/>

编辑:这是另一个有用的身份:

enter image description here

使用这个,我们可以写一些类似的东西

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 如果需要的话。

关于python - 无需数学 log python 即可获取对数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13211137/

相关文章:

python - 使用 Colander 验证 PATCH 请求

math - 按位运算符(移位除外)在 base-10 中有任何数学意义吗?

android - 检测您是否距离兴趣点一公里

java - 查找两个大整数的 SHA-1 哈希值并将其作为字符串返回的正确方法

python - 如何根据多个条件在 df 中创建新列?

python - python 如何有效地排序时间

javascript - Uncaught ReferenceError : django is not defined

c - 如何计算覆盖矩形的最小数量的固定半径圆的圆心坐标?

algorithm - 是否有一种算法可以寻找 3 个变量之间的数学联系?

python Pandas : how to fast process the value in columns