Иллюстрированный самоучитель по Mathematica 3/4

Образцы и их применение

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

Признаком образца являются знаки подчеркивания "_" (от одного до трех). Они обычно выглядят слитно, так что надо внимательно следить за общей длиной символов образцов. Наиболее распространенное применение образцов – указание на локальный характер переменных при задании функций пользователя. Например, функция:

fsc[x_, y_] := x * Sin[y] + y * Cos[x] + z

В списке параметров содержит два образца, х_ и у_. В правой части этого выражения переменные х и у, связанные с образцами х_ и у_, становятся локальными переменными, тогда как переменная z будет глобальной переменной. Обратите особое внимание на то, что символы образцов используются только в списках параметров – в правой части выражений они уже не применяются.

Образцами можно задавать некоторые общие свойства функций. Например, запись:

f[x_, x_] := p[x]

Означает, что функция f двух идентичных аргументов становится тождественной функции р [ х ]. Следовательно, вызов функции:

f[a, a] + f[a, b]

Даст выход в виде:

f[a, b] + p[a]

А при вызове:

f[a ^ 2 - 1, a ^ 2 - 1]

Будет получен результат:

p[-1 + a ^ 2]

Примеры применения образцов для задания функции вычисления факториала приводились выше. В образце можно указывать его тип данных:

  • x_Integer – образец целочисленный;
  • x_Real – образец с действительным значением;
  • x_Complex – образец с комплексным значением;
  • x_h – образец с заголовком h (от слова head – голова).

Задание типов данных с помощью образцов делает программы более строгими и наглядными и позволяет избежать ошибок, связанных с несоответствием типов.

В системе Mathematica используются следующие типы образцов.

Обозначение Назначение образца
  Любое выражение
x_ Любое выражение, представленное именем х
:: pattern Образец, представленный именем х
pattern? test Возвращает True, когда test применен к значению образца
_h Любое выражение с заголовком h
x_h Любое выражение с заголовком h, представленное именем х
  Любая последовательность с одним и более выражений
  Любая последовательность с нулем или более выражений
:x_< ИЛИ х__ Последовательности выражений, представленные именем х
_h или h__ Последовательности выражений, каждое с заголовком h
x _ h или х__h Последовательности выражений с заголовком h, представленные именем х
x_:v Выражение с определенным значением v
x_h:v Выражение с заголовком h и определенным значением v
x_. Выражение с глобально заданным значением по умолчанию
Optional [x h] Выражение с заголовком h и с глобально заданным значением по умолчанию
Pattern.. Образец, повторяемый один или более раз
Pattern… Образец, повторяемый ноль или более раз

Еще раз отметим, что символ "_" в образцах может иметь одинарную, двойную или тройную длину. Надо следить за правильностью его применения, поскольку эти варианты различаются по смыслу. Образцы широко применяются при задании функций пользователя и в пакетах расширения системы.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.