How can I put an integral inside a for loop when the bounds depend on the loop's variable?

5 Ansichten (letzte 30 Tage)
Hi, I would like to do this integration where the j of cj is the loop variable.
I tried this but when I calculate Phi_ij1(1,1) for example, Matlab says "unrecognized function or variable 'y' ". Can you help me?
for j=1:13
x_max1 = @(y,j) (-sqrt(3)/3).*y + c(j);
y_min1 = @(j) (sqrt(3)/2)*c(j);
y_max1 = @(j) c(j)*sqrt(3);
Phi_ij1 = @(i,j) integral2(B_zi(i,x,y), 0, x_max1(y,j),0,y_max1(j)) - integral2(B_zi(i,x,y),0, x_max1(y,j),y_min1(j),y_max1(j)) ;
end
  5 Kommentare
darova
darova am 1 Apr. 2020
Try to specify variables integral depends on
Phi_ij1 = @(i,j) integral2(@(x,y)B_zi(i,x,y), 0, @(y)x_max1(y,j),0,y_max1(j)) - ...
integral2(@(x,y)B_zi(i,x,y), 0, @(y)x_max1(y,j),y_min1(j),y_max1(j)) ;

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

darova
darova am 1 Apr. 2020
Here is an example for integral3
According to this integration is done from z to x
You have only y. Looks like x=x(y) in your case
So you have to integrate by x first
Try to replace limits of integration
Phi_ij1 = @(i,j) integral2(@(x,y)B_zi(i,x,y), 0, y_max1(j)), 0, @(y)x_max1(y,j) - ...
integral2(@(x,y)B_zi(i,x,y), y_min1(j),y_max1(j), 0, @(y)x_max1(y,j)) ;
  2 Kommentare
sawdiia_too
sawdiia_too am 2 Apr. 2020
In the example, the integration of x is from a scalar to a scalar while on mine the integrations are from functions to functions (one depending on y like you said x(y) and the other depending on j y(j))

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Torsten
Torsten am 2 Apr. 2020
Phi_ij1 =@(i,j) integral2(@(y,x) B_zi(i,x,y),0,y_min1(j),0,@(y)x_max1(y,j));
  7 Kommentare
Torsten
Torsten am 2 Apr. 2020
integral 0 -> ymax1 - integral ymin1 -> ymax1 = integral 0 -> ymin1 (outer integral)

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu MATLAB finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by