0

我是使用 Matlab 的新手,需要一些帮助来修复这个 while 循环。我无法让while循环工作。我希望循环继续,直到变量 Velocity2 >= -20 但代码不会停止运行。

职能

function [a] = acceleration(F,m,g) a=(F-m*g)/m;

function [v] = velocity(a,t,v0,t0) v=v0+a*(t-t0);

function [h] = height(a,t,h0,v0,t0) h=h0+v0*(t-t0)+(1/2)*a*(t-t0).^2;

代码

t0=0.15; % Initial time

dt=0.001; % Timesteps/Precision

v0=46.5285; % Initial velocity

h0=3.4896% Initial height

m=0.05; %Mass

g=9.81; % The gravitational constant

Velocity2=v0;

while Velocity2>=-20

 t=t0+dt;
 Velocity2=velocity(acceleration(0,m,g),t,v0,t0);
 Height2=height(acceleration(0,m,g),t,h0,v0,t0);

end
4

2 回答 2

3

这是因为时间没有改变:t=t0+dt;将始终转动相同的值,t这也将阻止 Velocity2 变低,因此始终保持在 -20 以上,这将导致无限循环。更改t=t0+dt;t=t+dt;应该修复它。

于 2013-04-24T16:35:06.000 回答
1

你需要这个:

t = t0

while Velocity2>=-20
    Velocity2=velocity(acceleration(0,m,g),t,v0,t0);
    Height2=height(acceleration(0,m,g),t,h0,v0,t0);

    t = t + dt;
end
于 2013-04-24T16:42:33.383 回答