returning values for iterations
조회 수: 1 (최근 30일)
이전 댓글 표시
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
채택된 답변
David Sanchez
2013년 8월 26일
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;
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Subplots에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!