如何在do循环中绘制多个函数

时间:2014-09-24 02:31:35

标签: wolfram-mathematica

我无法使用Do循环在单独的图上绘制多个函数。我已经找到了如何只为一个拟合函数做到这一点,但现在我必须为9个更合适的函数做到这一点。

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}];

2 个答案:

答案 0 :(得分:0)

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

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

获得此图表后,您可以随意执行任何操作(例如,制作GraphicsGridExport等等。

答案 1 :(得分:0)

尝试使用Module。创建一个功能

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

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

相关问题