subs

Займите место в объект

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

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

Синтаксис

subs(f, old = new, <Unsimplified>)
subs(f, old1 = new1, old2 = new2, …, options)
subs(f, [old1 = new1, old2 = new2, …], options)
subs(f, {old1 = new1, old2 = new2, …}, options)
subs(f, table(old1 = new1, old2 = new2, …), options)
subs(f, s1, s2, …, options)

Описание

subs(f, old = new) поисковые запросы f для операндов, совпадающих с old, и замены old с new. Смотрите пример 1.

subs не заменяет подвыражения. Например, subs(a + b + c, b + c = d) не заменяет b + c. Вместо этого используйте subsex. Для получения дополнительной информации смотрите Пример 8.

subs функция возвращает модифицированную копию объекта. Функция не изменяет сам объект.

По умолчанию, subs функция не оценивает результат замены. Чтобы осуществить оценку всех модифицированных подвыражений, используйте EvalChanges опция. Кроме того, можно переоценить целый возвращенный результат при помощи eval функция. Оценка возвращенного результата медленнее и менее эффективна, чем оценка модифицированных подвыражений. Смотрите Пример 3 и Пример 4.

Вызов subs(f, old1 = new1, old2 = new2, ...) применяет заданные замены в последовательности слева направо (последовательная замена). Этот вызов применяет каждую замену (за исключением первой замены) к результату предыдущей замены. Смотрите Пример 5.

Вызов subs(f, [old1 = new1, old2 = new2, ...]) применяет все заданные замены к операндам исходного входного объекта f (найдите что-либо подобное замене). Этот вызов не использует результаты никаких предыдущих замен. Если вы задаете несколько замен того же операнда, этот вызов вычисляет только первую замену. При определении замен списками наборы или таблицы вызывают параллельную замену. Смотрите Пример 6.

Вызов subs(f, s1, s2, ...) общая форма замены, которая может объединить последовательные и параллельные замены. Этот вызов эквивалентен subs(... subs(subs(f, s1), s2), ...). MuPAD® обрабатывает каждый шаг замены как последовательное или параллельную замену в зависимости от формы параметров s1S2 , . Смотрите пример 7.

Можно использовать subs заменять операнды последовательностей выражения. subs функция не сглаживает такие объекты. Смотрите Пример 9.

Если вы не задаете замены, subs возвращает исходное выражение без модификаций. Например, subs(f) возвращает f.

Примеры

Пример 1

Используйте subs функционируйте, чтобы заменить операндами в следующих выражениях:

subs(a + b*a, a = 4)

subs([a * (b + c), sin(b +c)], b + c = a)

Пример 2

Когда заменяющий синусоидальную функцию в выражении, используйте hold команда, чтобы предотвратить оценку идентификатора sin:

subs(sin(x), hold(sin) = cos);
domtype(hold(sin))

В противном случае MuPAD заменяет sin его значением. Функциональная среда (см. funcenv) задает значение sin:

subs(sin(x), sin = cos);
domtype(sin)

В выражении sin(x), 0-th операнд sin идентификатор, не функциональная среда:

domtype(op(sin(x), 0))

Пример 3

subs функция выполняет исходное выражение, выполняет замену, но не выполняет модифицированное выражение:

subs(y^2 + sin(x), x = PI)

Чтобы оценить модифицированное подвыражение, используйте EvalChanges опция:

subs(y^2 + sin(x), x = PI, EvalChanges)

В качестве альтернативы используйте eval функция, чтобы оценить результат, возвращенный subs:

S := subs(y^2 + sin(x), x = PI):
eval(S)

Пример 4

subs функция с EvalChanges опция возвращает те же результаты как оценка целого выражения:

eval(subs(sin(x + 3 - PI)*numeric::int(_plus(sin(k/y) $ k = 1..5),
                                       y = 0..1), x=-3));
subs(sin(x + 3 - PI)*numeric::int(_plus(sin(k/y) $ k = 1..5),
                                  y = 0..1), x = -3, EvalChanges)

Оценка возвращенного результата медленнее и менее эффективна, чем оценка модифицированных подвыражений:

