Python:以数组为输入的函数的多维积分



我很难用数组输入计算函数的多个积分。我想用scipy.integrate's nquad function因为我需要能够从-np.inf to np.inf中积分(我在用概率密度函数)问题是,我们期望一个函数是这样表述的:

function(x_1, x_2, ..., x_n)

我需要积分的函数采用这种形式:

function(np.array([x_1, x_2, ..., x_n]))

是否有一种方法来改变一个函数,接受多个参数的数组?如果没有,有没有替代quad的方法?我试着使用四元,但它说我的积分超过31,而实际值是1。

谢谢你的帮助。

我已经找到解决办法了。我通过创建一个接受*args的包装器函数,将args转换为numpy数组,并集成包装器函数来解决这个问题。

下面是一个例子:

from scipy.integrate import nquad
from scipy.stats import multivariate_normal
mean = [0., 0.]
cov = np.array([[1., 0.],
[0., 1.]])
bivariate_normal = multivariate_normal(mean=mean, cov=cov)
def pdf(*args):
x = np.array(args)
return bivariate_normal.pdf(x)
integration_range = [[-18, 18], [-18, 18]]
nquad(pdf, integration_range)
Output: (1.000000000000001, 1.3429066352690133e-08)

相关内容

  • 没有找到相关文章

最新更新