OCamlは数値解析に適していますか?[閉まっている]


10

現在、微分方程式の数値システムを解くためにCと一部のFORTRANを使用しています。

私はこれらの両方の言語に少しうんざりしていますが、(かなり)効率的なコードが必要です... OCamlに切り替えることを考えています。

その価値はありますか?


4
私はSciPyを強くお勧めします-それは無料で、Matlabのように見えます(ただしPythonです)、それを完了するために数行しかかかりません!scipy.org/Cookbook/...
ジョブ

1
MATLAB。微分方程式のシステムの数値解法は解決された問題であり、かなり長い間使用されてきました。あなたの目的があなたの数をクランチすることであるならば、まさにそれをするために過去数十年にわたって開発されてきたツールを使ってください。どんなに楽しいものであっても、ホイールを再発明しないでください。あなたはあなた自身に多くの時間と悪化を節約します。
John R. Strohm、2014年

回答:



7

まず第一に、数値計算では、高水準言語は低水準言語よりも長期的にははるかに有用であるという珍しい発言をしたいと思います。天気予報で使用される数値シミュレーションで働いているフラウンホーファー研究所の研究者を大まかに引用させてください。

過去10年間で、CPUは1000倍速くなり、アルゴリズムは1000 * 1000速くなりました。これは、昨日のCPUで実行されている今日のアルゴリズムが、今日のCPUで実行されている昨日のアルゴリズムを1000倍上回ることを意味します。

明らかに、ディスクやRAMなどのCPU速度やアルゴリズムとして考慮すべきパラメーターは他にもたくさんありますが、このステートメントは、低レベルの言語を選択した場合、間違った要因(1000ではなく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それらをサポートするかどうかです。

個人Iより書込みコードより高いレベルのようなC、またはFortran、このように私が使用していますMatlabOctavenumpy\scipy


2

少なくともマルチスレッドプログラミングを見るまでは、OCamlが好きでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.