Any help to compute this integration, F
function is defined using the f
function which involves the first integration, finally, integrate F
.
from scipy.integrate import quad
f = lambda x,a : a**2*x
def F(s,a):
return quad(f,0,s,args=(a,))
quad(F,0,5,args=(4,))
Got the error:
2 def F(s,a):
3 return quad(f,0,s,args=(a,))
----> 4 quad(F,0,5,args=(4,))
5
446 if points is None:
447 if infbounds == 0:
--> 448 return _quadpack._qagse(func,a,b,args,full_output,epsabs,epsrel,limit)
449 else:
450 return _quadpack._qagie(func,bound,infbounds,args,full_output,epsabs,epsrel,limit)
TypeError: must be real number, not tuple
Have a look at the return values of scipy.integrate.quad
:
Returns:
y
:float
The integral of func from a to b.
abserr
:float
An estimate of the absolute error in the result....
So there are multiple return values (a tuple) and that's why you're getting the TypeError: must be real number, not tuple
message.
I guess, you're just interested in the integral value quad(...)[0]
so that's what your F
should return:
from scipy.integrate import quad
f = lambda x, a: a**2 * x
F = lambda x, a: quad(f, 0, x, args=(a,))[0]
I = quad(F, 0, 5, args=(4,))
print(I)
Which prints:
(333.33333333333337, 3.700743415417189e-12)