MATLAB - 绘制迭代

MATLAB - plot an iteration

目前的代码:

function [fr]=frictionFactorFn(rho,mu,e,D,L,Q,f0,tol,imax)
format long
CS=(pi*D^(2))/4;%Cross sectional area of pipe
v=Q/CS;%velocity
Re=(rho*v*L)/mu;
iter=1;i=1;fr(1)=f0;
while 1
fr(i+1)=(-1.74*log((1.254/(Re*sqrt(fr(i))))+((e/D)/3.708)))^-2;%substitution for root finding
iter=iter+1;
if abs(fr(i+1)-fr(i))<tol || iter>=imax
break;
end
i=i+1;
end
fprintf('\n The Reynolds number is %f\n',Re);
plot(0:iter-1,fr);
xlabel('Number of iteration'),ylabel('friction factor');
end

它给了我 f=0.005408015 的正确收敛值,但我想绘制迭代

可能通过在数组中每次迭代时存储 f 的值。在此示例中,数组称为 Store_f 并在 while-loop 完成后绘制。下面的变量 Index 用于指示值应保存到数组 Store_f 的哪个单元格。

function [f_vals] = frictionfactorfn()

Index = 1;

    while (Condition)
    %Calculation code%

        Store_f(Index) = f;
        Index = Index + 1;
    end

    disp(num2str(f))
    plot(Store_f,'Marker','.');
    xlabel('Iteration'); ylabel('Value');
end