Использование файлов других языков программирования. Запись определений.
Из функций для работы с файлами особо надо отметить следующую функцию-директиву:
- 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;
y
=
<
*
Integrate[Sin[x]
^
5
, x]
*
>
;
return
(
2
*
y
-
1
);
}
После исполнения функции Splice ["demo.me"] программа будет записана в файл demo.с, в котором выражение в скобках <*…*> заменено вычисленным значением интеграла (в форме CForm). Файл при этом будет выглядеть так:
!!demo.c
#include "mdefs.h"
double f(x)
double x;
{
double y;
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
y
+
Sin[x]
y
=
a
a
Save[
"demo1"
, f]
!!demo1
f[x_]
=
y
+
Sin[x]
y
=
a