循环故障排除时的Matlab

时间:2013-04-24 16:24:18

标签: matlab

我是新手使用Matlab并需要一些帮助来解决这个问题。 我无法让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

2 个答案:

答案 0 :(得分:3)

这是因为时间没有变化:t=t0+dt;将始终为t转换相同的值,这也会阻止Velocity2降低,因此始终保持在-20以上,这将是导致无限循环。 将t=t0+dt;更改为t=t+dt;应该可以解决问题。

答案 1 :(得分: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