有人可以解释为什么我的Python情节不会显示任何内容吗?

时间:2016-10-31 10:07:18

标签: python matplotlib

这是我的代码:

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。

有人可以帮忙吗?

1 个答案:

答案 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)

结果图:

enter image description here