График условного графика?

Я пытаюсь построить график двух функций, но я хочу построить график одной функции для условия, а график с использованием другой функции, если выполняется другое условие.

Простой пример будет:

если x> 0, то sin (x), иначе cos (x)

Затем он будет отображать cos и sin в зависимости от значения x, при x = 0 будет очевидный разрыв, так как cos(0) = 1 и sin(0) = 0.

1 ответ

Решение

РЕДАКТИРОВАТЬ: есть встроенный способ. Я оставлю свой исходный ответ ниже для потомков, но попробуйте использовать функцию piecewise ():

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

Смотрите это здесь.


Я предполагаю, что есть встроенный способ сделать это, но я этого не знаю. Вы можете умножить свои функции на функцию шага Хевисайда, чтобы выполнить эту задачу. Шаговая функция равна 1, если x > 0, и 0, если x < 0, поэтому, умножив это на ваши функции и затем суммируя их, вы выберете только одну из них на основе знака x, то есть:

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

Если x > 0, heavyiside(x) = 1 и heavyiside(-x) = 0, поэтому f(x) = sin(x).

Если x < 0, heavyiside(x) = 0 и heavyiside(-x) = 1, поэтому f(x) = cos(x).

Смотрите это в действии здесь. В общем, обратите внимание, что если вы хотите, чтобы переход был в точке x = a, то вы могли бы сделать heavyiside (xa) и heavyiside (-x+a) соответственно. Если вы хотите N функций, вам нужно будет (N-1) умножать пошаговые функции на каждый член, каждый со своим собственным аргументом (x-a_i). Я надеюсь, что кто-то еще может предложить более чистое решение.

Другие вопросы по тегам