Single value after integration instead of matrix
Mostrar comentarios más antiguos
Dear all,
I have a code as given below.
I want to integrate
this function and in the end i want to have numeric matrix. But when i run the code i am getting single value. What i want is having a one-dimensional matrix, each row should be calculated from the integration.
this function and in the end i want to have numeric matrix. But when i run the code i am getting single value. What i want is having a one-dimensional matrix, each row should be calculated from the integration.When i run the code i am getting "0" as a result.
Normally z is step function with a intensity 0.228. Middle of z is 0 it gives a function like ;

In the end i assign z -> alfa*sin(wt) and want to integrate over t. I should have a matrix which should give sligtly different shape then given above (bended side trough the middle).
Please help....
Vb1=0.228; dz=1E-11;
Ltot = 20e-9;
z=-Ltot/2:dz:Ltot/2;
L = 10e-9; alfa=5e-9; w=1E+14; T=2*pi/w;
t= 0:T/(length(z)-1):T;
z =z + alfa.*sin(w.*t);
Vb =@(t) ((z<-L/2).*(Vb1) + (z>-L/2).*(Vb.*(z./(2*Ltot)+0.25)) + (z>L/2).*(Vb1));
V0 = (1/T).*integral(Vb,0,T)
6 comentarios
Torsten
el 24 de Feb. de 2022
- The definition z =@(z,t) (z + alfa.*sin(w.*t)); will nowhere be used.
- Vb =@(z,t) ((z<-L/2).*(Vb1) + (z>-L/2).*0 + (z>L/2).*(Vb1)); can't be used as a function handle for "integral" since "integral" needs a function with only one input argument, not two.
- The spacings z=-Ltot/2:dz:Ltot/2; and t= 0:T/(length(z)-1):T; won't have any effect.
We still don't know what the function is you are trying to integrate.
Özgür Alaydin
el 24 de Feb. de 2022
Torsten
el 24 de Feb. de 2022
What is z ? As written, MATLAB expects a single, previously defined value for it.
Özgür Alaydin
el 24 de Feb. de 2022
Editada: Özgür Alaydin
el 24 de Feb. de 2022
If you set z = z + alfa.*sin(w.*t), z is an array of values - the integration variable t has disappeared.
So Vb does no longer depend on t.
Maybe you want this:
Vb1=0.228; dz=1E-11;
Ltot = 20e-9;
z=-Ltot/2:dz:Ltot/2;
L = 10e-9; alfa=5e-9; w=1E+14; T=2*pi/w;
for i=1:numel(z)
fz =@(t) z(i) + alfa.*sin(w.*t);
Vb = @(t) ((fz(t)<-L/2).*(Vb1) + (fz(t)>-L/2).*(Vb1.*(fz(t)./(2*Ltot)+0.25)) + (fz(t)>L/2).*(Vb1));
V0(i) = (1/T).*integral(Vb,0,T,'ArrayValued',true)
end
Özgür Alaydin
el 25 de Feb. de 2022
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Numerical Integration and Differentiation en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!