OCaml对数值分析有好处吗?[关闭]


10

我目前正在使用C和一些FORTRAN来求解微分方程的数值系统。

我对这两种语言都有点受够了,但是我需要一些(相当)高效的代码...我正在考虑切换到OCaml。

这值得么?


4
我强烈推荐SciPy-它是免费的,看起来像Matlab(但是Python),并且只需几行就可以完成!scipy.org/Cookbook/…–
Job

1
MATLAB。微分方程组的数值解是一个已解决的问题,并且已经存在了相当长的时间。如果您的目标是减少数字,请使用过去几十年来开发的工具来做到这一点。不要重新发明轮子,无论它有多有趣。您将节省很多时间和麻烦。
John R. Strohm 2014年

Answers:



7

首先,我想提出一个与众不同的说法,即对于数值计算,从长远来看,高级语言比低级语言有用得多。让我宽松地引用弗劳恩霍夫研究所的一位研究人员从事天气预报中的数值模拟工作。

在过去的十年中,CPU的速度提高了1000倍,而算法的速度提高了1000 * 1000。这意味着,今天在CPU上运行的算法将比今天在CPU上运行的算法高1000倍。

显然,在CPU速度和算法(例如磁盘或RAM)中要考虑更多的参数,但是该语句使我们无法理解,如果您选择低级语言,则会关注错误的因素(而不是1000) 1000 * 1000)。

当然,给定任何特定的数值算法,人们都可以期望C或Fortran击败OCaml或Common Lisp(实际上不是那么大)。但是,如果您实际上对数值问题感兴趣并且愿意改进算法,则应该选择一种高级语言,该语言可以使您在高层次上表达自己的想法并轻松地改进算法。

附带说明一下,如果您考虑在OCaml中编写数字代码,那么您肯定应该知道OCaml如何将参数传递给函数,内联函数和unbox float。所有这些都在Xavier Leroy的笔记中进行了详细介绍。


感谢您的回答。从那以后,我求助于J并喜欢它。OCaml对我而言紧随其后。
Eelvex 2014年

6

首先,to solve numerically systems of differential equations您需要适当的库。因此,强制检查是:编程语言是否x支持它们。

我个人喜欢写代码高于水平CFortran,因此,我已经使用MatlabOctavenumpy\scipy


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.