time(eval(subs(sin(x + 3 - PI)*numeric::int(_plus(sin(k/y) $ k = 1..5),
                                            y = 0..1), x = -3)));
time(subs(sin(x + 3 - PI)*numeric::int(_plus(sin(k/y) $ k = 1..5),
                                       y = 0..1), x = -3, EvalChanges))

Пример 5

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

subs(x^3 + y*z, x = y, y = z)

Пример 6

subs функция позволяет вам использовать последовательные и параллельные замены. Например, замените операндом в следующих выражениях последовательно:

subs(a^2 + b^3, a = b, b = a)

subs(a^2 + b^3, b = a, a = b)

Для того же выражения параллельная замена подкачивает идентификаторы:

subs(a^2 + b^3, [a = b, b = a])

В следующем вызове, замене y + x для a дает к промежуточному результату y + 2*x. Оттуда, замена z для x результаты в y + 2 z:

subs(a + x, a = x + y, x = z)

Параллельная замена приводит к различному результату. Следующий вызов substitues a с x + y. Одновременно, этот вызов заменяет операндом x из исходного выражения a + x с z:

subs(a + x, [a = x + y, x = z])

Если вы задаете замены с помощью набора таблицы уравнений, subs функция также выполняет параллельную замену:

subs(a + x, {a = x + y, x = z})

T := table(): T[a] := x + y: T[x] := z: T

subs(a + x, T)

delete T:

Пример 7

Можно объединить последовательные и параллельные замены:

subs(a + x, {a = x + y, x = z}, x = y)

Пример 8

subs функционируйте заменяет только те операнды что op функция может возвратиться. Следующее выражение содержит подвыражение x + y как операнд op(f, [1, 2]):

f := sin(z*(x + y)): op(f, [1, 2]);

Следовательно, subs функция заменяет это подвыражение:

subs(f, x + y = z)

Синтаксически, следующая сумма не содержит подвыражение x + y. Поэтому subs функция не заменяет его:

subs(x + y + z, x + y = z)

В отличие от subs, subsex функция находит и заменяет частичные суммы и продукты:

subsex(x + y + z, x + y = z)

subs(a*b*c, a*c = 5), subsex(a*b*c, a*c = 5)

delete f:

Для получения дополнительной информации на функциях замены в MuPAD, смотрите, Изменяют Подвыражения. Для получения дополнительной информации на деревьях выражений, смотрите, Визуализируют Деревья выражений.

Пример 9

Можно заменить операндами последовательностей выражения. Заключите последовательности в круглые скобки:

subs((a, b, a*b), a = x)

Пример 10

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

subs(a + b + 2, a = 1, b = 0, Unsimplified)

Пример 11

При попытке заменить чем-то в области, MuPAD игнорирует замену. Например, задайте новую область с методами "foo" и "bar":

mydomain := newDomain("Test"):
mydomain::foo := x -> 4*x:
mydomain::bar := x -> 4*x^2:

Теперь попытайтесь заменить каждый номер 4 в области с номером 3:

mydomain := subs(mydomain, 4 = 3):

Та замена не оказывает влияния:

mydomain::foo(x), mydomain::bar(x)

Чтобы заменить объектами в доменном методе, необходимо занять место в отдельных методах:

mydomain::foo := subs(mydomain::foo, 4 = 3):
mydomain::bar := subs(mydomain::bar, 4 = 3):
mydomain::foo(x), mydomain::bar(x)

delete mydomain:

Параметры

f

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

old, old1, old2, …

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

new, new1, new2, …

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

s1, s2, …

Любой уравнения old = new, или списки или наборы таких уравнений или таблицы, записи которых интерпретированы уравнения как таковые.

Опции

EvalChanges

После замены оцените все модифицированные подвыражения.

По умолчанию, subs функция не оценивает модифицированный объект. EvalChanges опция осуществляет оценку всех модифицированных подвыражений. Смотрите Пример 3 и Пример 4.

Unsimplified

Не упрощайте результат замены.

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

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

Копия входного объекта с замененными операндами.

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

f

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

Функции MuPAD