freezeСоздайте неактивную копию функции
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
freeze(f)
freeze(f) создает неактивную копию функционального f.
ff := freeze(f) возвращает функцию, которая является “неактивной” копией аргумента f. Это означает:
ff только оценивает его аргументы, но не вычисляет ничто больше,
ff распечатан таким же образом как f,
символьный ff вызовы имеют тот же тип как символьный f вызовы,
если f функциональная среда, затем ff имеет все пазы f.
ff оценивает его входящие параметры даже если функциональный f имеет опцию процедуры hold.
Используйте freeze когда это необходимо, выполнять много операций с f это требует f только в его символьной форме, но f не должен быть выполнен.
Никакой eval ни level может осуществить оценку неактивной функции. Смотрите Пример 2.
Создайте неактивную форму функциональной среды 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)
![]()
Этот пример показывает различие между hold и freeze. Результат команды S := hold(sum)(...) не содержит неактивную версию sum, но неоцененный identifiersum:
S := hold(sum)(1/n^2, n = 1..infinity)

В следующий раз S оценен, идентификатор sum заменяется его значением, функциональная средаsum, и процедура, вычисляя значение бесконечной суммы вызывается:
S
![]()
В отличие от этого оценка результата freeze не приводит к оценке неактивной функции:
S := freeze(sum)(1/n^2, n = 1..infinity)

S

Неактивная функция не реагирует на eval:
eval(S)

Единственный способ отменить freeze должен использовать unfreeze, который повторно активирует неактивную функцию в S и затем оценивает результат:
unfreeze(S)
![]()
freeze(f) не изменяет объект f, но возвращает копию f в неактивной форме. Это означает что расчеты с неактивной версией f может содержать исходный функциональный f.
Например, если вы создаете неактивную версию синусоидальной функции:
Sin := freeze(sin):
и расширьте термин Sin(x+y), затем результат выражается в терминах исходной синусоидальной функции sin:
expand(Sin(x + y))
![]()
|
Объект того же типа как f.