1

I need to integrate a very long function. The function contains several array and I don't succeed to integrate it. I need to integrate it on teta1 (80,) but it contains also w (22,),f (22,),Gam_Mag (22,). I tried to decompose it but I'm not sure if it's good or not.

Here is my function:

def function1(teta1,w,f,Mag_Gam): 

 Zp1=i*w*ms1*(1-(1+i*Nu)*np.sin(teta1)**4*(f/fc1)**2)
 a1=1
 b1=Zp1
 c1=0
 d1=1

 ac=np.cosh(Mag_Gam*d*np.cos(teta1))
 bc=Zc*np.sinh(Mag_Gam*d*np.cos(teta1))/np.cos(teta1)
 cc=np.sinh(Mag_Gam*d*np.cos(teta1))/Zc*np.cos(teta1)
 dc=np.cosh(Mag_Gam*d*np.cos(teta1))

 Zp2=i*w*ms2*(1-(1+i*Nu)*np.sin(teta1)**4*(f/fc2)**2)#B1/(i*w)*(k0**4*np.sin(teta)**4-kb1**4)
 a2=1
 b2=Zp2
 c2=0
 d2=1

 at=a1*ac+b1*cc
 bt=a1*bc+b1*dc
 ct=c1*ac+d1*cc
 dt=c1*bc+d1*dc

 aT=at*a2+bt*c2
 bT=at*b2+bt*d2
 cT=ct*a2+dt*c2
 dT=ct*b2+d2*dt


 T=np.array([[aT,bT],[cT,dT]])

 return  4*abs(T[0,0]+T[0,1]/Zc+Zc*T[1,0]+Zc*T[1,1]/Zc)**(-2)

Here the integration:

Tau=np.zeros(len(f))
err=np.zeros(len(f))

for n in range(len(f)):   
  Tau,err=quad(function1(teta1,w[n],f[n],Mag_Gam[n]),0,80,args=(1,)) #Integration on teta1
TL=10*np.log10(1/Tau)

And here is the error message:

1
  • The issue is in the quad() function which we can't see here. Is it scipy.integrate.quad? Lots of undefined variables makes this impossible to test Commented May 13, 2022 at 8:32

1 Answer 1

1

If you were to do this part step-by-step:

Tau,err=quad(function1(teta1,w[n],f[n],Mag_Gam[n]),0,80,args=(1,)) #Integration on teta1

You'd notice that you're giving quad (which I assume is scipy.integrate.quad) not a callable function, but an array of already computed values to work with!

Try this, instead, passing the function object (and also actually remembering to set values within your output arrays, instead of overwriting them with single numbers):

Tau[n], err[n] = quad(function1, 0,80,args=(w[n],f[n],Mag_Gam[n]))
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.