2013-06-19 1 views
1

Каков наилучший способ построения нескольких функций с разными доменами в один и тот же сюжет? Есть ли способ сделать это с plot2d, или мне нужно использовать draw2d вместо этого?Плоские функции с различными доменами в Maxima

Мне особенно нравится возможность в 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); 
+0

Да, это похоже на работу. Особенно спасибо за показ комбинации списков и 'apply', чтобы расширить содержимое в качестве аргументов. – quazgar

0

Один подход Я не особенно доволен, чтобы объявить функции с меньшими доменами как параметрических кривых, причем параметр оси х быть просто 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]);