OCaml è utile per l'analisi numerica? [chiuso]


10

Attualmente sto usando C e alcuni FORTRAN per risolvere numericamente sistemi di equazioni differenziali.

Sono un po 'stufo di entrambe queste lingue ma ho bisogno di un codice (piuttosto) efficiente ... Sto pensando di passare a OCaml.

Ne vale la pena?


4
Consiglio vivamente SciPy: è gratuito, sembra Matlab (ma è Python) e richiede solo poche righe per farlo! scipy.org/Cookbook/…
Lavoro

1
MATLAB. La soluzione numerica di sistemi di equazioni differenziali è un problema risolto, ed è stato per un po 'di tempo. Se il tuo obiettivo è quello di sgretolare i tuoi numeri, usa gli strumenti che sono stati sviluppati negli ultimi decenni per fare proprio questo. Non reinventare la ruota, non importa quanto divertente possa essere. Ti risparmierai molto tempo e aggravamento.
John R. Strohm,

Risposte:



7

Prima di tutto, voglio fare l'insolita affermazione che per i calcoli numerici, le lingue di alto livello sono molto più utili a lungo termine rispetto alle lingue di basso livello. Vorrei citare vagamente un ricercatore del Fraunhofer Institut che lavora su simulazioni numeriche utilizzate nelle previsioni meteorologiche.

Nell'ultimo decennio, le CPU sono diventate 1000 volte più veloci mentre gli algoritmi sono diventati 1000 * 1000 più veloci. Ciò significa che gli algoritmi di oggi in esecuzione sulle CPU di ieri batteranno gli algoritmi di ieri in esecuzione sulle CPU di oggi di un fattore 1000.

Ovviamente, ci sono molti più parametri da prendere in considerazione come velocità della CPU e algoritmi, come dischi o RAM, ma questa affermazione ci aiuta a capire che, se scegli un linguaggio di basso livello, ti concentri sul fattore sbagliato (1000 anziché 1000 * 1000).

Naturalmente, dato qualsiasi algoritmo numerico specifico , ci si può aspettare che C o Fortran battano OCaml o Common Lisp per un fattore (in realtà non quello) di grandi dimensioni. Ma se sei effettivamente interessato a problemi numerici e sei disposto a migliorare gli algoritmi, dovresti scegliere un linguaggio di alto livello che ti permetta di esprimere le tue idee ad alto livello e migliorare facilmente gli algoritmi.

Come nota a margine, se si considera la possibilità di scrivere codice numerico in OCaml, è necessario sapere come OCaml passa i parametri a funzioni, funzioni incorporate e float di unbox. Tutto questo è dettagliato nelle note di Xavier Leroy .


Grazie per la risposta. Da allora ho fatto ricorso a J e lo adoro. OCaml è un secondo vicino per me.
Eelvex,

6

Per prima to solve numerically systems of differential equationscosa avrai bisogno delle librerie appropriate. Quindi un controllo obbligatorio è: un linguaggio di programmazione xli supporta.

Personalmente mi piace scrivere il codice di livello superiore Co Fortran, quindi ho usato Matlab, Octave, numpy\scipy.


2

Mi piaceva OCaml, almeno fino a quando non ho guardato alla programmazione multi-thread.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.