所以我想将g函数显示为图形,但是每当我运行它时,它都会在标题中返回OverflowError,我不知道为什么。有人可以帮忙吗?

%matplotlib inline

import sympy as sym

def g(x):

   return 1 - (sym.factorial(365) / ((365 ** x) * sym.factorial(365 - x)))

sym.plot(f(x), (x, 0, 100), ylim=(0, 1))

最佳答案

问题在于,为了绘制函数,SymPy使用NumPy对其进行数字评估。 NumPy限于机器精度浮点数,该浮点数不得大于〜10 ^ 309(365!为〜10 ^ 778)。

您需要做的是重写表达式,这样它就不会产生太大的中间值。 SymPy仍然needs some work能够很好地帮助您。

我们可以使用身份:


binomial(n, x) = factorial(n)/(factorial(x - n)*factorial(x)


factorial(365)/factorial(365 - x)替换为binomial(365, x)*factorial(x)

1 - binomial(365, x)*factorial(x)*365**-x


这给出了这个情节

python - Python sympy.Plot-OverflowError:int太大,无法转换为float-LMLPHP

关于python - Python sympy.Plot-OverflowError:int太大,无法转换为float,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47772976/

10-11 06:26