There is a function I am trying to integrate in Python using scipy.integrate.quad
. This particular function takes two arguments. There is only one argument I want to integrate over. An example is shown below.
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)
This example doesn't work (as is likely clear to you) since, as Python reminds me when I try it:
TypeError: f() takes exactly 2 arguments (1 given)
I am wondering how to use integrate.quad()
to integrate in a single variable sense when the function given is, in general, a multi-variable function, with the extra variables providing parameters to the function.
Numerical integration is provided by the quad() function of the scipy. integrate module. It takes as input arguments the function f(x) to be integrated (the “integrand”), and the lower and upper limits a and b.
The scipy documentation states that integrate. quad uses "a technique from the Fortran library QUADPACK".
Found the answer in the scipy documentation.
You can do the following:
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,))
The args=(1,)
argument in the quad
method will make a=1
for the integral evalution.
This can also be carried to functions with more than two 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))
This will make a=1, b=2, c=3
for the integral evaluation.
The important thing to remember for the function you want to integrate this way is to make the variable you want to integrate over the first argument to the function.
Use the args
argument (see the scipy documentation):
result = integrate.quad(f,0,1, args=(a,))
The comma in args=(a,)
is required because a tuple must be passed.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With