在python中定义一个集成函数

在python中定义一个集成函数,python,function,integration,Python,Function,Integration,我的代码是: 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)

我的代码是:

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\u GW\u onelevelex=\int dnw A\u GW\u onelevelnw

但是这个代码确实有效。我尝试了其他方法,但仍然找不到正确的方法。我刚开始做编程工作


它给出了正确的总能量X值。但它没有策划任何事情。在绘图中,除了两个轴之外,没有其他东西。

但此代码确实有效。那么问题是什么呢?:-如果代码不起作用,您需要告诉我们它是如何起作用的。它会引发异常吗?您是否看到不正确的值?你希望看到什么?@Martijn Pieters好吧,我发现了一些错误。quad将提供两个输出。集成结果和错误。我们应该只取积分结果,这样在绘图中x和y的尺寸将是相同的。但仍然没有给我正确的计划。图上除了两个轴外没有其他内容……您可以先添加一些打印语句,以便查看函数为给定输入生成的输出。@Martijn Pieters是的,但实际上,TotalEnergy_GW_onelevelx值是正确的……您可能需要打开“保持”进行打印,因为你正在循环和绘制许多单独的点。或者你可以一次计算出所有的值,然后画出向量。非常感谢。当我在编程的时候,我需要在思考的方式上学到很多。。。我需要学习如何使我的代码更快、更高效。
X = [0.1*i for i in xrange(40)]
Y = [TotalEnergy_GW_onelevel(x) for x in X]
plot(X,Y)