Проверьте опции

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

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

Для многих стандартных процедур MuPAD® можно использовать различные варианты. Если процедура MuPAD принимает опции, она имеет встроенный механизм для сбора и проверки этих опций. Например, solve функция принимает Real опция. Опция указывает, что решатель должен возвратить только действительные решения и принимает значения TRUE и FALSE. Если опция принимает только TRUE и FALSE значения, можно обеспечить имя опции, не задавая его значение:

solve(x^4 - 1 = 0, x, Real)

Если вы не задаете Real опция, решатель использует значение опции по умолчанию FALSE, и возвращает все сложные решения уравнения:

solve(x^4 - 1 = 0, x)

Можно явным образом задать пару значения опции, например, Real = TRUE или Real = FALSE:

solve(x^4 - 1 = 0, x, Real = TRUE);
solve(x^4 - 1 = 0, x, Real = FALSE)

Если вы предоставляете неожиданную возможность (например, если вы записываете имя опции неправильно), MuPAD выдает ошибку, указывая на неправильную опцию. Если существует несколько неправильных опций, MuPAD указывает на первую неправильную опцию:

solve(x^4 - 1 = 0, x, Rea, Rel)
Error: Invalid argument number 3.
  Evaluating: solvelib::getOptions

Можно встроить ту же опцию, проверяющую механизм в собственные процедуры. Для этой задачи MuPAD обеспечивает prog::getOptions функция, которая собирает и проверяет опции, используемые во время вызова процедуры. Когда пользователь вызывает вашу процедуру, prog::getOptions сканирования все аргументы и возвращают таблицу, которая содержит все ожидаемые опции и их значения. Это также возвращает список всех неожиданных опций.

Когда вы передаете аргументы prog::getOptions, всегда используйте следующий заказ. Первый аргумент prog::getOptions номер   n + 1, где n количество необходимых (обязательных) аргументов процедуры. Затем необходимо предоставить список всех действительных аргументов, сопровождаемых таблицей всех приемлемых опций и их значений по умолчанию. Чтобы получить доступ к последовательности всех аргументов вызова процедуры, включая обязательные аргументы и опции, используют args функция.

Следующий пример демонстрирует процедуру, которая принимает числовые коэффициенты aB, и c и решает квадратное уравнение a x2 + bx + c = 0 использований этих коэффициентов. Процедура solveQuadraticEqn требует, чтобы пользователь ввел три числовых значения. Поэтому, если вы встраиваете prog::getOptions в эту процедуру, первый параметр prog::getOptions должен быть номер 4. Процедура также принимает дополнительный аргумент PositiveOnly. Если значение PositiveOnly TRUE, процедура возвращает только положительные решения квадратного уравнения. Если значением является FALSE, процедура возвращает все решения. Следующий вызов функции к prog::getOptions устанавливает значение опции по умолчанию PositiveOnly = FALSE:

solveQuadraticEqn := proc(a:Type::Numeric, b:Type::Numeric,
                                           c:Type::Numeric)
local options, S;
begin
  options := prog::getOptions(4, [args()],
             table(PositiveOnly = FALSE));
  S := solve(a*x^2 + b*x + c = 0, x);
  if options[1][PositiveOnly] = TRUE then
    S := select(S, testtype, Type::Positive)
  end_if:
  return(S)
end_proc:

Если вы вызываете solveQuadraticEqn без PositiveOnly опция, процедура возвращает все решения квадратного уравнения:

solveQuadraticEqn(2, 3, -9)

Если вы используете PositiveOnly опция, процедура возвращает только положительные решения:

solveQuadraticEqn(2, 3, -9, PositiveOnly)

По умолчанию, prog::getOptions не делает ошибки, когда она находит неожиданную опцию (опция, которая не перечислена в таблице из принятых опций). Вместо этого это собирает все неожиданные опции и возвращает их в отдельном списке. Таким образом, процедура solveQuadraticEqn не выдает ошибку, когда вы записываете имя опции неправильно:

solveQuadraticEqn(2, 3, -9, Positive)

prog::getOptions функция может выдать ошибку, когда она находит неожиданную опцию. В вызове функции к prog::getOptions, четвертый аргумент указывает ли prog::getOptions должен тихо собрать неожиданные опции или выдать ошибку. Этот аргумент является дополнительным. По умолчанию это установлено в FALSE. Чтобы выдать ошибку вместо того, чтобы перечислить неожиданные аргументы, используйте TRUE как четвертый аргумент prog::getOptions:

solveQuadraticEqn := proc(a:Type::Numeric, b:Type::Numeric,
                                           c:Type::Numeric)
local options, S;
begin
  options := prog::getOptions(4, [args()],
       table(PositiveOnly = FALSE), TRUE);
  S := solve(a*x^2 + b*x + c = 0, x);
  if options[1][PositiveOnly] = TRUE then
    S := select(S, testtype, Type::Positive)
  end_if:
  return(S)
end_proc:

Теперь процедура solveQuadraticEqn выдает ошибку. Сообщение об ошибке указывает на неправильную опцию:

solveQuadraticEqn(2, 3, -9, Positive)
Error: Invalid argument number 4.
  Evaluating: solveQuadraticEqn
Для просмотра документации необходимо авторизоваться на сайте