将具有不同域的多个函数绘制到同一个图中的最佳方法是什么?有没有办法用plot2d
做这个,或者我必须使用draw2d
代替?
我特别喜欢plot2d
在列表中提供几个函数的可能性,而如果我正确理解文档,我将不得不在draw2d
中添加不同的函数作为单独的参数。
我的意思的一个例子:
f(x, a) := sqrt(a) * exp(-(x-a)^2);
fmax(x) := sqrt(x);
在这个例子中,我想为几个f(x, a)
绘制a
(例如使用-1到10的makelist(f(x, a), a, [0, 0.5, 1, 2, 5]))
和从0到5的fmax
(以显示f(x, a)
曲线族的最大值所在的位置)。
你可以尝试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);
我不是特别满意的一种方法是将具有较小域的函数声明为参数曲线,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]);
这让我感到沮丧几个小时,但我找到了一种在同一个图表上有多个不同的域名功能的方法。
wxplot2d([if x < 0 then -x else sin(x), if x > -1 then x^2],[x,-%pi,%pi],[y,-2,2]);