Используйте предположения на символьных переменных

Предположение по умолчанию

В Symbolic Math Toolbox™ символьные переменные являются комплексными переменными по умолчанию. Например, если вы объявляете z как символьное переменное использование

syms z

затем MATLAB® принимает, что z является комплексной переменной. Можно всегда проверять, принята ли символьная переменная, чтобы быть комплексной или действительной при помощи assumptions. Если z является комплексным, assumptions(z) возвращает пустой символьный объект:

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

Установите предположения

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

syms x
assume(x >= 0)

assume заменяет все предыдущие предположения на переменной с новым предположением. Если вы хотите добавить новое предположение существующим предположениям, используйте assumeAlso. Например, добавьте предположение, что x является также целым числом. Теперь переменная x является неотрицательным целым числом:

assumeAlso(x,'integer')

assume и assumeAlso позволяют вам утвердить, что переменная или выражение принадлежат одному из этих наборов: целые числа, положительные числа, рациональные числа и вещественные числа.

Также можно установить предположение при объявлении символьной переменной с помощью sym или syms. Например, создайте действительные символьные переменные a и b и положительную символьную переменную c:

a = sym('a', 'real');
b = sym('b', 'real');
c = sym('c', 'positive');

или более эффективно:

syms a b real
syms c positive

Предположения, что можно присвоить символьному объекту с sym или syms, являются действительными, рациональными, целочисленными и положительными.

Проверяйте существующие предположения

Чтобы видеть весь набор предположений на символьной переменной, используйте функцию assumptions с именем переменной как входной параметр. Например, эта команда возвращает предположения, в настоящее время используемые для переменной x:

assumptions(x)

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

assumptions

Для получения дополнительной информации смотрите Набор Предположений Проверки На Переменных.

Удалите символьные объекты и их предположения

Символьные объекты и их предположения хранятся отдельно. Когда вы устанавливаете предположение, что x является действительным использованием

syms x
assume(x,'real')

вы на самом деле создаете символьный объект x и предположение, что объект действителен. Объект хранится в рабочем пространстве MATLAB, и предположение хранится в символьном механизме. Когда вы удаляете символьный объект из использования рабочего пространства MATLAB

clear x

предположение, что x является действительным пребыванием в символьном механизме. Если вы объявляете новую символьную переменную x позже с помощью sym, это наследовало предположение, что x действителен вместо того, чтобы получить предположение по умолчанию. Если позже вы решаете уравнение и упрощаете выражение с символьной переменной x, вы могли получить неполные результаты.

Примечание

Если вы объявляете переменную с помощью syms, существующие предположения очищены. Если вы объявляете переменную с помощью sym, существующие предположения не очищены.

Например, предположение, что x является действительными причинами полиномиальный x 2 + 1, чтобы не иметь никаких корней:

syms x real
clear x
x = sym('x');
solve(x^2 + 1 == 0, x)
ans =
Empty sym: 0-by-1

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

syms x

После того, как вы очистите предположение, символьный объект остается в рабочем пространстве MATLAB. Если вы хотите удалить и символьный объект и его предположение, используйте две команды:

  1. Чтобы очистить предположение, войти

    syms x
  2. Чтобы удалить символьный объект, войти

    clear x

Для получения дополнительной информации при очищении символьных переменных, смотрите Ясные Предположения и Сброс Символьный Engine.

Похожие темы