Why is this giving me an error message when trying to use trapz.

4 views (last 30 days)
Hello, I'm trying to integrate for each time step the following. But it keeps giving me an error message.
B=18.6;
t0=0;
step=0.5;
tmax=90;
npas=tmax/step+1;
U=60;
for i= 1:npas
t0=t0+step;
s = (U.*t0)./B;
fun3 = @(s) (0.0081*(exp(-0.0058.*s))-0.0392.*exp(-0.0833.*s));
y3 = fun3(s);
q3(i) = trapz(s,y3);
end
B=18.6;
t0=0;
step=0.5;
tmax=90;
npas=tmax/step+1;
U=60;
for i= 1:npas
t0=t0+step;
s = (U.*t0)./B;
fun3 = @(s) (0.0081*(exp(-0.0058.*s))-0.0392.*exp(-0.0833.*s));
y3 = fun3(s);
q3(i) = trapz(s,y3);
end
  6 Comments
Walter Roberson
Walter Roberson on 23 Aug 2019
fun3 = @(s) (0.0081*(exp(-0.0058.*s))-0.0392.*exp(-0.0833.*s)); %does not change with i
for i= 1:npas
t0=t0+step;
s(i) = (U.*t0)./B;
y3(i) = fun3(s(i));
end
q3 = trapz(s, y3);
Though I suspect you would prefer to use cumtrapz() instead of trapz() here.

Sign in to comment.

Answers (1)

Allen
Allen on 24 Aug 2019
A more concise aproach.
B = 18.6;
step = 0.5;
tmax = 90;
npas = tmax/step+1;
U = 60;
fun3 = @(s) (0.0081*(exp(-0.0058.*s))-0.0392.*exp(-0.0833.*s));
s = U/B*step*(1:npas/2/step);
y3 = fun3(s);
q3 = trapz(s,y3);

Products

Community Treasure Hunt

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

Start Hunting!