2013-04-24 163 views
0

我是新来使用Matlab,需要一些帮助来解决这个while循环。 我无法让while循环工作。我想循环继续,直到变量Velocity2> = - 20,但代码不停止运行。Matlab循环故障排除

功能

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 

回答

3

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

+0

它做到了,太感谢你了! – ErkNis 2013-04-24 16:46:45

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 
+0

工作很好,谢谢! – ErkNis 2013-04-24 16:47:17