Warning: include(/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/wp-cache-base.php): failed to open stream: No such file or directory in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 65

Warning: include(): Failed opening '/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/wp-cache-base.php' for inclusion (include_path='.:/opt/alt/php55/usr/share/pear:/opt/alt/php55/usr/share/php') in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 65

Warning: include_once(/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/ossdl-cdn.php): failed to open stream: No such file or directory in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 82

Warning: include_once(): Failed opening '/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/ossdl-cdn.php' for inclusion (include_path='.:/opt/alt/php55/usr/share/pear:/opt/alt/php55/usr/share/php') in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 82
Использование файлов других языков программирования | Учебники

Главная > Mathematica 8 > Использование файлов других языков программирования


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

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

  • Splice [ "file .mx" ] — вставляет в файлы на других языках программирования вычисленные выражения системы Mathematica, которые должны быть записаны в скобках вида <* и *>;
  • Splice ["infile", "outfile"] — читает файл infile, интерпретирует фрагменты, содержащиеся между скобками <* и *>, и записывает результат в файл outfile.

Эта возможность особенно существенна при использовании программ на языках программирования С (расширение .me), Fortran (расширение .mf) и ТеХ (расширение .mtex), для форматов которых Mathematica имеет средства конвертирования выражений (CForm, FortranForm и TexForm соответственно). Таким образом, имеется возможность экспорта выражений системы Mathematica в программы, составленные на этих языках.
Поясним применение функции-директивы Splice. Пусть имеется экспортированная программа на языке С, которая должна рассчитывать численное значение некоторого интеграла, и мы хотим получить формулу для этого интеграла средствами системы Mathematica. Допустим, она представлена файлом demo.me. Его можно просмотреть следующим образом:
!!demo.me
#include "mdefs.h"
double f(x)
double x;
{
double y;
у = <* Integrate[Sin[x]^5, x] *> ;
return (2*y- 1) ;
}
После исполнения функции Splice ["demo.me"] программа будет записана в файл demo.с, в котором выражение в скобках <*…*> заменено вычисленным значением интеграла (в форме CForm). Файл при этом будет выглядеть так:
!!demo.с
#include "mdefs.h" double f(x) double x;
{
double y;
у = -5*Cos(x)/8 + 5*Cos(3*x)/48- Cos(5*x)/80 ;
return (2*y- 1) ;
}
Запись определений
Из простых функций, обеспечивающих создание файлов с заданными определениями, надо отметить также функцию Save:
Save ["filename", symb1, symb2,…]
Она добавляет определения символов symbi к файлу filename (возможны упрощенные формы Save).
Приведем пример ее использования:
f[x_] = Sin[x] + y
у+ Sin[x]
у=а
а
Save["demol",f]
!!demol
f[x_] = у + Sin[x]
у = а
 
Другие функции для работы с файлами
 
В целом средства системы Mathematica обеспечивают возможности работы с различными файлами, присущие MS-DOS, без выхода из среды системы. Относящиеся к этой группе функции даны в приложении. Для этих функций характерно, что в момент выполнения они не дают видимого эффекта. К таким функциям относятся функции копирования директорий и файлов, смены их имен, удаления и т. д. Они хорошо известны пользователям MS-DOS и могут выполняться из среды Mathematica.
Рассматривая обширный список файловых и поточных операций, можно поневоле сделать вывод об их избыточности. Но здесь действует простое правило: не хочешь применять эти функции — не применяй! Они рассчитаны на пользователя, всерьез занимающегося стыковкой систем Mathematica с другими программными системами.
Важное место занимают функции, дающие информацию о директориях, файлах и потоках. К ним относятся следующие функции:

  • Directory [ ] — возвращает текущий рабочий каталог;
  • DirectoryStack [ ] — возвращает содержимое стека каталогов, которое представляет последовательность используемых в текущем сеансе каталогов;
  • $Display— возвращает список файлов и каналов (pipes— канал или абстрактный файл), используемый функцией вывода $DisplayFunction по умолчанию;
  • FileByteCount ["filename"] — возвращает количество байтов в файле;
  • FileDate ["filename"] — возвращает дату и время последней модификации файла в виде списка;
  • Filelnformation ["filename"] — возвращает информацию о файле;
  • FileNames [ ] — приводит список всех файлов в текущем рабочем каталоге;
  • FileNames [" form" ] — перечисляет все файлы в текущем рабочем каталоге, чьи имена совпадают с шаблоном form;
  • FileNames [{ "forml", "form2",…} ] — перечисляет все файлы, чьи имена соответствуют любому из шаблонов formi;
  • FileNames [forms, {"dirl", "dir2",…} ] — перечисляет файлы с именами, соответствующими шаблонам forms, в любом из указанных каталогов diri;
  • FileType ["filename"] — возвращает тип файла: File, Directory или None (если указанного файла не существует);
  • $HomeDirectory — дает имя «домашней» директории пользователя;
  • $Output — дает список файлов и каналов, в которые направляется стандартный вывод системы Mathematica;
  • ParentDirectory [ ] — возвращает имя родительского каталога для текущего рабочего каталога;
  • ParentDirectory ["dir"] — возвращает имя родительского каталога для каталога dir;
  • $ Path — дает список каталогов для просмотра при попытке поиска внешнего файла;
  • StreamPosition [stream] — возвращает целое число, которое указывает позицию текущей точки в открытом потоке stream;
  • Streams [ ] — возвращает список всех потоков, открытых в данный момент;
  • Streams ["name" ] — перечисляет только потоки с указанным именем name.

Приведенные ниже примеры иллюстрируют использование большинства из этих достаточно простых функций:
Directory[]
C:\PROGRAM FILES\WOLFRAM RESEARCH\MATHEMATICA\4.0
DirectoryStack[]
{} / $Display
stdout
FileByteCount["C:.val"]
46
FileDatef’C: .val"]
{1999, 8, 3, 16, 4, 44}
FileInformation["C:.val"]
{File->C:\ma.val, FileType->File, Date -> 3142685084, ByteCount ->46}
Filenames[]
{Examples, FILES, MATHEMATICA.EXE,
MATH.EXE, MATHINSTALLER.EXE, MATHKERNEL.EXE}
FileType["C:.val"]
File HomeDirectory[]
c:\ $0utput
{OutputStream[stdout, 1]}
ParentDirectory[]
С: \m3 Streams[]
{OutputStream[stdout, 1],
OutputStream[stderr, 2]}

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

Статьи по теме

Комментарии запрещены.