Посмотрите, делает ли это то, что вы хотите.Я просто использую 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]
)
]
edit (1)
это только что пришло мне в головуЧтобы сделать вышеупомянутое более эффективным, нужно использовать первую команду таблицы, чтобы также генерировать сами данные, а не просто находить максимум / мин диапазона графика.А затем используйте 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]
)
]