Numpy power()发生故障
我画了几个不同基的指数函数与阶乘函数 当达到x=15时,一切看起来都很好,我们有一场紧张的比赛: 然而,当上升到x=50时,所有指数函数似乎都对阶乘赢得比赛而感到不安,它们都崩溃了: 我怀疑它是否会溢出,因为我使用的是Numpy power()发生故障,numpy,overflow,exponential,Numpy,Overflow,Exponential,我画了几个不同基的指数函数与阶乘函数 当达到x=15时,一切看起来都很好,我们有一场紧张的比赛: 然而,当上升到x=50时,所有指数函数似乎都对阶乘赢得比赛而感到不安,它们都崩溃了: 我怀疑它是否会溢出,因为我使用的是dtype=np.longlong,函数值仅达到大约10^60。此外,阶乘函数仍然很好 知道会发生什么吗? 代码如下: import numpy as np import matplotlib.pyplot as plt def compare_exponential_fa
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)
np.longlong
与np.int64
相同,其最大值为9223372036854775807(约10^19),因此请删除np.longlong
,当调用函数compare\u index\u factorial
时,向其传递一个浮点数组(默认值,因此不指定数据类型)。