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. Операнды заданы таким же образом как с функциональным opi может быть целое число или список целых чисел. Например, subsop(object, [j, k] = new) заменяет подоперанд op(op(object, j), k). См. Пример 2. В отличие от op, области значений не могут использоваться в subsop задавать больше чем один операнд, чтобы заменить. Несколько уравнений замены должны быть заданы вместо этого.

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

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

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

Обратите внимание на то, что порядок операндов может измениться, заменив операнды и оценив результат. См. Пример 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

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

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

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

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

object

Алгоритмы

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

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

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

Функции MuPAD