Сюжетные функции с разными доменами в Maxima
Каков наилучший способ размещения нескольких функций с разными доменами в одном графике? Есть ли способ сделать это с plot2d
или я должен использовать draw2d
вместо?
Мне особенно нравится возможность в plot2d
чтобы дать несколько функций в списке, в то время как я должен был бы добавить различные функции в draw2d
как отдельные параметры, если я правильно понимаю документацию.
Пример того, что я имею в виду:
f(x, a) := sqrt(a) * exp(-(x-a)^2);
fmax(x) := sqrt(x);
В этом примере я хотел бы построить f(x, a)
для нескольких a
(например, используя makelist(f(x, a), a, [0, 0.5, 1, 2, 5]))
от -1 до 10 и fmax
от 0 до 5 (чтобы показать, где максимумы f(x, a)
семейство кривых находится).
2 ответа
Ты можешь попробовать draw2d
f(x, a) := sqrt(a) * exp(-(x-a)^2);
fmax(x) := sqrt(x);
flist: makelist(f(x, a), a, [0, 0.5, 1, 2, 5]);
par: map(lambda([f], explicit(f, x, -1, 10)), flist);
par: append([explicit(fmax, x, 0, 5), color=red], par);
load(draw);
apply(draw2d, par);
Это расстраивало меня в течение нескольких часов, но я нашел способ, чтобы несколько функций по-разному выполнялись на одном графике.
wxplot2d([if x < 0 then -x else sin(x), if x > -1 then x^2],[x,-%pi,%pi],[y,-2,2]);
Один из подходов, который меня не особенно устраивает, состоит в том, чтобы объявить функции с меньшими областями как параметрические кривые, причем параметр оси x просто x
:
f(x, a) := sqrt(a) * exp(-(x-a)^2);
fmax(x) := sqrt(x);
plot2d(endcons([parametric, x, fmax(x), [x, 0, 5], [nticks, 80]],
makelist(f(x, a), a, [0, 1/2, 1, 2, 5])),
[x, -1, 10]);