OCaml est-il bon pour l'analyse numérique? [fermé]

10

J'utilise actuellement C et du FORTRAN pour résoudre numériquement des systèmes d'équations différentielles.

Je suis un peu fatigué de ces deux langages mais j'ai besoin d'avoir du code (plutôt) efficace ... Je pense à passer à OCaml.

Est-ce que ça vaut le coup?

Eelvex
la source
4
Je recommande fortement SciPy - il est gratuit, ressemble à Matlab (mais est en Python) et ne prend que quelques lignes pour le faire! scipy.org/Cookbook/…
Job
1
MATLAB. La solution numérique des systèmes d'équations différentielles est un problème résolu, et ce depuis un certain temps. Si votre objectif est de croquer vos chiffres, utilisez les outils qui ont été développés au cours des dernières décennies pour y parvenir. Ne réinventez pas la roue, peu importe à quel point elle peut être amusante. Vous vous épargnerez beaucoup de temps et d'aggravation.
John R. Strohm

Réponses:

7

Tout d'abord, je veux faire la déclaration inhabituelle que pour les calculs numériques, les langages de haut niveau sont beaucoup plus utiles à long terme que les langages de bas niveau. Permettez-moi de citer vaguement un chercheur du Fraunhofer Institut travaillant sur les simulations numériques utilisées dans les prévisions météorologiques.

Au cours de la dernière décennie, les processeurs sont devenus 1000 fois plus rapides tandis que les algorithmes sont devenus 1000 * 1000 plus rapides. Cela signifie que les algorithmes d'aujourd'hui exécutés sur les processeurs d'hier battront les algorithmes d'hier exécutés sur les processeurs d'aujourd'hui d'un facteur 1000.

Évidemment, il y a beaucoup plus de paramètres à prendre en compte comme la vitesse du processeur et les algorithmes, comme les disques ou la RAM, mais cette déclaration nous aide à comprendre que, si vous choisissez un langage de bas niveau, vous vous concentrez sur le mauvais facteur (1000 au lieu de 1000 * 1000).

Bien sûr, étant donné n'importe quel algorithme numérique spécifique , on peut s'attendre à ce que C ou Fortran bat OCaml ou Common Lisp par un facteur (en fait pas que) grand. Mais si vous êtes réellement intéressé par les problèmes numériques et que vous souhaitez améliorer les algorithmes, vous devez alors choisir un langage de haut niveau qui vous permettra d'exprimer vos idées à un niveau élevé et d'améliorer facilement les algorithmes.

En guise de remarque, si vous envisagez d'écrire du code numérique dans OCaml, vous devez absolument savoir comment OCaml transmet les paramètres aux fonctions, aux fonctions en ligne et aux flottants de déballage. Tout cela est détaillé dans les notes de Xavier Leroy .

user40989
la source
Merci d'avoir répondu. J'ai depuis recouru à J et je l'aime. OCaml est une seconde proche pour moi.
Eelvex
6

Pour to solve numerically systems of differential equationsvous aurez besoin en premier lieu de bibliothèques appropriées. Une vérification obligatoire est donc la suivante: un langage de programmation les prend-il en xcharge?

Personnellement , j'aime écrire du code niveau supérieur Cou Fortran, donc je l' ai utilisé Matlab, Octave, numpy\scipy.

manger
la source
2

J'ai aimé OCaml, au moins jusqu'à ce que je regarde la programmation multi-thread.

dan_waterworth
la source