Date: Sep 12, 2013 4:54 PM
Subject: Re: Help with while loop
"Yutthana Jeenjiu" <email@example.com> wrote in message <firstname.lastname@example.org>...
> Please help with trying to make the while loop work
> e =0.0015;
> D =50;
> V =2;
> Dm =0.05;
> v =1.01*10^-6;
> Re = V*Dm/v;
> N =1000;
> f = linspace(0.008,0.1,N);
> i = 0;
> f_abs = 1;
> FF = 0.008;
> while FF(end) < f_abs;
> i = i + 1;
> FF = log(e/D/3.7 + 2.51*Re*sqrt (f(i)))*sqrt(f(i))*-2;
> My aim is to iterate through f until the equation or FF is equal to 1 or less than .001 away from 1.
> Please note i am a beginner user and have no prior programming knowledge
% I don't have MATLAB installed on this computer, so I can't try to run your code.
% It would help if you said WHY you think the loop is not working
% (error message, endless loop, etc.).
% Here are some things I can point out:
while FF(end) < f_abs;
% should simply be:
while FF < f_abs;
FF = log(e/D/3.7 + 2.51*Re*sqrt (f(i)))*sqrt(f(i))*-2;
% is not correct, the *-2 at the end should give you an error.
% Perhaps you mean:
FF = -2*log(e/D/3.7 + 2.51*Re*sqrt (f(i)))*sqrt(f(i));
% The code will crash if i becomes greater than length(f)
% (assuming the while loop still doesn't terminate).
% One way around this would be to rewrite the loop as:
% N =1000;
% f = linspace(0.008,0.1,N);
f = 0.008;
% i = 0;
f_abs = 1;
FF = 0.008;
while FF < f_abs
% i = i + 1;
% FF = log(e/D/3.7 + 2.51*Re*sqrt (f(i)))*sqrt(f(i))*-2;
FF = -2*log(e/D/3.7 + 2.51*Re*sqrt (f))*sqrt(f);
f = f + 0.1;
% This may still be an endless loop, but it shouldn't crash.
% Do you perhaps mean:
while abs(FF) < f_abs
> Thanks Jimmy