Используйте допущения к символьным переменным

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

В 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 является вещественным, вызывает полином x2 + 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

Для получения дополнительной информации об очистке символьных переменных смотрите Clear Assumption и Reset the Symbolic Engine.

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте