Защитите имена функции и опции

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

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

Имена встроенных функций MuPAD® и опций защищены. При попытке присвоить значение функции MuPAD или опции, система выдает ошибку. Этот подход гарантирует, что вы не перезапишете встроенную функцию или опцию случайно.

Если вы создаете новую процедуру MuPAD, рекомендуется защитить процедуру и все ее опции, особенно если вы часто используете ту процедуру. Например, MuPAD не обеспечивает функцию для вычисления чисел Лукаса. Можно записать собственную процедуру для вычисления чисел Лукаса, и затем защитить имя процедуры.

Числа Лукаса являются последовательностью целых чисел. Формула рекурсии, которая задает n th номер Лукаса, подобна определению Чисел Фибоначчи:

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

lucas:= proc(n:Type::PosInt)
  option remember;
begin
  if n = 1 then
    1
  elif n = 2 then
    3
  else
    lucas(n - 1) + lucas(n - 2)
  end_if
end_proc:
lucas(i) $ i = 1..5

Теперь защитите имя процедуры, lucas, с помощью protect с опцией ProtectLevelError:

protect(lucas, ProtectLevelError):

ProtectLevelError позволяет вам установить полную защиту для идентификатора. Теперь, попытка присвоить любое значение lucas заканчивается по ошибке:

lucas := 0
Error: Identifier 'lucas' is protected. [_assign]

Также можно использовать опцию ProtectLevelWarning. В этом случае можно все еще присвоить значение защищенному идентификатору, но предупреждение появляется, например:

protect(lucas, ProtectLevelWarning):

Можно присвоить любое значение lucas теперь, но такое присвоение инициировало предупреждение:

lucas := 0
Warning: Protected variable 'lucas' is overwritten. [_assign]

Для дальнейших вычислений удалите защиту от идентификатора lucas:

unprotect(lucas):