exponenta event banner

Очистить допущения и сбросить символьный механизм

Символьное рабочее пространство модуля, связанное с рабочим пространством 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Рабочее пространство символьного модуля
1syms x positive
или
syms x;
assume(x > 0)
xx > 0
2clear xпустойx > 0
3syms xxпустой
4clear allпустойпустой

Проверка набора допущений для переменных

Чтобы проверить, является ли переменная, скажем x, имеет любые допущения в символьном рабочем пространстве движка, связанные с рабочим пространством MATLAB, используйте assumptions в интерактивном редакторе 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