subexpr

Перепишите символьное выражение с точки зрения общих подвыражений

Синтаксис

[r,sigma] = subexpr(expr)
[r,var] = subexpr(expr,'var')
[r,var] = subexpr(expr,var)

Описание

пример

[r,sigma] = subexpr(expr) переписывает символьное выражение expr с точки зрения общего подвыражения, заменяя этим общим подвыражением с символьной переменной sigma. Входное выражение expr не может содержать переменную sigma.

пример

[r,var] = subexpr(expr,'var') заменяет общим подвыражением var. Входное выражение expr не может содержать символьную переменную var.

пример

[r,var] = subexpr(expr,var) эквивалентно [r,var] = subexpr(expr,'var'), за исключением того, что символьная переменная var должна уже существовать в рабочей области MATLAB®.

Этот синтаксис перезаписывает значение переменной var с общим подвыражением, найденным в expr. Чтобы постараться не перезаписывать значение var, используйте другое имя переменной в качестве второго выходного аргумента. Например, используйте [r,var1] = subexpr(expr,var).

Примеры

свернуть все

Решите следующее уравнение. Решения являются очень длинными выражениями. Чтобы отобразить решения, удалите точку с запятой в конце команды solve.

syms a b c d x
solutions = solve(a*x^3 + b*x^2 + c*x + d == 0, x, 'MaxDegree', 3);

Эти долгие выражения имеют общие подвыражения. Чтобы сократить выражения, сократите общее подвыражение при помощи subexpr. Если вы не задаете переменную, чтобы использовать для сокращений в качестве второго входного параметра subexpr, то subexpr использует переменную sigma.

[r, sigma] = subexpr(solutions)
r = 

(σ-0.3333ba-σ1σσ-0.5000-0.8660i-0.3333ba+σ10.5000-0.8660iσσ-0.5000+0.8660i-0.3333ba+σ10.5000+0.8660iσ)где  σ1=0.3333ca-0.1111b2a2

sigma = 

0.5000da+0.0370b3a3-0.1667bca22+0.3333ca-0.1111b2a23-0.5000da-0.0370b3a3+0.1667bca20.3333

Решите квадратное уравнение.

syms a b c x
solutions = solve(a*x^2 + b*x + c == 0, x)
solutions = 

(-b+b2-4ac2a-b-b2-4ac2a)

Используйте syms, чтобы создать символьную переменную s, и затем заменить общие подвыражения в результате с этой переменной.

syms s
[abbrSolutions,s] = subexpr(solutions,s)
abbrSolutions = 

(-b+s2a-b-s2a)

s = b2-4ac

Также используйте 's', чтобы задать переменную сокращения.

[abbrSolutions,s] = subexpr(solutions,'s')
abbrSolutions = 

(-b+s2a-b-s2a)

s = b2-4ac

Оба синтаксиса перезаписывают значение переменной s с общим подвыражением. Поэтому вы не можете, например, заменить s с некоторым значением.

subs(abbrSolutions,s,0)
ans = 

(-b+s2a-b-s2a)

Чтобы постараться не перезаписывать значение переменной s, используйте другое имя переменной для второго выходного аргумента.

syms s
[abbrSolutions,t] = subexpr(solutions,'s')
abbrSolutions = 

(-b+s2a-b-s2a)

t = b2-4ac
subs(abbrSolutions,s,0)
ans = 

(-b2a-b2a)

Входные параметры

свернуть все

Долгое выражение, содержащее общие подвыражения, заданные как символьное выражение или функция.

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

subexpr выдает ошибку, если входное выражение expr уже содержит var.

Выходные аргументы

свернуть все

Выражение с общими подвыражениями, замененными сокращениями, возвращенными как символьное выражение или функция.

Переменная используется для сокращений, возвращенных как символьная переменная.

Представлено до R2006a