看看这是否符合您的要求。我只是使用 ListPlot 而不是 plot。
但我不确定你在做什么,因为你正在绘制f
c 从 0 到 1,但是然后将 x 范围设置为仅从 0 到 0.05?那么为什么不直接f
使用{c,0,0.05}
呢?可能是我错过了一些东西。
无论如何,这就是我所拥有的
Manipulate[
xmax = 0.05;
y = Table[f[a, b, c], {c, 0, xmax, 0.01}];
max = Max[y];
min = Min[y];
Plot[f[a, b, c], {c, 0, 1},
PlotRange -> {{0, xmax}, {min, max}}, ImagePadding -> 30],
{a, 0, 1},
{b, 0, 1},
Initialization :>
(
f[a_, b_, c_] := a b c Exp[a b]
)
]
编辑(1)
我刚刚想到,为了使上述更有效,是使用第一个 Table 命令来生成数据本身,而不仅仅是找到绘图范围的最大值/最小值。然后使用ListPlot
代替Plot
. 这应该更快,以便函数的采样f
只发生一次而不是 2 次?
所以这是第二个版本
Manipulate[xmax = 0.05;
data = Table[{c, f[a, b, c]}, {c, 0, xmax, 0.01}];
max = Max[data[[All, 2]]];
min = Min[data[[All, 2]]];
ListPlot[
data,
PlotRange -> {Automatic, {min, max}},
Joined -> True,
ImagePadding -> 30
],
{a, 0, 1},
{b, 0, 1},
Initialization :>
(
f[a_, b_, c_] := a b c Exp[a b]
)
]