Как использовать функции 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.
Итак, кто-то знает хороший способ писать программы на питоне, которые используют функции Mathematica и может дать мне пример?
Ответы
Ответ 1
Я нашел решение.
Шаги:
1. Создайте script с именем 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 - Создал новый script, называемый 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}
С
Ответ 2
Вы можете вызвать функцию Mathematica в Python, используя модуль Python MathLink (источник, который вы нашли в... /SystemFiles/Links/Python ), хотя вам нужно будет отредактировать пару установочных файлов, чтобы их запустить и запустить ([email protected] должен быть в состоянии помочь вам там).
Чтобы использовать 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