【问题标题】:MATLAB - plot an iterationMATLAB - 绘制迭代
【发布时间】:2021-02-16 22:56:46
【问题描述】:

到目前为止的代码:

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 的正确收敛值,但我想绘制迭代

【问题讨论】:

  • 请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Exchange 网络上发帖,您已在 CC BY-SA 4.0 license 下授予 Stack Exchange 分发该内容的不可撤销的权利(即无论您未来的选择如何)。根据 Stack Exchange 政策,帖子的非破坏版本是分发的版本。因此,任何破坏行为都将被撤销。如果您想了解更多关于删除帖子的信息,请参阅:How does deleting work?
  • 完整的问题描述由 OP 在他的another post 中发布

标签: matlab matlab-figure


【解决方案1】:

可能通过将每次迭代时f 的值存储在一个数组中。在此示例中,该数组称为Store_f,并在 while 循环完成后绘制。下面的变量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

【讨论】:

  • 没问题,乐于助人。 'Marker','.' 添加了小数据点的点,如果你不需要这些点,你可以将其删除或将它们更改为各种不同的符号,例如*x
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多