【问题标题】:How do you plot multiple functions in a do loop如何在 do 循环中绘制多个函数
【发布时间】:2014-09-24 02:31:34
【问题描述】:

我无法使用 Do 循环在单独的图表上绘制多个函数。我已经想出了如何只为一个 fit 函数执行此操作,但现在我必须为另外 9 个 fit 函数执行此操作。

m = 10;
t0IGList = {0.01, 0.01, 0.012, 0.015, 0.018, 0.022, 0.028, 0.035, 
0.042, 0.05};

SubDataFit = 
NonlinearModelFit[SubDataList[[1]], 
A/(1 + (2 (t - t0)/\[Sigma])^2) + 
B0, {{A, 0.7}, {t0, t0IGList[[1]]}, {\[Sigma], 0.006}, {B0, 7.0}},
t];

SubFitPlot = 
Plot[SubDataFit[t], {t, 0, 0.07}, ImageSize -> 500, 
FrameLabel -> {"Time (s)", "Voltage (V)"}, PlotStyle -> Red, 
PlotRange -> {7, 7.8}];

Do[{
   SubDataFit[[i]] = 
   NonlinearModelFit[SubDataList[[i]], 
   A/(1 + (2 (t - t0)/\[Sigma])^2) + 
   B0, {{A, 0.7}, {t0, t0IGList[[i]]}, {\[Sigma], 0.006}, {B0, 
   7.0}}, t];
   SubFitPlot = 
   Plot[SubDataFit[t], {t, 0, 0.07}, ImageSize -> 500, 
   FrameLabel -> {"Time (s)", "Voltage (V)"}, PlotStyle -> Red];
   Print["B = ", i, "Volts"];
   Print[SubDataPlot];}, {i, 1, m}];

【问题讨论】:

    标签: wolfram-mathematica


    【解决方案1】:

    您说您想在“单独的图表上绘制多个函数”,这似乎意味着您想要 10 个单独的图表。如果是这样。如果是这样,您可以分离出您想要的两部分:在循环中生成拟合并将它们收集到列表中,然后绘制拟合函数。您可以根据需要使绘图功能变得复杂。简单例子:

    flst = {x, x^2, x^3, Log[x]}
    Plot[#, {x, 0.01, 2}] & /@ flst
    

    一旦你有了这个地块列表,你就可以对它们做任何你想做的事情(例如,制作一个GraphicsGridExport 它们等)

    【讨论】:

      【解决方案2】:

      尝试使用模块。创建函数

          plot[i_]:=Module[{local variables for module},
          Any actions you want: fits, calculations etc. Separate them with ";";
          Plot[i-th function]].
      

      然后你可以使用这个函数与你的范围不同的 i 来创建你想要的图。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-03
        • 1970-01-01
        • 1970-01-01
        • 2021-03-08
        • 1970-01-01
        • 2019-06-30
        • 2021-03-12
        • 1970-01-01
        相关资源
        最近更新 更多