伙计们,我正在尝试使用python解决这个问题
我们需要找到的是一个方程式的结果为2.718的值N。我到目前为止所做的是小数位数问题,它是这样的:
import math
from decimal import Decimal
import scipy.misc
limit = 2.718
ris = 0
n = 1
while ris <= limit:
ris = Decimal(n / math.pow(scipy.misc.factorial(n), 1/n))
n= n + 1
print(n,ris)
主要的问题是,从某种意义上说,它只是开始打印零,而我不知道它是否仍在计算中,但不再显示结果或它崩溃了。
有解决这个问题的主意吗?
此解决方案使用的是幂运算符**,它比pow快一点,因为它没有函数加载和调用的开销。
import math
from decimal import Decimal
limit = Decimal(2.718)
result = 0
n = Decimal(1)
one = Decimal(1)
n_factor = Decimal(n)
while result <= limit:
result = n / Decimal(n_factor ** (one/n))
n += 1
n_factor *= n
# print (n, result) # uncomment to see intermediate results
print ('Final', n, result)
注意:这不是最佳方法,但至少它将计算出N
注释2:请参阅以下注释,以获取有关“ scipy”和“零”问题的解释
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句