O OCaml é bom para análise numérica? [fechadas]

10

Atualmente, estou usando C e alguns FORTRAN para resolver numericamente sistemas de equações diferenciais.

Estou um pouco cansado das duas linguagens, mas preciso ter um código (bastante) eficiente ... Estou pensando em mudar para o OCaml.

Vale a pena?

Eelvex
fonte
4
Eu recomendo o SciPy - é gratuito, parece com o Matlab (mas é Python) e leva apenas algumas linhas para fazê-lo! scipy.org/Cookbook/…
Job
11
MATLAB. A solução numérica de sistemas de equações diferenciais é um problema resolvido e já existe há algum tempo. Se seu objetivo é reduzir seus números, use as ferramentas que foram desenvolvidas nas últimas décadas para fazer exatamente isso. Não reinvente a roda, por mais divertida que seja. Você economizará muito tempo e agravamento.
John R. Strohm

Respostas:

7

Antes de tudo, quero afirmar que, para cálculos numéricos, as linguagens de alto nível são muito mais úteis a longo prazo do que as linguagens de baixo nível. Permitam-me citar um pesquisador do Fraunhofer Institut que trabalha em simulações numéricas usadas em previsões meteorológicas.

Na última década, as CPUs se tornaram 1000 vezes mais rápidas, enquanto os algoritmos se tornaram 1000 * 1000 mais rápidos. Isso significa que os algoritmos de hoje em execução nas CPUs de ontem vencerão os algoritmos de ontem em execução nas CPUs de hoje por um fator de 1000.

Obviamente, há muito mais parâmetros a serem considerados como velocidade da CPU e algoritmos, como discos ou RAM, mas essa declaração nos ajuda a entender que, se você escolher um idioma de baixo nível, se concentrar no fator errado (1000 em vez de 1000 * 1000).

Obviamente, dado qualquer algoritmo numérico específico, pode-se esperar que C ou Fortran superem OCaml ou Common Lisp por um fator grande (na verdade não é esse). Mas se você está realmente interessado em problemas numéricos e deseja melhorar os algoritmos, escolha uma linguagem de alto nível que permita expressar suas idéias em um nível alto e melhorar facilmente os algoritmos.

Como observação lateral, se você pensa em escrever código numérico no OCaml, você definitivamente deve saber como o OCaml passa parâmetros para funções, funções embutidas e flutuações de unbox. Tudo isso está detalhado nas anotações de Xavier Leroy .

user40989
fonte
Obrigado pela resposta. Desde então, recorri a J e a amei. OCaml é um segundo próximo para mim.
Eelvex
6

Para isso, to solve numerically systems of differential equationsvocê precisará primeiro de todas as bibliotecas apropriadas. Portanto, uma verificação obrigatória é: uma linguagem de programação os xsuporta.

Pessoalmente eu gosto de escrever código nível superior Cou Fortran, assim eu usei Matlab, Octave, numpy\scipy.

comer
fonte
2

Gostei do OCaml, pelo menos até analisar a programação multithread.

dan_waterworth
fonte