我是新手使用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
答案 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