Сюжетные функции с разными доменами в 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]);
Другие вопросы по тегам