numpy - numpy.power() 崩溃了
问题描述
我正在针对阶乘函数绘制一些具有不同基数的指数函数。
当上升到 x=15 时,一切看起来都不错,我们的比赛很激烈:
然而,当上升到 x=50 时,所有指数函数似乎都因为阶乘赢得了比赛而感到不安,它们都崩溃了:
我怀疑它会在我使用时溢出,dtype=np.longlong
并且函数值仅达到约10^60
. 此外,阶乘函数仍然做得很好。
知道会发生什么吗?
这是代码:
import numpy as np
import matplotlib.pyplot as plt
def compare_exponential_factorial(bases, x):
xs = np.arange(0, x, dtype=np.longlong)
fact = []
for x in xs:
fact.append(np.math.factorial(x))
fig, ax = plt.subplots(1,1, figsize=(8,6))
ax.semilogy(xs, fact, label="$f_1 = x!$", color="r")
exps = []
for i, b in enumerate(bases):
exp = np.power(b, xs, dtype=np.longlong)
exps.append(exp)
ax.plot(xs, exp, label=f"$f_{i + 2} = {b}^x$", color="b", alpha=(i + 1) / len(bases))
ax.set_xlabel("x")
ax.set_title("Epic race between Exponentials and Factorial functions", fontsize=14)
ax.legend(loc='best')
plt.show()
if __name__ == "__main__":
compare_exponential_factorial(bases=np.array([2, 3, 4, 5, 8, 10, 15], dtype=np.longlong), x=50)
解决方案
推荐阅读
- loops - 如何使用 host_vars 确保存在多个特定的 cron 作业?
- c++ - 印地UDP通信
- excel - 尽管使用非 Excel 2003 函数和文件,但 MS Access 数据导入 65000 行限制的问题
- vba - 从不同的表中循环到另一张中
- jasper-reports - 当详细信息部分中有两个波段时,如何强制第一个详细信息波段打印在页面顶部?
- robotframework - 如何使用 Robot Framework RESTinstance 库验证 JSON 结果
- mysql - 动态创建表时如何避免SQL注入风险?
- python - 从 Django 1.8 升级到 1.9 时出现 ValueError
- reactjs - 如何从不是主应用程序页面的页面路由到另一个页面
- c - C 代码的问题,在 10 月的最后一个星期日更改标志以进行夏令时