unfreeze
Создайте активную копию замороженной функции
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
unfreeze(object
)
unfreeze(object)
повторно активирует все неактивные функции, происходящие в object
, продолжая рекурсивно вдоль структуры object
, и затем оценивает результат.
unfreeze
использует misc::maprec
, чтобы продолжить рекурсивно вдоль структуры object
. Это означает, что для основных областей, таких как массивы, таблицы, списки или полиномы, функциональный unfreeze
применяется к каждому операнду object
.
Если object
является элементом области библиотеки, то поведение unfreeze
задано методом maprec
, который перегружает функциональный misc::maprec
. Если этот метод не существует, то unfreeze
не имеет никакого эффекта на object
. Смотрите Пример 2.
unfreeze
не работает с телом процедур. Поэтому рекомендуется не встроить неактивные функции в процедурах.
Создайте неактивную форму функциональной среды int
:
_int := freeze(int): F := _int(x*exp(x^2), x = 0..1)
Неактивная форма int
хранит каждую информацию, которая известна о функциональном int
, например, выводе, типе и слоте "float"
для оценки с плавающей точкой:
F, type(F), float(F)
Исходная функциональная среда int
не изменяется freeze
:
int(x*exp(x^2), x = 0..1)
Используйте unfreeze
, чтобы повторно активировать неактивный функциональный _int
и оценить результат:
unfreeze(F), unfreeze(F + 1/2)
Функциональный unfreeze
использует misc::maprec
, чтобы действовать рекурсивно вдоль структуры object
. Например, если object
является массивом, содержащим неактивные функции, такие как:
a := array(1..2, [freeze(int)(sin(x), x = 0..2*PI), freeze(sum)(k^2, k = 1..n)] )
затем unfreeze(a)
работает с операндами a
:
unfreeze(a)
Это означает, что для областей библиотеки, эффект unfreeze
задан методом maprec
. Если область не реализует этот метод, то unfreeze
не работает с объектами этой области. Например, создайте область и объект, содержащий неактивную функцию как ее операнд:
dummy := newDomain("dummy"): o := new(dummy, freeze(int)(sin(x), x = 0..2*PI))
Функциональный unfreeze
применился к объекту o
, не имеет никакого эффекта:
unfreeze(o)
Если вы перегружаете функциональный misc::maprec
в порядке работать с первым операндом объектов доменного dummy
, то unfreeze
работает с o
как ожидалось:
dummy::maprec := x -> extsubsop(x, 1 = misc::maprec(extop(x,1), args(2..args(0))) ): unfreeze(o)
|
Любой объект MuPAD® |
Оцененная версия object
после повторной активации всех неактивных функций в нем.