property::depends

Таблица Dependence со всеми свойствами выражения

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

property::depends(ex, …)

Описание

property::depends(...) возвращает таблицу, которая содержит всю информацию о свойствах целого входа. Эта таблица может использоваться, чтобы определить любое изменение свойств выражения.

Возвращенная таблица в основном используется в библиотеке MuPAD®, чтобы гарантировать валидность помнивших результатов помнить механизма.

Выражение MuPAD может иметь различные свойства в разное время, не изменяя его значение.

Примечание

Ядро помнит, что механизм не может определить изменение свойств и возвращает неправильные результаты, когда результат зависит от свойств входа.

В этом случае расширенные помнят механизм, обеспеченный prog::remember должен использоваться вместе с property::depends.

Примеры

Пример 1

Сравнивание таблицы зависимости в разное время обнаруживает изменения свойств выражения.

Первый вызов заданного функционального 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:

Пример 2

Следующий пример показывает, что проблемы с ядром помнят механизм:

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)

Параметры

ex

Любое выражение MuPAD

Возвращаемые значения

Таблица, которая может быть по сравнению с другой таблицей зависимости

Смотрите также

Функции MuPAD