Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.


Math Forum » Discussions » Software » comp.soft-sys.matlab

Topic: Help with while loop
Replies: 1   Last Post: Sep 12, 2013 4:54 PM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Curious

Posts: 2,006
Registered: 12/6/04
Re: Help with while loop
Posted: Sep 12, 2013 4:54 PM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

"Yutthana Jeenjiu" <jimmyj79@iinet.net.au> wrote in message <l0so6n$g3n$1@newscl01ah.mathworks.com>...
> 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;
> end
>
> 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;
end

% This may still be an endless loop, but it shouldn't crash.
% Do you perhaps mean:
while abs(FF) < f_abs
% instead?

>
> Thanks Jimmy




Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.