所以我想将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,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47772976/