Azzera filtri
Azzera filtri

Help with Colebrook equation and f zero command.

3 visualizzazioni (ultimi 30 giorni)
I am trying to do a problem with the colebrook equation in which I have to find the roots of the equation to find "f". I am trying to use the fzero command along with a function file, but it is not working. How do I do this?
function f = fricfactor(f) Re = linspace(10e4,10e7,31); f = (1/sqrt(f))-2*log10(Re*sqrt(f))-0.8; end
fcw = fzero(@fricfactor,[0 1]);

Risposta accettata

Torsten
Torsten il 7 Nov 2014
f=@(x)(1/sqrt(x)-2*log10(Re*sqrt(x))-0.8);
Re=10000;
Delta_Re=200;
for i=1:20
fcw(i)=fzero(f,[1e-8 1]);
Reynolds(i)=Re;
Re=Re+Delta_Re;
end
Best wishes
Torsten.
  3 Commenti
Yianni
Yianni il 7 Nov 2014
Im actually getting this error when I do this:
Error: File: prac.m Line: 10 Column: 15 "f" was previously used as a variable, conflicting with its use here as the name of a function or command. See "How MATLAB Recognizes Command Syntax" in the MATLAB documentation for details.
Yianni
Yianni il 7 Nov 2014
I get this specifically for your work:
Operands to the and && operators must be convertible to logical scalar values.
Error in fzero (line 423) while fb ~= 0 && a ~= b
Error in prac2 (line 9) fcw(i)=fzero(f,[1e-8 1]);

Accedi per commentare.

Più risposte (1)

Torsten
Torsten il 7 Nov 2014
Re=10000;
f=@(x)(1/sqrt(x)-2*log10(Re*sqrt(x))-0.8);
fcw = fzero(f,[1e-8 1]);
If you want to determine fcw for different Reynolds numbers, you will have to do that in a for Loop.
Best wishes
Torsten.
  1 Commento
Yianni
Yianni il 7 Nov 2014
Yes I want to use a looping structure, but where could I do this in this function file?

Accedi per commentare.

Categorie

Scopri di più su Partial Differential Equation Toolbox in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by