条件绘图?

Conditional Graphing Plot?

我正在尝试绘制两个函数的图形,但我想为一个条件绘制一个函数,但如果满足另一个条件则使用另一个函数绘制图形。

一个简单的例子是:

如果 x > 0 那么罪恶(x) 否则 cos(x)

然后它会根据 x 值绘制 cos 和 sin,在 x = 0 处有明显的差距,因为 cos(0) = 1 和 sin(0) = 0。

编辑:有一种内置方式。我将在下面留下我的原始答案以供后代使用,但请尝试使用 piecewise() 函数:

plot(piecewise(((cos(x),x<0), (sin(x), 0<x))))

See it here.


我猜想有一个内置的方法可以做到这一点,但我不知道。您可以将函数乘以 Heaviside Step Function 来完成此任务。如果 x > 0,则阶跃函数为 1,如果 x < 0,则阶跃函数为 0,因此将其乘以您的函数,然后将它们相加,select 只有一个基于 x 的符号,也就是说:

f(x) := heaviside(x) * sin(x) + heaviside(-x) * cos(x)

如果 x > 0,则 heaviside(x) = 1 且 heaviside(-x) = 0,因此 f(x) = sin(x)。

如果 x < 0,则 heaviside(x) = 0 且 heaviside(-x) = 1,因此 f(x) = cos(x)。

查看实际效果 here。一般来说,请注意,如果您希望在 x = a 处进行转换,则可以分别执行 heaviside(x-a) 和 heaviside(-x+a)。如果你想要 N 个函数,你必须在每个项上有 (N-1) 个相乘的阶跃函数,每个阶跃函数都有自己的 (x-a_i) 个参数。我希望其他人可以贡献一个更清洁的解决方案。