numerical root finding procedures

trying to solve the part under else. eover and Re are known, but still leaves me with (f) on both side of the original colebrook equation. 1/sqrt(f) = -2*log10(eoverD/3.7 + 2.51/Re/sqrt(f)). Please help, a bit stuck.
Re = V*D1 / nu;
% Check for laminar flow.
if Re < 2300
F = 64 / Re;
else
F(f)=1/sqrt(f)+2*log10(eoverD/3.7 + 2.51/Re/sqrt(f));
end

3 Kommentare

You have written this a bit confusingly. I think it is a bit clearer to write your code as
Re = V*D1 / nu;
% Check for laminar flow.
if Re < 2300
f = 64 / Re;
else
% Here I need to calculate "f" such that it solves the equation
% 0 = 1/sqrt(f)+2*log10(eoverD/3.7 + 2.51/Re/sqrt(f));
end
Notice how I get rid of the confusing use of capital F.
See my suggestion for solving this in my answer below.
thanks for that, when i run i get in the command window;
Exiting fzero: aborting search for an interval containing a sign change because complex function value encountered during search. (Function value at -0.28 is -9.229-3.1086i.) Check function or try again with a different starting value.
code is
D = 0.1;
e = 0.0015e-3;
nu = 1.01e-6;
eoverD = e/D;
%
V = 2;
%
Re = V*D / nu;
%
if Re < 2300
f = 64 / Re;
else
darbyFormula = @(x) 1/sqrt(x)+2*log10(eoverD/3.7 + 2.51/Re/sqrt(x));
f = fzero(darbyFormula,1);
end
harley
harley am 19 Aug. 2013
got it working, thanks

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

the cyclist
the cyclist am 19 Aug. 2013
Bearbeitet: the cyclist am 19 Aug. 2013

0 Stimmen

You should be able to use the function fzero() to solve for f in your implicit equation.
>> doc fzero
for details.
I think this will do it, but definitely check:
darbyFormula = @(x) 1/sqrt(x)+2*log10(eoverD/3.7 + 2.51/Re/sqrt(x));
f = fzero(darbyFormula,1)

Weitere Antworten (1)

Walter Roberson
Walter Roberson am 19 Aug. 2013

0 Stimmen

If you do some algebraic manipulation, you get
x = 0.3340248829e22 / (-0.5020000000e11 * lambertw(.4586822894 * Re * exp(.1239681863 * eoverD * Re)) + 6223202955 * eoverD * Re)^2
with no searching (provided that eoverD already has a value)
lambertw is in the Symbolic Toolbox. If you do not have that, then see http://www.mathworks.com/matlabcentral/newsreader/view_thread/32527

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by