¿Cómo evaluar integrales simples de funciones multivariadas con scipy.integrate.quad de Python?

Hay una función que estoy intentando integrar en Python usando scipy.integrate.quad . Esta función particular toma dos argumentos. Solo hay un argumento sobre el que quiero integrarme. A continuación se muestra un ejemplo.

 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) 

Este ejemplo no funciona (como es claro para usted) ya que, como Python me recuerda cuando lo bash:

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

Me pregunto cómo usar integrate.quad() para integrar en un solo sentido variable cuando la función dada es, en general, una función de múltiples variables, con las variables adicionales que proporcionan parámetros a la función.

Encontré la respuesta en la documentación de scipy .

Puedes hacer lo siguiente:

 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,)) 

El argumento args=(1,) en el método quad hará a=1 para la evaluación integral.

Esto también se puede llevar a funciones con más de dos variables:

 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)) 

Esto hará que a=1, b=2, c=3 para la evaluación integral.

Lo importante que debe recordar para la función que desea integrar de esta manera es hacer que la variable que desea integrar sobre el primer argumento de la función.

Use el argumento args (vea la documentación de scipy ):

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

La coma en args=(a,) es obligatoria porque se debe pasar una tupla.