Problems with using a loop structure within an fzero command.
显示 更早的评论
I have a file which uses the fzero command and works just fine as it gives me values of x when Re is chosen. See below:
F = @(f,Re) 2*log10(Re*sqrt(f))-0.8-(1/sqrt(f)); % parameterized function
Re = 1e7; % parameter
fun = @(f) F(f,Re); % function of x alone
x = fzero(fun,.05)
I am trying to use several scalar values for Re via a looping structure, but I am struggling to understand how to use it properly. My attempt is below:
F = @(f,Re) 2*log10(Re*sqrt(f))-0.8-(1/sqrt(f)); % parameterized function
Re = linspace(1e4,1e7,31); % parameter
fCW = zeros(size(Re));
for k = 1:length(Re)
fCW(k) = fzero(@(f) F(Re(k), f), 0.05);
end
3 个评论
Yianni
2014-11-8
per isakson
2014-11-8
编辑:per isakson
2014-11-8
Have you tried to plot F(f) for a few values of Re? See  ezplot
Yianni
2014-11-8
回答(1 个)
per isakson
2014-11-8
编辑:per isakson
2014-11-8
First compare the order of the input arguments in
F = @(f,Re) 2*log10(Re*sqrt(f))-0.8-(1/sqrt(f));
and in
fCW(k) = fzero( @(f) F( Re(k), f ), 0.05 );
then replace
fCW(k) = fzero( @(f) F( Re(k), f ), 0.05 );
by
fCW(k) = fzero( @(f) F( f, Re(k) ), 0.05 );
and the loop will return a vector of numbers
>> fCW = cssm()
fCW =
0.0309 0.0104 0.0093 0.0087 0.0084 0.0081
where
function fCW = cssm()
F = @(f,Re) 2*log10(Re*sqrt(f))-0.8-(1/sqrt(f));
Re = linspace(1e4,1e7,6);
fCW = zeros(size(Re));
for k = 1:length(Re)
fCW(k) = fzero( @(f) F(f,Re(k)), 0.05 );
end
end
 
In response to comment
[fCW,fB,fSJ,Re] = cssm()
figure, semilogy( fCW, Re, 'd' )
where
function [fCW,fB,fSJ,Re] = cssm()
F = @(f,Re) 2*log10(Re*sqrt(f))-0.8-(1/sqrt(f));
Re = logspace( 4,7,31 );
fCW = zeros(size(Re));
fB = zeros(size(Re));
fSJ = zeros(size(Re));
for k = 1:length(Re)
fCW(k) = fzero( @(f) F(f,Re(k)), 0.05);
fB(k) = 0.3164/Re(k)^0.25;
fSJ(k) = 0.25/(log(5.74/Re(k)^0.9))^2;
end
end
2 个评论
Yianni
2014-11-8
per isakson
2014-11-8
编辑:per isakson
2014-11-8
Did you try? Why
fB(:,k)
rather than
fB(k)
Right hand side
0.3164/Re(k)^0.25
returns a scalar
类别
在 帮助中心 和 File Exchange 中查找有关 MATLAB 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!