Plot 极大值中具有不同域的绘图函数

Plot 极大值中具有不同域的绘图函数,plot,maxima,Plot,Maxima,将具有不同域的多个函数绘制到同一绘图中的最佳方法是什么?有没有办法用plot2d实现这一点,或者我必须使用draw2d 我特别喜欢在plot2d中可以在一个列表中提供多个函数,而如果我正确理解文档,则必须在draw2d中添加不同的函数作为单独的参数 我的意思的一个例子: f(x, a) := sqrt(a) * exp(-(x-a)^2); fmax(x) := sqrt(x); 在这个例子中,我想为几个a绘制f(x,a)(例如使用makelist(f(x,a,[0,0.5,1,2,5]))从

将具有不同域的多个函数绘制到同一绘图中的最佳方法是什么?有没有办法用
plot2d
实现这一点,或者我必须使用
draw2d

我特别喜欢在
plot2d
中可以在一个列表中提供多个函数,而如果我正确理解文档,则必须在
draw2d
中添加不同的函数作为单独的参数

我的意思的一个例子:

f(x, a) := sqrt(a) * exp(-(x-a)^2);
fmax(x) := sqrt(x);

在这个例子中,我想为几个
a
绘制
f(x,a)
(例如使用
makelist(f(x,a,[0,0.5,1,2,5]))
从-1到10和
fmax
从0到5(显示
f(x,a)
曲线族的最大值的位置).

我不太喜欢的一种方法是将具有较小域的函数声明为参数曲线,其中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]);

您可以尝试
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]);
wxplot2d([如果x<0则-x否则sin(x),如果x>-1则x^2],[x,-%pi,%pi],[y,-2,2]);

是的,这似乎有效。特别感谢您展示了列表和
apply
的组合,以将内容扩展为参数。