How to make a function proceed in time when t is unknown

1 view (last 30 days)
Hi!
I have a function, for example speed as following:
v= v0 + a.*(t-t0);
If I have the input variables v0, a and t0 but t is unknown and I know that for this specific step the process will continue until v=-20 m/s. How can I make matlab plot the whole process with small time steps (dt) until the speed is -20 m/s?
I'm thinking about using a while function such as:
while v>=-20
v0=46;
t0=2;
a=-9.81;
v= v0+a*(t-t0);
end
It would be great if anyone could help me with that cause I am having real hard trouble to find how this should be done and trial and error does not seem to be the best solution!
Thanks

Accepted Answer

Mischa Kim
Mischa Kim on 2 Feb 2014
Edited: Mischa Kim on 2 Feb 2014
I suggest computing the time tend at which v=-20 m/s by hand, since it is so simple and then use
v0 = 46;
t0 = 2;
a = -9.81;
t = linspace(t0, tend, 50);
for ii = 1:length(t)
v(ii) = v0 + a*(t(ii) - t0);
end
Alternatively, you can use your while loop instead
v(1) = v0;
t(1) = t0;
dt = 0.1; % or any other value
ii = 1;
while v(ii) >= -20
ii = ii + 1;
t(ii) = t(ii - 1) + dt;
v(ii) = v(ii - 1) + a*(t(ii) - t0);
end
  2 Comments
Mischa Kim
Mischa Kim on 2 Feb 2014
Edited: Mischa Kim on 2 Feb 2014
Yep, as I was suggesting, compute tend by hand. Or add another line
tend = (-20 - v0)/a + t0;
The problem with the while-loop is that you might not exactly hit the -20 m/s. You can, but this will make your algorithm much more complex.
Maria Andersson
Maria Andersson on 2 Feb 2014
When I run the code you suggested, I get the following error message:
Undefined function 't' for input arguments of type 'double'.
Error in Inl_Raket (line 21)
v(i)= 46 + a*(t(i)-2);
Any idea why this happens?

Sign in to comment.

More Answers (0)

Categories

Find more on Mathematics in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!