这是我的代码:
import math
import matplotlib.pyplot as plt
import scipy.integrate as integrate
import numpy as np
#variables
n = 50
#integral
denominator = integrate.quad(lambda S: math.exp(-10*S)*(10*S**n),0,300)
#function
S = np.linspace(0,300,0.01)
y_i = (np.exp(-10*S)*(10*S**n))/denominator[0]
plt.plot(S,y_i)
我意识到这是一个非常简单的问题。我试图将分母整合在0和300之间,然后将函数y_i绘制为定义积分作为y_i的分母。然而,当我绘制它时,显示的图表显示为空,当我期待概率分布时,峰值为5。
有人可以帮忙吗?
答案 0 :(得分:1)
首先,您需要在代码段末尾添加plt.show()
。其次,更重要的是,你误用了np.linspace
。以交互模式运行它:
>>> import numpy as np
>>> S = np.linspace(0,300,0.01)
>>> S
array([], dtype=float64)
根据documentation,第三个参数(如果未按名称指定)将被视为要生成的样本数。在这种情况下,没有(或更令人不安的解释是你只需要0.01个样本)。如果在该行中的最后0.01
,您指的是步长,也许您正在寻找S = np.linspace(0,300,int(300.0/0.01))
或 @kameranis 指出的内容:S = np.arange(0, 300, 0.01)
结果图: