python中的积分函数(x,y)

时间:2014-06-27 19:02:28

标签: python module integral

我的功能如下:

(np.sqrt((X)**2 + (Y)**2))/(np.sqrt((X)**2 + (Y)**2 + d**2))

我用一系列编写了一个计算积分的程序:

for i in range (num): # for X
print i
Y=(-distance)
for j in range(num): # for Y
    f=(np.sqrt((X)**2 + (Y)**2))/(np.sqrt((X)**2 + (Y)**2 + d**2))
    Y=Y+delta
    sum+=(f*(delta**2))/((2*distance)**2)
X=X+delta
print sum

它对我来说很好..但是对于某些复杂的功能来说需要很长时间。

-2.0 < XY < 2.0时是否有用于集成此功能的python模块? (或其他)

2 个答案:

答案 0 :(得分:1)

我想您要在fun等于xa以及b等于y和{{1}之间整合c }。在这种情况下,您需要做的是:

d

如果您需要更复杂的集成限制,则只需更改import numpy as np # Define 'd' to whatever value you need d = 1. # Function to integrate fun = lambda x, y: np.sqrt(x**2. + y**2.) / np.sqrt(x**2. + y**2. + d**2.) # Limits of integration a, b = -2., 2. c, d = -2., 2. gfun = lambda x: c hfun = lambda x: d # Perform integration from scipy.integrate import dblquad int, err = dblquad(fun, a, b, gfun, hfun) gfun即可。如果您对更高级的功能感兴趣,可以查看hfun的文档:http://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.dblquad.html#scipy.integrate.dblquad

答案 1 :(得分:0)

有一个库,scipy.integrate。 这应该非常简单:

func = lambda y: (np.sqrt((X)**2 + (Y)**2))/(np.sqrt((X)**2 + (Y)**2 + d**2)) and a == -2 and b == 2
from scipy import integrate
integrate.quad(func, a b)

这应该这样做。我会查阅SciPy的文档以获取更多信息。

修改:如果有问题,请确保您使用的是浮点数而不是整数。