subsex

Расширенная замена

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

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

Синтаксис

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

Описание

subsex(f, old = new) возвращает копию объекта f, в котором все выражения, совпадающие с old, заменяются значением new.

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

subsex(f, old = new) ищет f подвыражения, совпадающие с old. Каждое такое подвыражение заменяется new.

В отличие от функции subs, subsex заменяет “неполные” подвыражения. Например, subsex(a + b + c, b + c = d) заменяет b + c, но subs(a + b + c, b + c = d) не заменяет b + c. В целом комбинации операндов не “операторы” +, *, and, _exprseq, intersect, or, _lazy_and, _lazy_or и union могут быть заменены. В частности, могут быть заменены частичные суммы и частичные продукты. Обратите внимание на то, что эти операции приняты, чтобы быть коммутативными, например, subsex(a*b*c, a*c = new) действительно заменяет частичный продукт a*c new. Смотрите Пример 1 и Пример 2. Однако преимущество subs по subsex состоит в том, что subs намного быстрее.

subsex дополнительно заменяет степени на ту же основу, если экспонента выражения является целочисленным кратным заменяющая степень, например, как в subsex(a^4, a^2 = new). Это правило также совпадает с инвертированными выражениями как в subsex(1/sqrt(x), sqrt(x)=new), который внутренне эквивалентен subsex(x^(-1/2), x^(1/2)=new). Cf. Пример 3.

Вызов subsex(f, old1 = new1, old2 = new2, ...) вызывает “sequential substitution”. Смотрите страницу справки subs для деталей.

Вызов subsex(f, [old1 = new1, old2 = new2, ...]) вызывает “parallel substitution”. Смотрите страницу справки subs для деталей.

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

После замены не оценен результат. Используйте функциональный eval, чтобы осуществить оценку. Cf. Пример 5.

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

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

Примеры

Пример 1

Мы демонстрируем некоторые простые замены; subsex находит и заменяет частичные суммы и продукты:

subsex(a + b + c, a + c = x)

subsex(a*b*c, a*c = x)

subsex(a * (b + c) + b + c, b + c = a)

subsex(a + b*c*d + b*d, b*d = c);

Пример 2

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

subsex(a union b union c, a union b = w)

То же самое может быть достигнуто при помощи функционального эквивалента _union оператора union:

subsex(_union(a, b, c), _union(a, b) = w)

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

Пример 3

subsex заменяет степени на с той же основой, если экспонента выражения является целочисленным кратным заменяющая степень:

subsex(1/a^4, a^2 = X)

Это содержит даже для экспонент, которые являются выражениями:

subsex(1/a^(6*x), a^(2*x) = X)

1/sqrt(x) является внутренне x^(-1/2), таким образом, замена sqrt(x), который является внутренне x^(1/2), работает, также:

subsex(1/sqrt(n), sqrt(n) = X)

Пример 4

subsex часто полезен, чтобы преобразовать вывод одной команды в форму, требуемую следующей. Как пример, мы вычисляем Преобразование Лапласа двумерного ОДУ

,

,

и преобразуйте результат в форму, подходящую для вызова solve, заменив неизвестные Преобразования Лапласа символьными именами:

xfrm1 := laplace(x'(t) = x(t) + 2*y(t), t, s);
xfrm2 := laplace(y'(t) = 5*x(t) + 2*y(t), t, s)

Для удобочитаемости мы даем имена обеим заменам:

sub_x := laplace(x(t),t,s) = X:
sub_y := laplace(y(t),t,s) = Y:
Leqn1 := subs(xfrm1, sub_x, sub_y, x(0) = 1);
Leqn2 := subs(xfrm2, sub_x, sub_y, y(0) =-2)

solve({Leqn1, Leqn2}, {X, Y})

Пример 5

Результат subsex не оценен. В следующем вызове идентификатор sin не заменяется его значением, т.е. процедурой, задающей поведение синусоидальной функции системы. Следовательно, sin(2*PI) не упрощен до 0 этой процедурой:

subsex(sin(2*x*y), x*y = PI)

Функциональный eval осуществляет оценку:

eval(subsex(sin(2*x*y), x*y = PI))

Пример 6

Операндами последовательностей выражения можно заменить. Обратите внимание на то, что последовательности должны быть заключены в скобках:

subsex((a, b, a*b*c), a*b = x)

Пример 7

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

subsex(2 + a + b, a + b = 0, Unsimplified)

Параметры

f

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

old, old1, old2, …

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

new, new1, new2, …

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

s1, s2, …

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

Опции

Unsimplified

Предотвращает упрощение возвращенного объекта после замены

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

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

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

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

f

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

Функции MuPAD