property
::depends
Таблица Dependence со всеми свойствами выражения
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
property::depends(ex, …
)
property::depends(...)
возвращает таблицу, которая содержит всю информацию о свойствах целого входа. Эта таблица может использоваться, чтобы определить любое изменение свойств выражения.
Возвращенная таблица в основном используется в библиотеке MuPAD®, чтобы гарантировать валидность помнивших результатов помнить механизма.
Выражение MuPAD может иметь различные свойства в разное время, не изменяя его значение.
Ядро помнит, что механизм не может определить изменение свойств и возвращает неправильные результаты, когда результат зависит от свойств входа.
В этом случае расширенные помнят механизм, обеспеченный prog::remember
должен использоваться вместе с property::depends
.
Сравнивание таблицы зависимости в разное время обнаруживает изменения свойств выражения.
Первый вызов заданного функционального has_changed
инициализирует таблицу DEPENDS
это хранит информацию зависимости:
DEPENDS := table(): has_changed := proc(ex) begin if not contains(DEPENDS, ex) or property::depends(ex) <> DEPENDS[ex] then DEPENDS[ex] := property::depends(ex); TRUE else FALSE end_if end_proc: has_changed(sin(x*PI)):
Свойства не изменились:
has_changed(sin(x*PI))
Каждое изменение обнаруживается:
assume(x, Type::Integer): has_changed(sin(x*PI))
assume(x, Type::PosInt): has_changed(sin(x*PI))
assume(x >= 0): has_changed(sin(x*PI))
unassume(x): has_changed(sin(x*PI))
delete DEPENDS, has_changed:
Следующий пример показывает, что проблемы с ядром помнят механизм:
pos := proc(x) option remember; begin is(x > 0) end: pos(x)
Результат UNKNOWN
хранился для входа x
и возвращен, несмотря на то, что свойства x
изменяются:
assume(x > 0): pos(x); assume(x < 0): pos(x)
Эта задача может только быть решена расширенным, помнят механизм вместе с property::depends
X
все еще меньше нуля):
pos := proc(x) begin is(x > 0) end: pos := prog::remember(pos, property::depends): pos(x)
После изменения свойств входа заданная функция повторно вычисляет результат:
assume(x > 0): pos(x); unassume(x): pos(x)
|
Любое выражение MuPAD |
Таблица, которая может быть по сравнению с другой таблицей зависимости