Ist OCaml für die numerische Analyse geeignet? [geschlossen]

10

Ich verwende derzeit C und FORTRAN, um numerische Differentialgleichungssysteme zu lösen.

Ich habe ein bisschen genug von diesen beiden Sprachen, aber ich brauche einen (ziemlich) effizienten Code ... Ich denke darüber nach, zu OCaml zu wechseln.

Lohnt es sich?

Eelvex
quelle
4
Ich kann SciPy nur empfehlen - es ist kostenlos, sieht aus wie Matlab (ist aber Python) und benötigt nur ein paar Zeilen, um es fertigzustellen! scipy.org/Cookbook/…
Job
1
MATLAB. Die numerische Lösung von Differentialgleichungssystemen ist seit geraumer Zeit ein gelöstes Problem. Wenn es Ihr Ziel ist, Ihre Zahlen zu ermitteln, verwenden Sie dazu die Tools, die in den letzten Jahrzehnten entwickelt wurden. Erfinde das Rad nicht neu, egal wie viel Spaß es machen mag. Sie sparen sich viel Zeit und Ärger.
John R. Strohm

Antworten:

7

Zunächst möchte ich die ungewöhnliche Aussage treffen, dass Hochsprachen für numerische Berechnungen auf lange Sicht viel nützlicher sind als Niedrigsprachen. Lassen Sie mich einen Forscher des Fraunhofer-Instituts zitieren, der an numerischen Simulationen für Wettervorhersagen arbeitet.

In den letzten zehn Jahren wurden CPUs 1000-mal schneller, während Algorithmen 1000 * 1000 schneller wurden. Dies bedeutet, dass die heutigen Algorithmen, die auf den CPUs von gestern ausgeführt werden, die Algorithmen von gestern, die auf den heutigen CPUs ausgeführt werden, um den Faktor 1000 übertreffen.

Natürlich müssen viel mehr Parameter als CPU-Geschwindigkeit und Algorithmen wie Festplatten oder RAM berücksichtigt werden, aber diese Aussage hilft uns zu verstehen, dass Sie sich bei der Auswahl einer Sprache auf niedriger Ebene auf den falschen Faktor konzentrieren (1000 statt 1000 * 1000).

Natürlich kann man bei einem bestimmten numerischen Algorithmus erwarten, dass C oder Fortran OCaml oder Common Lisp um einen (eigentlich nicht diesen) großen Faktor schlagen. Wenn Sie jedoch tatsächlich an numerischen Problemen interessiert sind und bereit sind, Algorithmen zu verbessern, sollten Sie eine Hochsprache auswählen, mit der Sie Ihre Ideen auf hohem Niveau ausdrücken und Algorithmen auf einfache Weise verbessern können.

Wenn Sie in Betracht ziehen, numerischen Code in OCaml zu schreiben, sollten Sie unbedingt wissen, wie OCaml Parameter an Funktionen, Inline-Funktionen und Unbox-Floats übergibt. All dies wird in den Notizen von Xavier Leroy detailliert beschrieben .

user40989
quelle
Danke für die Antwort. Ich habe seitdem auf J zurückgegriffen und es geliebt. OCaml ist eine knappe Sekunde für mich.
Eelvex
6

Dazu to solve numerically systems of differential equationsbenötigen Sie zunächst die richtigen Bibliotheken. Eine obligatorische Überprüfung lautet also: xUnterstützt eine Programmiersprache sie?

Persönlich mag ich schreiben Code höher als Coder Fortran, so habe ich verwendet Matlab, Octave, numpy\scipy.

Essen
quelle
2

Ich mochte OCaml, zumindest bis ich mich mit Multithread-Programmierung befasste.

dan_waterworth
quelle