Borrar filtros
Borrar filtros

double integration with loop

7 visualizaciones (últimos 30 días)
José Anchieta de Jesus Filho
José Anchieta de Jesus Filho el 6 de Mzo. de 2020
thank you very much if anyone can help me.
so, I need to create a loop that calculates integrals at each point. Say I have the following function handle
D = @(x,y) x.*(Z(x,y).^2);
from that function, I need to calculate a double integral and create the following loop
int1 = @(y) integral(@(x)D(x,y),x1,x2,'ArrayValued',true);
int2 = integral(@(y)int1,y1,y2,'ArrayValued',true);
c1 = int2./g % g is a scalar number
int11 = @(y) integral(@(x)D(x,y),x2,x3,'ArrayValued',true);
int22 = integral(@(y)int11,y1,y2,'ArrayValued',true);
c11 = int22./g % g is a scalar number
int111 = @(y) integral(@(x)D(x,y),x3,x4,'ArrayValued',true);
int222 = integral(@(y)int111,y1,y2,'ArrayValued',true);
c111 = int222./g % g is a scalar number
.
.
.
i'm trying to do like this
x = 1:0.1:5
for i = 1:length(x)
D = @(x,y) x.*(Z(x,y).^2);
int1(i) = @(y) integral(@(x)D(x,y),x(i),x(i)+0.5,'ArrayValued',true);
int2(i) = integral(@(y)int1(i),y1,y2,'ArrayValued',true);
c = int2(i)./g
end
I need to plot a graph of c versus x
  5 comentarios
Walter Roberson
Walter Roberson el 6 de Mzo. de 2020
p1 = @(r) integral(@(z1) dF(z1,r),z0,z0+e,'ArrayValued',true); % e is also a scalar
p1 is a function handle.
F = integral(@(r) p1,ri,re,'ArrayValued',true);
@( r) p1 is a handle to an anonymous function that accepts a single parameter and ignores the parameter and returns the function handle p1. You should be just using
F = integral(p1,ri,re,'ArrayValued',true);
José Anchieta de Jesus Filho
José Anchieta de Jesus Filho el 6 de Mzo. de 2020
thank you very much, I will modify. But, you know how to change the function to calculate the integral for various values of z0

Iniciar sesión para comentar.

Respuesta aceptada

darova
darova el 6 de Mzo. de 2020
Here is a shot
z0 = 0:0.001:0.03;
c = z0*0;
Brt = @(z1,r) z1+r;
e = 0.1;
ri = 0;
re = 1;
ro = 15;
v = 2;
dF = @(z1,r) 2.*pi.*v.*ro.*(Brt(z1,r).^2).*r; % v , ro are scalar numbers
for i = 1:length(z0);
F = integral2(dF,z0(i),z0(i)+e,ri,re);
c(i) = F./v;
end
plot(z0,c)
  3 comentarios
darova
darova el 6 de Mzo. de 2020
Please attach the whole code
José Anchieta de Jesus Filho
José Anchieta de Jesus Filho el 7 de Mzo. de 2020
I thank you so much for your help. I changed the code a little and managed to make it work. Thank you
for i = 1:length(z0)
P = @(r) integral(@(z1) dF(z1,r),z0(i),z0(i)+e,'ArrayValued',true);
F = integral(P,ri,re,'ArrayValued',true);
c(i) = F./v;
end
plot(z0,c)

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by