1.6 Полная форма выражения 25
Apply[f, expr] или f@@expr замещает заголовок выражения expr
на f. Например, Apply[f, {a, b, c}] ⇒ f[a, b, c], T imes@@{a+b+c} ⇒ abc.
Nest[f, expr, n] возвращает выражение, полученное n-кратным при-
ложением f к expr (Nest[f, x, 3] ⇒ f[f[f[x]]]).
Map[f, expr] или f/@expr применяет f к каждому элементу на пер-
вом уровне в expr в следующем смысле:
Map[f, {a, b, c}] ⇒ {f[a], f[b], f[c]},
N[Exp/@{1, 2, 3}]] ⇒ {2.71828, 7.38906, 20.0855},
Map[f, 1 + 2 + c] ⇒ f[3] + f[c],
Map[f, expr, levelspec] применяет f к частям expr, указанным с
помощью levelspec.
Map[f, {{1, 2}, {3, 4}}, 1] ⇒ {f[{1, 2}], f[{3, 4}]},
Map[f, {{1, 2}, {3, 4}}, 2] ⇒ {f[{f[1], f[2]}], f[{f[3], f[4]}]}.
MapAll[f,expr] или f//@expr применяет f ко всем частям выра-
жения expr.
Пусть m = {{a, b}, {c, d}}. Тогда Map[f, m] ⇒ {f[{a, b}], f[{c, d}]},
MapAll[f, m] ⇒ f[{f[{f[a], f[b]}], f[{f[c], f[d]}]}]).
Команда Through[{f,g,h}[a]] порождает список {f[a],g[a],h[a]}.
ReplaceAll[expr, rule] или, что тоже самое, expr/.rule заменяет
в выражении expr переменные по правилу, указанному в rule. Эта
команда позволяет, в частности, вычислять значения алгебраических
выражений.
Рассмотрим примеры:
ReplaceAll[x y
2
, x−> a] ⇒ ay
2
,
ReplaceAll[f[x], f −> g] ⇒ g[x].
ReplaceAll[x
3
, x−> 2] ⇒ 8,
ReplaceAll[x + y
2
z
3
, {x−> a, y−> b}] ⇒ a + b
2
z
3
.
Эти замены обычно пишут так:
x y
2
/.x−> a ⇒ a y
2
, f[x]/.f−> g ⇒ g[x], x
3
/.x−> 2 ⇒ 8
x + y/.{x−> 2, y−> 3} ⇒ 5, x + y
2
z
3
/.{x−> a, y−> b} ⇒ a + b
2
z
3
.
ReplaceRepeated[expr, rule, options−> n] или expr//.rule заме-
няет в выражении expr переменные по правилу, указанному в rule
до тех пор, пока expr не перестанет изменяться. Максимальное чи-
сло замен (итераций) устанавливает опцией MaxIterations−> n (по
умолчанию n=65536).
Например, ReplaceRepeated[Cos[x], x−> Cos[x], MaxIterations−>
100]/.x−> 0.5 ⇒ 0.739085.