10

我想知道如何从 Python 调用 Mathematica 函数。

我很欣赏一个例子,例如,使用 Mathematica 函数Prime

我搜索过MathLink,但如何在 Python 中使用它对我来说有点晦涩难懂。

我尝试使用一个名为pyml的 Mathematica-Python 库,但我没有成功,可能是因为这个库看起来很旧(在教程中说 Mathematica 2 或 3)。

尝试编译源代码,Wolfram/Mathematica/8.0/SystemFiles/Links/Python但在使用 python 2.6 时出现了几个错误(文档说应该只适用于 python 2.3)。

Pythonika 很有趣,但是,看起来只是在 Mathematica 笔记本中使用,我想编写.py调用 Mathematica 函数的文件。

那么,有人知道编写使用 Mathematica 函数的 python 程序的好方法,可以给我一个例子吗?

4

2 回答 2

3

您可以使用 Python MathLink 模块(您在 .../SystemFiles/Links/Python 中找到的源代码)在 Python 中调用 Mathematica 函数,但您需要编辑几个设置文件才能启动并运行它(support@ wolfram.com 应该能够为您提供帮助)。

要在 Python 中使用 Prime,您将运行以下命令:

kernel.ready()

0

kernel.putfunction("Prime",1)

kernel.putinteger(10)

kernel.flush()

kernel.ready()

1

kernel.nextpacket()

3

数据包描述字典[3]

'返回包'

kernel.getinteger()

29

于 2012-04-23T15:38:40.270 回答
3

我找到了解决办法

脚步:

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}

快乐的!

于 2012-04-23T19:53:45.573 回答