subsop

Замените операнды

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

subsop(object, i1 = new1, i2 = new2, …, <Unsimplified>)

Описание

subsop возвращает измененную копию объекта, но не изменяет сам объект.

subsop(object, i = new) заменяет операнд op(object, i) new. Операнды заданы таким же образом как с функциональным op: i может быть целым числом или списком целых чисел. Например, subsop(object, [j, k] = new) заменяет подоперанд op(op(object, j), k). Cf. Пример 2. В отличие от op, области значений не могут использоваться в subsop, чтобы задать больше чем один операнд, чтобы заменить. Несколько уравнений замены должны быть заданы вместо этого.

Если несколько операндов должны быть заменены, заданные замены обрабатываются в последовательности слева направо. Каждая замена выполняется, и результат обрабатывается далее со следующей заменой. Промежуточные объекты не упрощены.

Результат subsop не оценен далее. Это может быть оценено через функциональный eval. Cf. Пример 3.

Операнды последовательностей выражения могут быть заменены subsop. Такие объекты не сглажены.

Обратите внимание на то, что порядок операндов может измениться, заменив операнды и оценив результат. Cf. Пример 4.

FAIL возвращен, если к операнду нельзя получить доступ.

Замена через subsop быстрее, чем через subs или subsex.

Вызов subsop(object) позволен; это возвращает объект без модификаций.

Примеры

Пример 1

Мы демонстрируем, как заменить один или несколько операндов выражения:

x := a + b: subsop(x, 2 = c)

subsop(x, 1 = 2, 2 = c)

Также 0-th операнд выражения (“оператор”) может быть заменен:

subsop(x, 0 = _mult)

Сама переменная x не была затронута заменами:

x

delete x:

Пример 2

Следующий вызов задает подоперанд c списком целых чисел:

subsop([a, b, f(c)], [3, 1] = x)

Пример 3

Этот пример демонстрирует эффект упрощения. Следующая замена заменяет первый операнд a 2. Результат упрощает до 3:

subsop(a + 1, 1 = 2)

Опция Unsimplified подавляет упрощение:

subsop(a + 1, 1 = 2, Unsimplified)

Следующий вызов демонстрирует различие между упрощением и оценкой. После замены PI для x идентификатор sin не оценен, т.е. тело системной функции, sin не выполняется:

subsop(sin(x),  1 = PI)

Оценка sin упрощает результат:

eval(%)

Пример 4

Порядок операндов может измениться заменами. При заменении z идентификатор b изменяет внутренний порядок условий в x:

x := a + b + c: op(x)

x := subsop(x, 2 = z): op(x)

delete x:

Параметры

object

Любой объект MuPAD®

i1, i2, …

Целые числа или списки целых чисел

new1, new2, …

Произвольные объекты MuPAD

Опции

Unsimplified

Как последний шаг замены, измененный объект упрощен (однако, не оценен). Эта опция подавляет это итоговое упрощение. Cf. Пример 3.

Возвращаемые значения

Входной объект с замененными операндами или FAIL.

Перегруженный

object

Алгоритмы

Для перегрузки subsop достаточно обработать случаи subsop(object) и subsop(object, i = new).

Случай, где положение операнда, который будет заменен, дано списком, всегда обрабатывается рекурсивно: Во-первых, op вызван панелью списка последним элементом, чтобы найти объект занять место в (использование перегрузки op, если существующий, храня все промежуточные результаты), то замена выполняется на том подобъекте (использование перегрузки subsop формы subsop(subobj, i = new)). Результатом заменяют в предпоследний результат рекурсивного вызова op, снова уважая любую перегрузку subsop, и так далее до передней стороны списка.

Смотрите также

Функции MuPAD