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

         

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



 

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

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

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



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

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

f[х_,х_] := р[х]

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

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

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

f[а,b] + р[а]

а при вызове

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

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

р[-1 + а^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. . .

Образец, повторяемый ноль или более раз

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



Содержание раздела