Как использовать функции Mathematica в программах Python? [закрытый]
Я хотел бы знать, как я могу вызвать функции Mathematica из Python.
Я ценю пример, например, использование функции Mathematica премьер -.
у меня был поиск о MathLink но как использовать его в Python немного неясно для меня.
Я попытался использовать библиотеку Mathematica-Python под названием pyml но у меня не было успеха, может быть, потому, что этот lib выглядит очень старым (в учебник говорит Mathematica 2 или 3).
попытался скомпилировать источник в Wolfram/Mathematica/8.0/SystemFiles/Links/Python
но закончилось несколькими ошибками при использовании python 2.6 (документация говорит, что должна работать только с python 2.3).
Pythonika интересно, но, похоже, это просто использовать в ноутбуках Mathematica, и я хотел бы написать .py
файлы, вызывающие функции Mathematica.
Итак, кто-то знает хороший способ писать программы python, которые используют функции Mathematica и могут дать мне пример?
2 ответов
вы можете вызвать функцию Mathematica в Python, используя модуль Python MathLink (источник, который вы нашли .../ SystemFiles / Links / Python), хотя вам нужно будет отредактировать несколько файлов установки, чтобы запустить его (support@wolfram.com должен быть в состоянии помочь вам там).
чтобы использовать Prime из Python, вы должны запустить что-то вроде:
ядра.ready ()
0
ядра.putfunction ("Prime", 1)
ядра.putinteger(10)
ядра.flush ()
ядра.ready ()
1
ядра.nextpacket ()
3
packetdescriptiondictionary[3]
'ReturnPacket'
ядра.getinteger()
29
Я нашел решение.
действия:
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-создан новый скрипт под названием выполнить содержание:
#!/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
вы можете использовать С или без '
. The '
необходимы для команд с пробелами.
$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}
счастливая!