having trouble making this iterate for each increment of Vn, it goes straight to Vn = 30, i want it to also to calc a new Re, f, dPloss_1, Va & Q with each new iteration.
D = 0.1; L = 10; A = 0.25*pi*D^2; e = 0.0015e-3; rho = 998; nu = 1.01e-6; eoverD = e/D; alpha = 0.1; Vo = 2; 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); Q=Va*A; Vo = Va; end %
No, of course it iterates through 2:0.1:30. You can test this easily either by using the debugger or by a disp(Vn) command inside the loop.
The problem might be, that the result is overwritten in each iteration. So try:
Vn_pool = 2:0.1:30; Q = zeros(1, length(Vn_pool))); % pre-allocate!!! for k = 1:length(Vn_pool) Vn = Vn_pool(k); ... Q(k) = Va * A; % same for the other values wanted as outputs end