在Maxima中绘制具有不同域的函数

时间:2013-06-19 08:07:34

标签: plot 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)曲线族的最大值位于)。

3 个答案:

答案 0 :(得分:3)

您可以尝试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);

答案 1 :(得分:0)

我不是特别满意的一种方法是将具有较小域的函数声明为参数曲线,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]);

答案 2 :(得分:0)

这让我感到沮丧,但我发现了一种在同一张图上具有多个不同域功能的方法。

wxplot2d([if x < 0 then -x else sin(x), if x > -1 then x^2],[x,-%pi,%pi],[y,-2,2]);