returning values for iterations
4 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Partial code below. I want to use the Va calculated at the bottom as the Vo in the next iteration, how would i do this. The initial Vo is only there to get iterations rolling.
Vn = 2:0.1:30;% iteration length.
Vo = 2;% initial Vo to calc Re and f.
%
Re = (Vo.*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,0.01);
end
%
dPloss_1 = (f*rho*(L/D)) * ((Vn*Vo)./2);
Va = (alpha*Vn)+((1-alpha)*Vo); % this to become the new Vo for next iteration.
Q=Va*A
0 Commenti
Risposta accettata
David Sanchez
il 26 Ago 2013
Just set the equality:
Vo = Va; % right after your last line of code.
Like this:
Vn = 2:0.1:30;% iteration length.
Vo = 2;% initial Vo to calc Re and f.
%
Re = (Vo.*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,0.01);
end
%
dPloss_1 = (f*rho*(L/D)) * ((Vn*Vo)./2);
Va = (alpha*Vn)+((1-alpha)*Vo); % this to become the new Vo for next iteration.
Q=Va*A;
Vo = Va;
But shouldn't you use a while or for , instead of a if in your code? I don't know how it is implemented, but it should go more or less like this:
Vo = 2;% initial Vo to calc Re and f.
for Vn = 2:0.1:30;% iteration length.
%
Re = (Vo.*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,0.01);
end
%
dPloss_1 = (f*rho*(L/D)) * ((Vn*Vo)./2);
Va = (alpha*Vn)+((1-alpha)*Vo); % this to become the new Vo for next iteration.
Q=Va*A;
Vo = Va;
end % for Vn = 2:0.1:30;
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Language Fundamentals 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!