# Double Integral using Integral2 Error

1 view (last 30 days)

Show older comments

jack carter
on 17 Apr 2017

Answered: Shahid Hasnain
on 15 Nov 2018

I am trying to write code for the attached equation in matlab but I am getting errors.

My code is as under;

phi=0.0:0.01:90;

P=sqrt((pi^2*Ef*df^3*rounot*S*(1+n))/(4)+(pi^2*Ef*df^3*Gd)/(2));

p_phi=sin(phi);

p_z=2/Lf;

m1=P*exp(f*phi); %multiplier,inside the integral part of eq#8.

m2=(4*Vf)/(pi*df^2); %multiplier, outside the integral part of eq#8.

myfun_eq8=@(z,phi) m1.*p_phi.*p_z;

I= integral2(myfun_eq8,0,1,0,pi/2);

sigma_b=m2*I;

I am getting the following error, can someone help me correct it.

Error using integral2Calc>integral2t/tensor (line 241) Integrand output size does not match the input size.

Error in integral2Calc>integral2t (line 55) [Qsub,esub] = tensor(thetaL,thetaR,phiB,phiT);

Error in integral2Calc (line 9) [q,errbnd] = integral2t(fun,xmin,xmax,ymin,ymax,optionstruct);

Error in integral2 (line 106) Q = integral2Calc(fun,xmin,xmax,yminfun,ymaxfun,opstruct);

Error in myeqsetlin (line 160) I= integral2(myfun_eq8,0,1,0,pi/2);

##### 6 Comments

Andrew Newell
on 18 Apr 2017

### Accepted Answer

Andrew Newell
on 18 Apr 2017

Based on the above discussion, the critical part of code you need is as follows:

myfun_eq8=@(phi) exp(f*phi).*cos(phi).*sin(phi);

I= integral(myfun_eq8,0,pi/2);

All the other terms can stay outside of the integral.

### More Answers (2)

David Goodmanson
on 17 Apr 2017

Edited: David Goodmanson
on 18 Apr 2017

Hi jack, I believe this is occurring because your definition of myfun_eqn8 uses the two variables z,phi, but the integrand m1.*p_phi.*p_z is not explicitly a function of either of those variables. Matlab does not know how to create the integrand for arbitrary z,phi. You need to define m1, p_phi,p_z explicitly in myfun_eqn8.

Once this gets working the first and third lines of code will probably become superfluous anyway, but right now you are taking the sine of angles in degrees. You can convert to radians or use the sind function there.

##### 5 Comments

David Goodmanson
on 18 Apr 2017

Edited: David Goodmanson
on 18 Apr 2017

Shahid Hasnain
on 15 Nov 2018

I have following expression with x=[1 2 3 4 5], y=[1 2 3 4 5],

L = 100; % Length of the box

p=1;

q=1;

Ui = @(x,y) sin(pi*x).*sin(pi*y); % An initial distribution for u, i.e. the u(x,y,0)

Vi = @(x,y) sin(pi*x).*sin(pi*y); % An initial distribution for v, i.e. the v(x,y,0)

Wi = Ui(x,y) + Vi(x,y); % Initial condition for w, i.e. w(x,y,0)

% Computation of the b-coefficients

if p < Ntrunc

if q < Ntrunc

my_integrand = @(x,y) 4*Wi.*sin(p.*x).*cos(q.*y)/L^2;

bd(p,q) = integral2(my_integrand(x,y),0,L,0,L);

q = q+1;

end

p = p+1;

end

I got following error,

Error using integral2Calc>integral2t/tensor (line 231)

Input function must return 'double' or 'single' values. Found 'function_handle'.

Error in integral2Calc>integral2t (line 55)

[Qsub,esub] = tensor(thetaL,thetaR,phiB,phiT);

Error in integral2Calc (line 9)

[q,errbnd] = integral2t(fun,xmin,xmax,ymin,ymax,optionstruct);

Error in integral2 (line 106)

Q = integral2Calc(fun,xmin,xmax,yminfun,ymaxfun,opstruct);

Correction will be highly appreciated.

##### 0 Comments

### See Also

### Categories

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!