我使用Python绘制2轴图。
X轴是' Q'(整数); Y轴是' Z(Q)',' Q'的函数。
我希望Q为0,1,2,...,10之间的整数。我已经定义了Z(Q),它运行正常。
我希望在图上看到Z(Q)与Q的关系图,每个点(0,1,2,...,10)。
我可以写:
for Q in range(0, 10):
pl.plot(Q,Z(Q))
它会返回错误。
错误讯息:
姓名' Q'没有定义。
如何在定义Q时更改代码?
谢谢!
附录 - 整个代码:
import numpy as np
import scipy.stats as stats
from scipy.stats import poisson, norm
mu = 4.68
cs = 100
co = 300
G = poisson(mu)
p = G.pmf(np.arange(3*mu))
def Z(Q):
ES = sum(i*p[i] for i in range(len(p)))
return co*max((Q-ES), 0) + cs*max((ES-Q), 0)
Qstar = np.ceil(poisson.ppf(co/(cs+co), mu))
print(Qstar)
from scipy.integrate import quad
import pylab as pl
for Q in range(0, Qstar):
pl.plot(Q,Z(Q))
这是我的完整代码,最后两行不返回任何结果,其余的都没问题。谢谢!
答案 0 :(得分:0)
问题是numpy数据转换,这不能在range()函数中使用,我已经更正了考虑上面的代码。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li>Item</li>
</ul>
<ul>
<li>Item</li>
</ul>
<ul>
<li>Item</li>
<li>Item</li>
</ul>
<ul>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
</ul>
<ul>
<li>Item</li>
<li>Item</li>
</ul>
行:
import numpy as np
import scipy.stats as stats
from scipy.stats import poisson, norm
mu = 4.68
cs = 100
co = 300
G = poisson(mu)
p = G.pmf(np.arange(3*mu))
def Z(Q):
ES = sum(i*p[i] for i in range(len(p)))
return co*max((Q-ES), 0) + cs*max((ES-Q), 0)
Qstar = np.ceil(poisson.ppf(co/(cs+co), mu))
print(Qstar)
Qstar = int(np.float64(Qstar).item())
from scipy.integrate import quad
import pylab as pl
for Q in range(0, Qstar):
pl.plot(Q,Z(Q), '*')
pl.show()