assume
Установите постоянное предположение
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
assume(condition
) assume(expr
,set
)
assume(condition)
устанавливает предположение, что условие condition
верно для всех дальнейших вычислений. Этот вызов удаляет все предыдущие предположения, содержащие идентификаторы, используемые в condition
.
assume(expr, set)
присоединяет свойство set
к идентификатору или выражению expr
. Этот вызов перезаписывает все предыдущие предположения, содержащие идентификаторы, используемые в expr
.
Предположения являются математическими условиями, которые приняты, чтобы сохраняться для всех вычислений. По умолчанию все идентификаторы MuPAD® независимы друг от друга и могут принять любое значение в комплексной плоскости. Например, sign(1 + x^2)
не может больше упрощаться, потому что MuPAD принимает, что x
является комплексным числом. Если вы устанавливаете предположение, что x
является вещественным числом, то MuPAD может упростить sign(1 + x^2)
до 1
.
Поэтому много функций MuPAD возвращают очень общие или кусочно заданные результаты, которые зависят от дальнейших условий. Например, solve
или int
могут возвратить результаты piecewise
.
Много математических теорем содержат только при определенных обстоятельствах. Например, x^b*y^b = (x*y)^b
содержит, если b
является целым числом. Но это уравнение не верно для всех комбинаций x
, y
и b
. Например, это не верно если x = y = -1, b = 1/2
. В таких случаях можно использовать предположения, чтобы получить более определенные результаты.
Если вы используете assume
в функции или процедуре, MuPAD использует новое предположение и игнорирует существующие предположения только в функции или процедуре. После функции или вызова процедуры, MuPAD удаляет новое предположение и восстанавливает предположения, которые были установлены перед функцией или вызовом процедуры.
Если condition
является отношением (например, x < y
), то MuPAD неявно принимает, что обе стороны отношения действительны. Смотрите Пример 4.
Чтобы удалить предположения, ранее установленные на x
, используйте unassume(x)
или delete x
.
Когда вы присваиваете значение идентификатору с предположениями, присвоенное значение может быть противоречивым с существующими предположениями. Присвоения перезаписывают все предположения, ранее установленные на идентификаторе. Смотрите Пример 5.
assume
принимает любой condition
и булевы комбинации condition
s. Смотрите Пример 7.
Если expr
является списком, вектором или матрицей, используйте синтаксис assume(expr, set)
. Здесь set
должен быть задан как один из C_
, R_
, Q_
, Z_
, N_
или выражения, созданного с операциями присвоения, такими как union
, intersect
или minus
. set
также может быть функцией библиотеки Type
, например, Type::Real
, Type::Integer
, Type::PosInt
, и так далее.
Не используйте синтаксисы assume(expr in set)
и assume(condition)
для нескалярного expr
.
Установите предположение, что идентификатор n
является целым числом. Здесь, assume(n, Type::Integer)
эквивалентен assume(n in Z_)
, потому что n
является скаляром.
assume(n, Type::Integer): assume(n in Z_): getprop(n);
Проверяйте, является ли n^2
неотрицательным целым числом. MuPAD использует предположение, что вы устанавливаете на n
.
is(n^2, Type::NonNegInt)
Другие системные функции принимают это предположение во внимание:
abs(n^2 + 1); simplify(sin(2*n*PI))
Для дальнейших вычислений удалите идентификатор n
:
delete n
Чтобы сохранить существующие предположения и объединить их с новыми единицами, используйте assumeAlso
:
assume(n, Type::Integer): getprop(n);
assumeAlso(n, Type::Positive): getprop(n);
Для дальнейших вычислений удалите идентификатор n
:
delete n
Также установите несколько предположений в одном вызове функции:
assume(n, Type::Integer and Type::Positive): getprop(n);
Для дальнейших вычислений удалите идентификатор n
:
delete n
Можно установить отдельные предположения на действительных и мнимых частях идентификатора:
assume(Re(z) > 0); assumeAlso(Im(z) < 0):
abs(Re(z)); sign(Im(z))
is(z, Type::Real), is(z > 0)
Для дальнейших вычислений удалите идентификатор z
:
delete z
Используя assume
, набор предположение x > y
. Набор предположений как отношения влияет на свойства обоих идентификаторов.
assume(x > y)
Чтобы видеть набор предположений на идентификаторах, используйте getprop
:
getprop(x); getprop(y);
Чтобы сохранить существующее предположение на y
и добавить новый, используйте assumeAlso
. Например, добавьте новое предположение, что y
больше, чем 0
при хранении предположения, что y
является меньше, чем x
:
assumeAlso(y > 0)
is(x^2 >= y^2)
Отношения, такие как x > y
, подразумевают, что включенные идентификаторы действительны:
is(x, Type::Real), is(y, Type::Real)
Также можно установить реляционное предположение, где одна сторона не является идентификатором, а выражением:
assume(x > 1/y)
getprop(x); getprop(y)
Для дальнейших вычислений удалите идентификаторы x
и y
:
delete x, y
_assign
и :=
не проверяют, имеет ли идентификатор какие-либо предположения. Операция присвоения перезаписывает все предположения:
assume(a > 0): a := -2: a, getprop(a)
Для дальнейших вычислений удалите идентификатор a
:
delete a
Установите предположение, что x положителен, и найдите абсолютное значение x
, знак x
и действительные и мнимые части x
. Эти системные функции берут набор предположений на идентификаторах во внимание:
assume(x > 0): abs(x), sign(x), Re(x), Im(x)
Попытайтесь расширить выражение ln(z1*z2)
без дополнительных предположений. Это не расширяется, потому что ln(z1*z2) = ln(z1) + ln(z2)
не верен для произвольного z1
, z2
в комплексной плоскости:
expand(ln(z1*z2))
Теперь, установите предположение, что один номер действителен и положителен. Расширьте то же выражение:
assume(z1 > 0): expand(ln(z1*z2))
Для дальнейших вычислений удалите предположения на x
и z1
:
unassume(x); unassume(z1)
Установите эти два предположения на идентификаторе a
. Чтобы объединить предположения, используйте булев оператор and
:
assume(a > 0 and a in Z_): is(a = 0); is(a = 1/2); is(a = 2);
|
Идентификатор, математическое выражение, список, вектор или матрица, содержащая идентификаторы. Если |
|
Свойство, представляющее набор чисел или набор, возвращенный Например, этот набор может быть элементом |
|
Равенство, неравенство, элемент отношения или булева комбинация (с операторами |
Пустой объект null()
типа DOM_NULL
.
assumeAlso
| assuming
| assumingAlso
| getprop
| is
| property::hasprop
| property::showprops
| unassume