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

Контроль выражений. Приложение имени функции к выражению или его части.

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

  • AtomQ [expr] – возвращает True, если выражение ехрг не может быть разложено на подвыражения и является атомарным, и возвращает False в противном случае;
  • FreeQ [expr, form] – возвращает значение True, если в выражении ехрr отсутствует подвыражение, совпадающее с form, в противном случае возвращает False;
  • FreeQ[expr, form, levelspec] – тестирует только части выражения на уровнях, указанных levelspec.

Следующие примеры показывают действие этих функций.

Ввод (In) Вывод (Out)
AtomQ [{a False
AtomQ[2+3/4] True
AtomQ [Sin] True
FreeQ[a*x^b,a] False
FreeQ [ a*x^ b+c, 1 ] True
FreeQ [a*x^b+c, 1.1] True
FreeQ[a*x^b+c,b,2]}] True

Приложение имени функции к выражению или его части

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

Следующие функции позволяют прикладывать имя функции к выражению или к частям выражения:

  • Apply [f, expr] – замещает заголовок выражения ехрг на f;
  • Nest [f, expr, n] – возвращает выражение, полученное и-кратным применением f к ехрг;
  • Map [f, expr] – применяет f к каждому элементу на первом уровне в ехрr;
  • Map[f, expr, levelspec] – применяет f к частям ехрг, указанным с помощью levelspec;
  • MapAll [f, expr] – применяет f ко всем частям выражения ехрг.

Приведем примеры действия этих функций.

Ввод (In) Вывод (Out)
Apply [f, {a, b, x}] f [a, b, x]
Nest[f, x, 3] f[f[f[x]]]
s[x_, y_, z_]: = x + y + b  
N[Apply[s, {1, 2, a}]] 3. + b
Map[f, {а, b, с}] {f[a], f[b], f[c]}
MapAll [f, a*x + b] f[f[b] + f[f[a] f[x]]]
MapAll [f, {а, b, с}] f[{f[a], f[b], f[c]}]
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.