Как использовать функции 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