Вы здесь

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

 

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

 

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

  • 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]

у = а

 


Top.Mail.Ru