MATLAB: Won’t the while loop terminate

while loopwhile loop won't terminate

I'm basically trying to get the value of "F" be within 10% of the "W" value. When I run this code and watch the output, I can see the "forceErr" values drop below 10% but my while loop won't terminate for some reason. Can anyone figure out why?
format long
r = 0.1;
h = 0.5;
m = 6;
g = 9.81;
W = m*g;
rhoFluid = 1000;
forceErr = 1;
while forceErr > 0.1
for z = 0:0.01:0.5
pressure = rhoFluid*g*z;
for theta = 0:pi/50:2*pi
A = 1/2*r^2*theta;
F = A*pressure;
forceErr = abs((F - W)/W)
end
end
end

Best Answer

Because forceErr is never <= 0.1.
Your while loop is actually unnecessary here. It doesn't add to the solution. It will just recompute the exact same results as before. Everything is actually happening inside your for loops.
What you might want to do is replace the outer for loop with a while loop. Before the while loop, define an initial value for z. Then, inside the while loop, increment that value of z by some amount each time. This will allow your value for pressure to continue changing until a result is found that meets your stopping criteria.
Related Question