我的功能如下:
(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 < X
和Y < 2.0
时是否有用于集成此功能的python模块? (或其他)
答案 0 :(得分:1)
我想您要在fun
等于x
和a
以及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的文档以获取更多信息。
修改:如果有问题,请确保您使用的是浮点数而不是整数。