10个编写快速运行的Mathematica代码的小诀窍

本文分享了提高Mathematica代码运行速度的10个诀窍,包括尽早使用浮点数、学会Compile、使用内置函数、利用Wolfram Workbench进行分析、并行计算和使用Sow与Reap累积数据等。通过这些方法,可以显著优化Mathematica代码的性能。
摘要由CSDN通过智能技术生成

当我听到人们说Mathematica不够快的时候,我通常会提出想要看一下这段令他们烦恼的代码,然后会发现,其实并不是Mathematica本身的表现不够好,而是Mathematica没有被最优使用。我觉得我应该和大家分享一下我在优化Mathematica代码时首先会看的一些内容。

01 如果可以的话尽量尽早使用浮点数

我最常看到的导致代码变慢的问题是,程序员会不经意地让Mathematica做超出需要的细致的事情。没必要的代数精确是其中最常见的问题。

在多数与数字相关的软件中,是不需要这么精确的代数的。1/3和0.33333333333333是一样的。当你碰到特别严重的在数字上不稳定的问题时这个差异可能会被放大的特别明显,但是,在大多数情况中,浮点数已经足够使用了,而且最重要的是,浮点数运算更快。Mathematica中,任何小于16位的小数都被看作是机器浮点数,所以如果更想要速度而可以舍弃一些精确性的时候,记得用小数(比如,三分之一输入为1./3.)。以下是一个例子,可以看到使用浮点数是精确数运行速度的50.6倍。在这个例子中,两个数字的使用得到的是同一个结果。

在符号运算中也是这样。如果你不是很在意符号式的结果,并且计算的稳定性也不是问题的话,那么尽快使用数值作为替代。比如,求解下面的二项式符号计算时,在使用数值作为替代之前,这个代码可能会让Mathematica生成长达五页的中间符号表达式。

但是如果先用数值替代,那么Solve会使用更快的数值方法。

当用数据列表工作时,使用实数的方法必须保持一致。只要一个精确的数值就可以让整个数据组处于一个更灵活但是缺乏效率的形式中。

02 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值