Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
Постоянные предположения работают лучше всего на математические свойства, которые сохраняются в течение ваших расчетов. Предположим, вы хотите вычислить время, в течение которого свободно падающий объект исключает из высоты h
. Кинематическим уравнением для движения свободного падения является h = g t2, где g
ускорение свободного падения. Используя это уравнение, вычислите время, в течение которого объект падает от определенной высоты. Без предположений вы получаете полное решение для всех возможных значений параметров включая комплексные числа:
t = solve(h = g*t^2/2, t)
Если вы не рассматриваете особый случай, где никакие гравитационные силы не существуют, можно безопасно принять, что гравитационное ускорение положительно. Это предположение удаляет специальные случаи невесомости из решения:
assume(g > 0); t = solve(h = g*t^2/2, t)
Переменная h
в уравнении представляет высоту, от которой падает объект. Если вы не полагаете, что кто-то первоначально выдает объект вверх и что объект отражается от земли, высота h
всегда положительно. Поэтому можно принять что оба гравитационных ускорения g
и высота h
положительны:
assume(g > 0 and h > 0); t = solve(h = g*t^2/2, t)
Предположение, что время отбрасывания является положительным значением, вы получаете ожидаемый результат. Когда вы устанавливаете предположения на переменных, решатель сравнивает полученные решения с заданными предположениями. Эта дополнительная задача может замедлить решатель:
assume(g > 0 and h > 0 and t > 0); t := solve(h = g*t^2/2, t)
Решатель возвращает решения как набор, даже если набор содержит только один элемент. Чтобы получить доступ к элементам набора решения, используйте квадратные скобки или op
команда:
time = t[1]
Очистите переменную t
для дальнейших расчетов:
delete t
Если вы устанавливаете несколько предположений для того же объекта, каждое новое предположение перезаписывает предыдущий:
assume(h in R_); assume(h <> 0); is(h in R_), is(h <> 0)
Если вы хотите сохранить предыдущее предположение при добавлении нового смотрите Добавляющие Предположения.
assume
команда не может решить предположения в форме уравнений и не присваивает значения переменным:
assume(g + 5 = 14.8 and 2*t = 14); h = g*t^2/2
Когда вы устанавливаете предположение в форме неравенства, обе стороны неравенства должны представлять действительные значения. Неравенства с комплексными числами недопустимы, потому что поле комплексных чисел не является упорядоченным полем. Например, при попытке использовать следующее предположение, MuPAD® возвращает ошибку:
assume(t > 2*I)
Error: Inconsistent assumptions. [property::_assume]
Можно использовать комплексные числа в предположении, записанном в форме уравнения:
assume(t = 2*PI*I)
Когда вы устанавливаете предположение на объекте, MuPAD заменяет предыдущие предположения на том объекте с новым предположением:
assume(x in Z_); assume(x in R_); is(x in Z_), is(x in R_)
Чтобы добавить новое предположение, не удаляя предыдущие предположения, используйте assumeAlso
команда:
assume(x in Z_); assumeAlso(x in R_); is(x in Z_), is(x in R_)
Кроме того, можно установить несколько предположений в одном вызове функции при помощи логических операторов. Например, установите два предположения на x
:
assume(x in Z_ and x in R_); is(x in Z_), is(x in R_)
При добавлении предположений всегда проверяйте, что новое предположение не противоречит существующему предположению. MuPAD не гарантирует, что обнаружил конфликтные предположения. Например, примите тот y
является одновременно ненулевым, действительным и мнимое значение. Type::Imaginary
относится ко всем комплексным числам, лежащим на мнимой оси. Когда вы устанавливаете эти предположения, MuPAD не выдает предупреждения и не делает ошибки:
assume(y <> 0); assumeAlso(y in R_); assumeAlso(y, Type::Imaginary)
Не устанавливайте конфликтные предположения, потому что они могут привести к непредсказуемым и противоречивым результатам.
Чтобы проверять, сохраняется ли предположение все еще, используйте is
команда. Например, MuPAD пропускает предположение что переменная y
представляет мнимые числа, потому что это предположение конфликтует с комбинацией предыдущих двух предположений:
is(y <> 0), is(y in R_), is(y, Type::Imaginary)
Если вы устанавливаете конфликтные предположения, порядок, в котором вы устанавливаете их, не всегда определяет, какое предположение MuPAD принимает:
assume(y <> 0); assumeAlso(y, Type::Imaginary); assumeAlso(y in Z_); is(y <> 0), is(y, Type::Imaginary), is(y in Z_)
Постоянные предположения содержат для всех дальнейших вычислений. Перед использованием параметра в других вычислениях проверяйте, какие свойства MuPAD принимает, чтобы быть допустимым для этого параметра. property::showprops
команда возвращает все предположения, заданные для параметра:
assume(g in R_); assume(h in Z_); assume(t > 0); property::showprops(g), property::showprops(h), property::showprops(t)
unassume
команда очищает конкретный объект от всех предположений:
unassume(g); unassume(h); unassume(t); property::showprops(g), property::showprops(h), property::showprops(t)
Чтобы удалить значение параметра и очистить весь набор предположений для этого параметра, используйте delete
команда:
delete g, h, t
Например, присвойте значение переменной h
и примите тот h > 0
:
h := g*t^2/2: assume(g > 0 and h > 0); property::showprops(h); h
unassume
команда очищает предположение, но не удаляет значение переменной:
unassume(h > 0); property::showprops(h); h
delete
команда очищает предположение и значение:
delete h; property::showprops(h); h