piecewise

Условно определенное выражение или функция

Описание

пример

pw = piecewise(cond1,val1,cond2,val2,...) возвращает кусочное выражение или функцию pw значение val1 когда условие cond1 верно, верно val2 когда cond2 верно, и так далее. Если ни одно условие не соответствует true, значение pw является NaN.

пример

pw = piecewise(cond1,val1,cond2,val2,...,otherwiseVal) возвращает кусочное выражение или функцию pw который имеет значение otherwiseVal если ни одно условие не соответствует true.

Примеры

Определите и вычислите кусочное выражение

Задайте следующее кусочное выражение при помощи piecewise.

y={1x<01x>0

syms x
y = piecewise(x<0, -1, x>0, 1)
y =
piecewise(x < 0, -1, 0 < x, 1)

Оценка y при -2, 0, и 2 при помощи subs для замены x. Потому что y не определено в x = 0, значение NaN.

subs(y, x, [-2 0 2])
ans =
[ -1, NaN, 1]

Задайте кусочно-линейную функцию

Задайте следующую функцию символически.

y(x)={1x<01x>0

syms y(x)
y(x) = piecewise(x<0, -1, x>0, 1)
y(x) =
piecewise(x < 0, -1, 0 < x, 1)

Потому что y(x) является символической функцией, можно непосредственно оценить ее для значений x. Оценка y(x) при -2, 0, и 2. Потому что y(x) не определено в x = 0, значение NaN. Для получения дополнительной информации смотрите Создание символьных функций.

y([-2 0 2])
ans =
[ -1, NaN, 1]

Установите значение, когда никакие условия не верны

Установите значение кусочно-линейной функции, когда нет условия true (вызываемое в противном случае значение), задав дополнительный входной параметр. Если дополнительный аргумент не задан, по умолчанию в противном случае значение функции NaN.

Задайте кусочно-линейную функцию

y(x)={2x<202<x<01иначе.

syms y(x)
y(x) = piecewise(x<-2, -2, -2<x<0, 0, 1)
y(x) =
piecewise(x < -2, -2, x in Dom::Interval(-2, 0), 0, 1)

Оценка y(x) между -3 и 1 путем генерации значений x использование linspace. В -2 и 0, y(x) вычисляет, чтобы 1 потому что другие условия не верны.

xvalues = linspace(-3,1,5)
yvalues = y(xvalues)
xvalues =
    -3    -2    -1     0     1
yvalues =
[ -2, 1, 0, 1, 1]

Постройте кусочное выражение

Постройте график следующего кусочно-линейного выражения при помощи fplot.

y={-2x<-2x-2<x<22x>2.

syms x
y = piecewise(x<-2, -2, -2<x<2, x, x>2, 2);
fplot(y)

Figure contains an axes. The axes contains an object of type functionline.

Допущения и кусочно-линейные выражения

При создании кусочно-линейное выражение применяет существующие допущения. Применить набор допущений после создания кусочно-линейного выражения при помощи simplify на выражение.

Предположим x > 0. Затем задайте кусочное выражение с тем же условием x > 0. piecewise автоматически применяет допущение для упрощения условия.

syms x
assume(x > 0)
pw = piecewise(x<0, -1, x>0, 1)
pw =
1

Очистите предположение о x для дальнейших расчетов.

assume(x,'clear')

Создайте кусочное выражение pw с условием x > 0. Затем установите предположение, что x > 0. Примените допущение к pw при помощи simplify.

pw = piecewise(x<0, -1, x>0, 1);
assume(x > 0)
pw = simplify(pw)
pw =
1

Очистите предположение о x для дальнейших расчетов.

assume(x, 'clear')

Дифференцируйте, интегрируйте и найдите пределы кусочно-линейного выражения

Дифференцируйте, интегрируйте и найдите пределы кусочно-линейного выражения при помощи diff, int, и limit соответственно.

Дифференцируйте следующее кусочное выражение при помощи diff.

y={1/xx<1sin(x)/xx1

syms x
y = piecewise(x<-1, 1/x, x>=-1, sin(x)/x);
diffy = diff(y, x)
diffy =
piecewise(x < -1, -1/x^2, -1 < x, cos(x)/x - sin(x)/x^2)

Интеграция y при помощи int.

inty = int(y, x)
inty =
piecewise(x < -1, log(x), -1 <= x, sinint(x))

Найти пределы y при 0 и -1 при помощи limit. Поскольку limit находит двусторонний предел, кусочное выражение должно быть задано с обеих сторон. Кроме того, вы можете найти правый или левый предел. Для получения дополнительной информации см. limit.

limit(y, x, 0)
limit(y, x, -1)
ans =
1
ans =
limit(piecewise(x < -1, 1/x, -1 < x, sin(x)/x), x, -1)

Потому что эти два условия отвечают на -1пределы с обеих сторон различаются и limit не удается найти двусторонний предел.

Элементарные операции с кусочно-линейными выражениями

Сложить, вычесть, разделить и умножить два кусочно-линейных выражения. Получившееся кусочное выражение определяется только там, где заданы начальные кусочные выражения.

syms x
pw1 = piecewise(x<-1, -1, x>=-1, 1);
pw2 = piecewise(x<0, -2, x>=0, 2);
add = pw1 + pw2
sub = pw1 - pw2
mul = pw1 * pw2
div = pw1 / pw2
add =
piecewise(x < -1, -3, x in Dom::Interval([-1], 0), -1, 0 <= x, 3)
sub =
piecewise(x < -1, 1, x in Dom::Interval([-1], 0), 3, 0 <= x, -1)
mul =
piecewise(x < -1, 2, x in Dom::Interval([-1], 0), -2, 0 <= x, 2)
div =
piecewise(x < -1, 1/2, x in Dom::Interval([-1], 0), -1/2, 0 <= x, 1/2)

Изменение или расширение кусочно-линейного выражения

Измените кусочное выражение путем замены части выражения с помощью subs. Расширение кусочно-линейного выражения путем определения выражения как другого значения нового кусочно-линейного выражения. Это действие объединяет два кусочно-линейных выражения. piecewise не проверяет на перекрывающиеся или конфликтующие условия. Вместо этого, как лестница if-else, piecewise возвращает значение для первого условия true.

Измените условие x<2 в кусочно-линейном выражении в x<0 при помощи subs.

syms x
pw = piecewise(x<2, -1, x>0, 1);
pw = subs(pw, x<2, x<0)
pw =
piecewise(x < 0, -1, 0 < x, 1)

Добавьте условие x>5 со значением 1/x на pw путем создания нового кусочно-линейного выражения с pw как значение в противном случае.

pw = piecewise(x>5, 1/x, pw)
pw =
piecewise(5 < x, 1/x, x < 0, -1, 0 < x, 1)

Входные параметры

свернуть все

Условие, заданное как символьное условие или переменная. Символьная переменная представляет неизвестное условие.

Пример: x > 2

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

Значение, если никакие условия не верны, задается как число, вектор, матрица или многомерный массив или как символьное число, переменная, вектор, матрица, многомерный массив, функция или выражение. Если otherwiseVal не задан, его значение NaN.

Выходные аргументы

свернуть все

Кусочное выражение или функция, возвращенная как символьное выражение или функция. Значение pw - значение val первого условия cond это правда. Чтобы найти значение pw, использование subs для замены переменных в pw.

Совет

  • piecewise не проверяет на перекрывающиеся или конфликтующие условия. Кусочное выражение возвращает значение первого истинного условия и игнорирует любые следующие истинные выражения. Таким образом, piecewise имитирует лестницу if-else.

См. также

| | | | | | | |

Введенный в R2016b