Очистите предположения и сброс символьный Engine

Символьная рабочая область механизма, сопоставленная с рабочей областью MATLAB®, обычно пуста. Рабочее пространство MATLAB отслеживает значения символьных переменных и передает их символьному механизму для оценки по мере необходимости. Однако символьная рабочая область механизма содержит все предположения, которые вы делаете о символьных переменных, такой как, является ли переменная действительной, положительной, целочисленной, больше или меньше, чем определенное значение и так далее. Эти предположения могут влиять на решения уравнений, упрощений и преобразований, как объяснено в Эффектах Предположений на Расчетах.

Например, создайте символьную переменную x и примите, что это положительно.

syms x
assume(x > 0)

Если вы очищаете переменную x использование команды clear x, рабочее пространство MATLAB не очищает предположение от символьной рабочей области механизма.

clear x
assumptions
ans =
0 < x

Очистить предположение для переменной x, используйте команду assume(x,'clear').

syms x
assume(x > 0)
assume(x,'clear')
assumptions
ans =
Empty sym: 1-by-0

В качестве альтернативы можно создать новую символьную переменную без предположений с помощью syms.

syms x

Если вы хотите очистить символьную переменную и также сбросить символьный механизм, используйте команду clear all.

syms x positive
clear all
whos
assumptions
ans =
Empty sym: 1-by-0

Следующее показывает, как рабочее пространство MATLAB и символьная рабочая область механизма отличаются по их ответам на последовательность команд.

ШагКомандаРабочее пространство MATLABСимвольная рабочая область Engine
1syms x positive
или
syms x;
assume(x > 0)
xx > 0
2clear xпустойx > 0
3syms xxпустой
4clear allпустойпустой

Проверяйте набор предположений на переменных

Чтобы проверять ли переменная, скажите x, имеет любые предположения в символьной рабочей области механизма, сопоставленной с рабочим пространством MATLAB, используйте assumptions функция в Live Editor MATLAB:

assumptions(x)

Если функция возвращает пустой символьный объект, на переменной нет никаких дополнительных предположений. Предположением по умолчанию является тот x представляет любое комплексное число. В противном случае существуют дополнительные предположения на значении, что переменная представляет.

Например, при объявлении символьной переменной x, сделайте предположение, что значение этой переменной является вещественным числом.

syms x real
assumptions(x)
ans =
in(x, 'real')

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

syms z
assume(z ~= 0);
assumptions(z)
ans = 
z ~= 0

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

assumptions
ans =
[ in(x, 'real'), z ~= 0]

Очистите набор предположений на x и z.

assume([x z],'clear')
assumptions
ans =
Empty sym: 1-by-0

Эквивалентно, следующая команда также очищает предположения от x и z.

syms x z

Эффекты предположений на расчетах

Предположения могут влиять на многие расчеты, включая результаты, возвращенные solve и simplify функции. Например, решите это уравнение без любых дополнительных предположений на его переменной.

syms x
solve(x^4 == 1, x)
ans =
 -1
  1
 -1i
  1i

Теперь примите тот x действительно, и решите то же уравнение.

syms x real
solve(x^4 == 1, x)	
ans =
 -1
  1

Используйте assumeAlso функция, чтобы добавить предположение, что x также положительно.

assumeAlso(x > 0)
solve(x^4 == 1, x)
ans =
  1

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

clear x
x = sym('x');
assumptions(x)
solve(x^4 == 1, x)
ans =
[ in(x, 'real'), 0 < x]
ans =
1

Очистка x с assume(x,'clear') или syms x очищает предположения.

syms x
assumptions(x)
ans =
Empty sym: 1-by-0