【问题标题】:define an integration function in python在python中定义一个集成函数
【发布时间】: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


【解决方案1】:
X = [0.1*i for i in xrange(40)]
Y = [TotalEnergy_GW_onelevel(x) for x in X]
plot(X,Y)

【讨论】:

  • 非常感谢。我在编程时需要学习很多关于思维方式的知识……我需要学习如何让我的代码更快、更高效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-06
  • 1970-01-01
  • 2014-10-12
  • 2018-07-07
  • 2016-03-10
  • 1970-01-01
  • 2018-11-30
相关资源
最近更新 更多