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

问题描述 投票:1回答:3

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

plot maxima
3个回答
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);

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]);

0
投票

这让我感到沮丧几个小时,但我找到了一种在同一个图表上有多个不同的域名功能的方法。

wxplot2d([if x < 0 then -x else sin(x), if x > -1 then x^2],[x,-%pi,%pi],[y,-2,2]);
© www.soinside.com 2019 - 2024. All rights reserved.