Вы не сохраняете свои промежуточные значения, поэтому rex
и h
перезаписываются каждый раз, и доступны только значения из последней итерации.Решите это, сохранив значения в массиве:
Pr=1.05;
lam=0.167;
l=2;
rex=100;
rex_array = [];
h_array = [];
while (rex<2900)
h=((0.664*Pr^(1/3)*lam)/l)*rex^(1/2) ;
rex=rex+100;
% store values in array (appending)
rex_array(end+1) = rex;
h_array(end+1) = h;
end
figure(1); clf;
plot(rex_array,h_array);
Это не рекомендуется, поскольку rex_array
и h_array
увеличиваются в размере с каждой итерацией.Таким образом, вместо этого вы используете цикл for.
rex = 100:100:2900; % or to give same result as the while loop: 100:100:2800
h = zeros(size(rex)); % initialize h to be a zero vector with the same size as rex
% loop over rex
for k = 1:numel(rex)
% store each value in h(k):
h(k)=((0.664*Pr^(1/3)*lam)/l)*rex(k)^(1/2) ;
end
figure(1); clf;
plot(rex,h);
Хотя лучше всего полностью избежать цикла и использовать векторизацию:
rex = 100:100:2900; % or to give same result as the while loop: 100:100:2800
h=((0.664*Pr^(1/3)*lam)/l)*rex.^(1/2);
Используя .^
каждый элемент в rex
будет в квадрате по элементам.