Долгие выражения часто содержат несколько экземпляров того же подвыражения. Такие выражения выглядят короче, если то же подвыражение заменяется сокращением. Можно использовать sympref
задавать, использовать ли сокращенный выходной формат символьных выражений в live скриптах.
Например, решите уравнение использование solve
.
syms x
sols = solve(sqrt(x) + 1/x == 1, x)
sols =
solve
функция возвращает точные решения как символьные выражения. По умолчанию live скрипты отображают символьные выражения в сокращенном выходном формате. Символьная установка preference использует внутренний алгоритм, чтобы выбрать, какие подвыражения сократить, который может также включать вложенные сокращения. Например, термин содержит подвыражение, сокращенное как . Символьная установка preference не предоставляет возможностей выбирать который подвыражения сократить.
Можно выключить сокращенный выходной формат путем установки 'AbbreviateOutput'
настройка к false
. Возвращенным результатом является долгое выражение, которое затрудняет в чтение.
sympref('AbbreviateOutput',false);
sols
sols =
Настройки вы устанавливаете использование sympref
сохранитесь через свои текущие и будущие сеансы MATLAB®. Восстановите значения по умолчанию 'AbbreviateOutput'
путем определения 'default'
опция.
sympref('AbbreviateOutput','default');
subexpr
другая функция, которую можно использовать, чтобы сократить долгие выражения. Эта функция сокращает только одно общее подвыражение и различающийся sympref
, это не поддерживает вложенные сокращения. Как sympref
, subexpr
также не позволяет вам выбрать который подвыражения заменить.
Используйте второй входной параметр subexpr
задавать имя переменной, которое заменяет общее подвыражение. Например, замените общее подвыражение в sols
с переменной t
.
[sols1,t] = subexpr(sols,'t')
sols1 =
t =
Несмотря на то, что sympref
и subexpr
не обеспечивайте способ выбрать, какие подвыражения заменить в решении, можно задать эти подвыражения как символьные переменные и вручную переписать решение.
Например, задайте новые символьные переменные a1
и a2
.
syms a1 a2
Перепишите решения sols
в терминах a1
и a2
прежде, чем присвоить значения a1
и a2
постараться не оценивать sols
.
sols = [(1/2*a1 + 1/3 + sqrt(3)/2*a2*1i)^2;...
(1/2*a1 + 1/3 - sqrt(3)/2*a2*1i)^2]
sols =
Присвойте значения и к a1
и a2
, соответственно.
a1 = t + 1/(9*t)
a1 =
a2 = t - 1/(9*t)
a2 =
Оцените sols
использование subs
. Результат идентичен первому выходу в этом примере.
sols_eval = subs(sols)
sols_eval =