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

Функции пользователя


Хотя в систему входят многие сотни встроенных функций (начиная от элементарных и кончая специальными математическими функциями и системными функциями), нередко требуется расширить ее вводом новых функций, действие которых задается пользователем. Такие функции принято называть функциями пользователя. Функции пользователя — простейшие программные объекты, необходимые даже в том случае, когда пользователь не желает углубляться в тонкости программирования системы. Их цель — расширение системы и ее обучение работе с новыми функциями.

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

  • f (x_) := х^3 — отложенное задание функции пользователя с именем f;
  • f (х_) = х^3 — немедленное задание функции пользователя с именем f;


  • ?f — вывод информации о функции f;
  • Clear [f] — уничтожение определения функции f.

В обозначениях вида х_ знак _ применяется для создания так называемых образцов, задающих локальные переменные в теле функции — в нашем примере это х. При этом в самом теле функции переменные обозначаются как обычно, без знака образца. Он лишь указывает на особый статус переменных в ограниченном пространстве программы — в теле функции. Так, если вместо х_ будет подставлено число 2, то f (2) будет возвращать 2 А 3. Вне тела функции значение переменной х не изменяется. Переменная х может быть и неопределенной: х_ определяет переменную х только для тела функции. Более подробно создание образцов будет описано в дальнейшем.

Mathematica позволяет записать введенные пользователем функции с их определениями на магнитный диск с помощью оператора

Save["filename", fl, f2, ...]

После этого функция пользователя становится внешней функцией. При этом для ввода таких функций в текущий документ (notebook) достаточно вызвать файл с именем filename:

<<filename

Рекомендуется создавать файлы с типовым расширением .т. Такие файлы входят в пакеты расширений системы. Имя файла нужно задавать по общепринятым для MS-DOS правилам, то есть при необходимости указывать логическое имя дисковода и путь к файлу, например, так:


<<D: \MAT\myfunc .m

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

Функции пользователя могут быть рекурсивными, то есть допускать в своем теле обращение к самим себе. Это связано с тем, что функция становится объявленной сразу же после задания своего имени со списком параметров. Рекурсия — мощный прием программирования, но злоупотреблять им не стоит. Многие рекурсивные алгоритмы более эффективно реализуются без рекурсии, с применением средств процедурного программирования, например циклов.

Функции пользователя можно задавать и выводить на печать как на языке системы, так и на некоторых общепринятых языках программирования, например Fortran, С или ТеХ. Для этого существует ряд функций преобразования, в имена которых входит слово Form (форма) и название языка для записи функций. Основные из них — это CForm [expr], FortranForm [expr ] и TeXForm [expr]. С их помощью выражения можно преобразовать в форму, принятую для языков программирования С, Fortran и ТеХ. При преобразовании в форму языка ТеХ греческие буквы заменяются их латинскими именами, например alpha, Alpha, beta, Beta, gamma и т. д. К сожалению, в отличие от систем класса MathCAD и Maple V R3, вывод математических формул в их полностью естественном виде не предусмотрен, хотя многое для этого уже сделано.

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

  • Splice ["file.rar"] — читает текстовый файл file.mx, интерпретирует его фрагменты, заключенные в ограничители <*...*>, и пишет текстовый файл file.*, в котором эти фрагменты преобразованы в формат, определяемый расширением х (с — С, f — Fortran, tex — ТеХ);
  • Splice ["infile", "outfile"] — то же, но с раздельным заданием имен входного и выходного файлов.
Таким образом, система Mathematica может общаться с другими программами, написанными на языках программирования, получивших распространение в практике реализации математических расчетов.Этому во многом способствует возможность преобразования форматов данных и результатов вычислений в различную форму, характерную для используемой внешней системы. К примеру, если вы работаете с программами на языке Fortran, то следует использовать соответствующий формат представления данных и результатов вычислений.

Mathematica может общаться также с иными системами, например текстовыми редакторами. К примеру, для передачи содержимого каких-либо ячеек в текстовый редактор Write, входящий в оболочку Windows, достаточно выделить эти ячейки и поместить их в буфер обмена, используя команду Сору из меню Edit. После этого надо запустить текстовый редактор и с помощью команды Edit | Paste поместить в окно редактирования содержимое ячеек. Если оно символьное, то с помощью редактора можно записать полученный документ с расширением .txt, то есть в стандартном текстовом формате, с которым работает большинство DOS-приложений.



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