【发布时间】:2014-01-03 16:10:42
【问题描述】:
我的代码是:
def A_GW_onelevel(nw):
G4=1.0/(nw-0.001j-(x**2/(nw-x**2/w_b+w_b-0.001j)))
return nw*(1.0/(math.pi))*abs(G4.imag)
def TotalEnergy_GW_onelevel(x):
GW,err=quad(A_GW_onelevel,-4.0,0.0)
return GW
for x in (0.1*i for i in xrange(40)):
print TotalEnergy_GW_onelevel(x)
plot(x, TotalEnergy_GW_onelevel(x))
show()
我想做的是绘制函数TotalEnergy_GW_onelevle(x)=\int d(nw) A_GW_onelevel(nw)
但是这段代码确实有效。我尝试了其他方法,但仍然找不到正确的方法。我刚开始做编程工作。
它给出了正确的 TotalEnergy_GW_onelevel(x) 值。但它没有绘制任何东西。在绘图中,除了两个轴之外什么都没有。
【问题讨论】:
-
但此代码确实有效。那么问题是什么? :-) 如果代码不起作用,您需要告诉我们如何它不起作用。它会抛出异常吗?您看到不正确的值吗?你期待看到什么?
-
@Martijn Pieters 好的,我发现了一些错误。 quad 将给出两个输出。积分结果和错误。我们应该只取积分结果,以便绘图中 x 和 y 的维度相同。但仍然没有给我正确的绘图。图中除了两条轴外什么都没有……
-
您可以先添加一些
print语句,以便查看给定输入的函数产生的输出。 -
@Martijn Pieters 是的,我做到了,但实际上 TotalEnergy_GW_onelevel(x) 值是正确的......
-
您可能需要为绘图打开保持,因为您正在循环并绘制许多单独的点。或者您可以只计算所有值并一次性绘制向量。
标签: python function integration