Как использовать функции Mathematica в программах на Python?

Я хотел бы знать, как я могу вызвать функции Mathematica из Python.

Я ценю пример, например, с использованием функции Mathematica Prime.

У меня был поиск по MathLink, но то, как его использовать в Python, немного неясно для меня.

Я пытался использовать библиотеку Mathematica-Python под названием pyml, но у меня не было успеха, возможно, потому что эта библиотека выглядит очень старой (в учебнике написано Mathematica 2 или 3).

Попробовал скомпилировать источник в Wolfram/Mathematica/8.0/SystemFiles/Links/Python но закончилась несколькими ошибками при использовании python 2.6 (документация говорит, что должна работать только на python 2.3).

Pythonika интересна, но, похоже, просто для использования в тетрадях Mathematica, и я хотел бы написать .py файлы, которые вызывают функции Mathematica.

Итак, кто-то знает хороший способ написания программ на Python, который использует функции Mathematica и может привести пример?

2 ответа

Решение

Я нашел решение.

шаги:

1-Создайте скрипт с именем runMath с содержимым:

#!/usr/local/bin/MathematicaScript -script

value=ToExpression[$ScriptCommandLine[[2]]];

(*The next lime prints the script name.*)
(*Print[$ScriptCommandLine[[1]]];*)

Print[value];

2-я дал привилегию выполнения файла.

sudo chmod +x runMath

3-Перенес файл в путь выполнения

sudo mv runMath /usr/bin/

4-Создан новый скрипт с именем run с содержимым:

#!/usr/bin/python
from subprocess import *
from sys import *

command='/usr/bin/runMath'
parameter=argv[1]

call([command,parameter])

5-перемещено в путь исполнения

sudo mv run /usr/bin

6-Наконец, проверил это:

$run Prime[100]
541

$run 'Sum[2x-1,{x,1,k}]'
k^2

$run Integrate[Log[x],x]
-x + x*Log[x]

$run 'Zeta[2]'
Pi^2/6

Вы можете использовать с или без ', ' нужны для команд с пробелами.

$run 'f[n_] := f[n] = f[n - 1] + f[n - 2]; f[1] = f[2] = 1; Table[f[n],{n,5}]'
{1, 1, 2, 3, 5}

Счастливый!

Вы можете вызвать функцию Mathematica в Python, используя модуль Python MathLink (источник, который вы нашли в.../SystemFiles/Links/Python), хотя вам нужно отредактировать пару установочных файлов, чтобы запустить его (support@) wolfram.com должен быть в состоянии помочь вам там).

Чтобы использовать Prime из Python, вы должны запустить что-то вроде:

kernel.ready ()

0

kernel.putfunction ("Prime", 1)

kernel.putinteger (10)

kernel.flush ()

kernel.ready ()

1

kernel.nextpacket ()

3

packetdescriptiondictionary [3]

'ReturnPacket'

kernel.getinteger ()

29

Другие вопросы по тегам