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

Укороченная форма функций. Выделения и подстановки в функциях.

Из описания указанных функций вытекает, что они наряду с полной формой могут задаваться укороченной формой.

Укороченная форма Полная форма
f @ ехрг f [expr]
f @@ ехрг Apply [f, expr]
f /@ ехрг Map[f, expr]
f //@ ехрг MapAll [f, expr]

Смысл укороченных выражений очевиден. Приведем несколько примеров их использования.

Ввод (In) Вывод (Out)
f@{a, b, с} f[{a, b, c}]
f@@{a, b, c} f [a, b, c]
f /@{a, b, c} {f[a], f[b], f[c]}
f//@{a, b, x} f[{f[a], f[b], f[x]}]

Укороченная форма функций может оказаться полезной для сокращения записи алгоритмов и программ.

Выделения и подстановки в функциях

Функция Slot[n], или, в укороченной форме, #n, представляет n-й аргумент функции. Это иллюстрируют следующие примеры.

Ввод (In) Вывод (Out)
(5* Slot [1] + Slot [2] *Slot[3]A 2) &[a, b, с] 5a+bc2
#1A #2 S[a, b] ab

Объект # эквивалентен #1, a #0 – заголовку абстрактной функции. Таким образом, F[#.#2]&F[a,b] эквивалентно F[a,b].

Функция SlotSequence [n], или, в укороченной форме, ##n, где п = 1, 2,…, представляет порядок применения формальных аргументов к абстрактной функции. Таким образом, объект ##n определяет последовательность аргументов, начиная с n-го.

Ввод (In) Вывод (Out)
(Times[5, ##2] +Times[##2, ##3A 2]) &[а, b, с] Sbobc3

Представленные средства обеспечивают работу с функциями на абстрактном уровне.

Интересные возможности связаны с использованием подстановок при определении функций. Система допускает использование подстановок в виде f [x] = value и f[x_] = value.

Поясним это несколькими примерами.

Ввод (In) Вывод (Out)
f[x] =u u
f[x] +f[y] u+f ty]
f [x_] = х^2 x2
f[x] +f[y] u+y2
Clear [f]  
f[x]+f[y] f [x] + f [y]

Как нетрудно заметить из этих примеров, подстановки в функциях могут существенно изменить исходную функциональную зависимость. А потому важной областью их применения является модификация функций.

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