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 без модификаций.
Мы демонстрируем некоторые простые замены; 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);
![]()
Мы заменяем подвыражения в символьном объединении множеств:
subsex(a union b union c, a union b = w)
![]()
То же самое может быть достигнуто при помощи функционального эквивалента _union оператора union:
subsex(_union(a, b, c), _union(a, b) = w)
![]()
Для получения дополнительной информации на функциях замены в MuPAD®, смотрите, Изменяют Подвыражения. Для получения дополнительной информации на деревьях выражений, смотрите, Визуализируют Деревья выражений.
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)
![]()
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})
Результат subsex не оценен. В следующем вызове идентификатор sin не заменяется его значением, т.е. процедурой, задающей поведение синусоидальной функции системы. Следовательно, sin(2*PI) не упрощен до 0 этой процедурой:
subsex(sin(2*x*y), x*y = PI)
![]()
Функциональный eval осуществляет оценку:
eval(subsex(sin(2*x*y), x*y = PI))
![]()
Операндами последовательностей выражения можно заменить. Обратите внимание на то, что последовательности должны быть заключены в скобках:
subsex((a, b, a*b*c), a*b = x)
![]()
Опция Unsimplified подавляет упрощение:
subsex(2 + a + b, a + b = 0, Unsimplified)
![]()
|
Произвольный объект MuPAD |
|
Произвольные объекты MuPAD |
|
Произвольные объекты MuPAD |
|
Или уравнения |
|
Предотвращает упрощение возвращенного объекта после замены Как последний шаг замены, измененный объект упрощен (однако, не оценен). Эта опция подавляет это итоговое упрощение. Смотрите Пример 7. |
Копия входного объекта с замененными операндами.
f