如何用Python的scipy.integrate.quad评估多元函数的单积分?

时间:2015-01-22 22:34:58

标签: python scipy

我正在尝试使用scipy.integrate.quad在Python中集成一个函数。这个特殊的函数有两个参数。我想要整合一个论点。示例如下所示。

from scipy import integrate as integrate
def f(x,a):  #a is a parameter, x is the variable I want to integrate over
    return a*x

result = integrate.quad(f,0,1)

这个例子不起作用(你可能很清楚)因为Python在我尝试时提醒我:

TypeError: f() takes exactly 2 arguments (1 given)

我想知道当给定的函数通常是一个多变量函数时,如何使用integrate.quad()来集成单个变量意义,并且额外的变量为函数提供参数。

2 个答案:

答案 0 :(得分:9)

the scipy documentation找到答案。

您可以执行以下操作:

from scipy import integrate as integrate
def f(x,a):  #a is a parameter, x is the variable I want to integrate over
    return a*x

result = integrate.quad(f,0,1,args=(1,))

args=(1,)方法中的quad参数将使a=1进行积分评估。

这也可以用于具有两个以上变量的函数:

from scipy import integrate as integrate
def f(x,a,b,c):  #a is a parameter, x is the variable I want to integrate over
    return a*x + b + c

result = integrate.quad(f,0,1,args=(1,2,3))

这将使a=1, b=2, c=3成为整体评估。

要想要以这种方式集成的函数要记住的重要事项是将要集成的变量通过第一个参数集成到函数中。

答案 1 :(得分:3)

使用args参数(请参阅scipy documentation):

result = integrate.quad(f,0,1, args=(a,))

args=(a,)中的逗号是必需的,因为必须传递元组。