将具有不同域的多个函数绘制到同一个图中的最佳方法是什么?有没有办法用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)
曲线族的最大值位于)。
答案 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]);