Clear Filters
Clear Filters

Info

This question is locked. Reopen it to edit or answer.

loop while loop for

1 view (last 30 days)
Matthew
Matthew on 20 Apr 2024
Locked: Rena Berman on 5 Jun 2024
i'm trying to get this while loop to quite based on the rate of change of v being less than .05%.
the while loop quits now just based on t(i)<7; but i'm trying to figure out how i can get this loop to stop based on ((v(2)-v(1))/(t(2)-t(1))<= 0.05.
clc
clear
m = 36/1000;
g=9.81;
T=5;
A=.00044316;
Cd=0.75;
rho=1.203;
a(1)=0;
v(1)=0;
h(1)=0;
t(1)=0;
t_step=0.001;
i=1;
u(1)=0;
while t(i)<7;
a(i+1)= ((T)-(m*g)-(0.5*rho*A*Cd*v(i)^2))/m;
v(i+1)= a(i+1)*t_step+v(i);
h(i+1)= v(i+1)*t_step+h(i);
t(i+1)=t(i)+t_step;
i=i+1;
end
plot(t,v)
  2 Comments
John D'Errico
John D'Errico on 21 Apr 2024
Edited: John D'Errico on 21 Apr 2024
iF you will remove your question once you get an answer, I'd ask you not to ask a question at all. When you remove the question, you hurt the site, because the answer is no longer meaningful. It does not allow anyone else to learn from your question and this answer. You make it less likely that your next question will find someone willing to spend the time to answer your questions.
If you think you are not supposed to ask a question like this, because your teacher would not want you to do so, then WHY DID YOU ASK THE QUESTION IN THE FIRST PLACE?
Rena Berman
Rena Berman on 5 Jun 2024

(Answers Dev) Restored edit

Accepted Answer

Sulaymon Eshkabilov
Sulaymon Eshkabilov on 20 Apr 2024
I suppose that what you are trying to get is dv/dt >=0.05. Here is how you can get it done:
clc; clearvars;
m = 36/1000;
g=9.81;
T=5;
A=.00044316;
Cd=0.75;
rho=1.203;
a(1)=0;
v(1)=0;
h(1)=0;
t(1)=0;
t_step=0.001;
i=1;
u(1)=0;
dvdt = 1;
while dvdt>=0.05
a(i+1)= ((T)-(m*g)-(0.5*rho*A*Cd*v(i)^2))/m;
v(i+1)= a(i+1)*t_step+v(i);
h(i+1)= v(i+1)*t_step+h(i);
t(i+1)=t(i)+t_step;
dvdt = (v(i+1)-v(i))/(t(i+1)-t(i));
i=i+1;
end
plot(t,v, 'r-.o')
grid on
text(0.5, 10, ['The simulation is halted after: ' num2str(i) ' iterations and ' num2str(t(end)) ' [seconds]'], 'backgroundcolor', 'w')
xlabel('Time, [s]')
ylabel('Velocity, [m/s]')
  1 Comment
Matthew
Matthew on 20 Apr 2024
Thank you, I appreciate the help.

More Answers (0)

This question is locked.

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!