windows下python3如何调用mathematica进行高级计算

#-*- coding: utf-8 -*-
import os,sys
import winpexpect
#由于直接用wolframscript -code无法保存输出图像,所以采用winpexpect来进行交互式操作,相当于执行了exe文件,在其命令行操作
#这样才能正确保存图像,并且在命令行环境中更易于编辑mma代码。

if __name__ == '__main__':
    os.chdir(r"D:\Wolfram Research\Mathematica\11.3")
    #命令行操作脚本wolframscript.exe,从mma 11.0之后便存在,位置如上
    child = winpexpect.winspawn('wolframscript.exe')
    # child.logfile = sys.stdout #控制台输出全过程
    # python代码中变量与mma执行结果的交互
    arg = 7

    child.expect (':=') #mma所有输入都是In[数字]:=,所以匹配:=即可用sendline(带换行符)进行输入
    #这里提交你的mma代码即可
    child.sendline('Prime['+str(arg)+']')

    child.expect(']= ')  #mma所有输出都是Out[数字]=,所以匹配"]= "即可用child.buffer获取输出结果,mma输出自带一个空格,
                         #所以这里把空格跟上,避免后续处理空格问题

    # expect后得到的expect.buffer就是命令和执行结果
    print("Prime["+str(arg)+"]=",child.buffer)
    print("c"+child.buffer)

    child.expect (':=')
    child.sendline('Prime['+str(arg*2)+']')

    child.expect(']= ')
    print("Prime["+str(arg*2)+"]=",child.buffer)

    #退出wolframscript
    child.expect(':=')
    child.sendline('Quit')

    child.expect(winpexpect.EOF)

首先你得安装mma并且熟悉mma的语法,使用mma可以方便超复杂的计算。例如求公共最长子序列,python可能需要至少十几行代码,mma直接使用某个成熟函数即可得出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值