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 comentarios

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.
harley
harley el 19 de Ag. de 2013
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 el 19 de Ag. de 2013
got it working, thanks

Iniciar sesión para comentar.

 Respuesta aceptada

the cyclist
the cyclist el 19 de Ag. de 2013
Editada: the cyclist el 19 de Ag. de 2013
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)

Más respuestas (1)

Walter Roberson
Walter Roberson el 19 de Ag. de 2013
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

Categorías

Etiquetas

Preguntada:

el 19 de Ag. de 2013

Community Treasure Hunt

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

Start Hunting!

Translated by