我正在阅读一篇关于布隆过滤器(Bloom filters)的文章,链接为https://en.wikipedia.org/wiki/Bloom_filter。在其中,作者推导了用于最优哈希函数数量的表达式。我想针对当 m
= n
的简化情况来重现这个计算过程,也就是说,我想确定以下函数的最小值:
(1-exp(-x))**x
从文章中可以看出,这应该发生在x = ln(2)
。我尝试使用sympy
进行如下操作:
In [1]: from sympy import *
In [2]: x, y, z = symbols('x y z')
In [3]: init_printing(use_unicode=True)
In [8]: from sympy.solvers import solve
In [9]: solve(diff((1-exp(-x))**x,x), x)
然而,我遇到了一个问题。
NotImplementedError: multiple generators [x, exp(x), log(1 - exp(-x))]
No algorithms are implemented to solve equation x*exp(-x)/(1 - exp(-x)) + log(1 - exp(-x))
我只是想确认一下Sympy是否真的无法解决这个问题?也许我需要在x
上添加额外的限制/假设条件吗?
ln(2)
的值相匹配) - user6655984