numerical root finding procedures
10 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
the cyclist
le 19 Août 2013
Modifié(e) : the cyclist
le 19 Août 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)
0 commentaires
Plus de réponses (1)
Walter Roberson
le 19 Août 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
0 commentaires
Voir également
Catégories
En savoir plus sur Variables dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!