Que alternativas modernas existem para as Receitas Numéricas? [fechadas]


21

No passado, o livro de Receitas Numéricas era considerado a referência padrão-ouro para algoritmos numéricos. A edição Fortran mais antiga foi seguida por edições em C e C ++ e outras, trazendo-a mais atualizada. Por meio deles, ele forneceu o código de referência para os algoritmos de ponta do dia.

As edições mais antigas estão disponíveis online gratuitamente hoje em dia.

Infelizmente, acho que agora é mais útil apenas como tomo histórico. As práticas de "engenharia de software" parecem-me desatualizadas, e o conteúdo real não acompanhou a literatura.

Quais referências igualmente abrangentes e acessíveis devem o programador moderno examinar?


7
Os algoritmos em si são muito bons para a solução de problemas de uso geral. São suas implementações que podem deixar algo a desejar. Mas tudo bem, porque o código do livro é simples o suficiente para ser modificado para qualquer que seja o seu gosto. As implementações nos capítulos são bastante "independentes" e livres de lixo. As receitas numéricas ainda são uma boa referência para os momentos em que você precisa implementar algumas coisas numéricas básicas, mas não deseja / precisa de uma biblioteca ou estrutura enorme ou complexa ou cara.
Angelo

3
Tal como está, essa questão pode ser considerada ofensiva, certamente não é muito construtiva. Eu usei as Receitas numéricas ao longo da minha carreira e recomendo para quem precisa de uma referência pronta para algoritmos para resolver problemas complexos. Eu nunca usei o código diretamente, mas sempre implementei os algoritmos em meus próprios idiomas usando minhas próprias interfaces preferidas. Os problemas que você vê são superficiais, e geralmente haverá algoritmos melhores por aí, se você quiser olhar, mas mesmo assim a NR é útil para apontar na direção certa.
Mark Booth

5
Eu tenho que concordar que o código C e C ++ fornecido nos livros prova mais uma vez que um bom programador Fortran pode escrever um bom código Fortran em qualquer idioma. No entanto, esses livros ainda são uma ótima referência. As explicações dos algoritmos são muito claras. O código é utilizável imediatamente e, se realmente ofender sua sensibilidade, você sempre poderá reescrevê-lo. Ainda seria muito mais fácil do que implementá-lo do zero.
Dima

12
Lembre-se de que as restrições de direitos autorais sobre o código na NR são bastante draconianas. Você só pode digitar pessoalmente o código para até dez rotinas e NÃO é permitido distribuir o programa resultante para qualquer outra pessoa ou computador. Em quase qualquer ambiente de trabalho, isso significa que você terá que reimplementar o algoritmo de qualquer maneira; então, qual seria o benefício dos autores que fornecem uma OO sofisticada ou uma implementação funcional? O serviço fornecido pelo livro é uma explicação clara de importantes algoritmos, não o fornecimento de uma forte biblioteca matemática.
Charles E. Grant

3
Quem se importa com a aparência do código? Embrulhe bem e nunca olhe para ele.
David Heffernan

Respostas:


7

Em termos de Receitas Numéricas, precisamos de duas coisas - a compreensão de como os algoritmos se traduzem na implementação da programação e, em segundo lugar, uma implementação de referência que registra as coisas.

Parece haver NO combinação de software LIVRO + Referência. No entanto, existem alguns bons softwares de referência e parte disso fornece referência a documentos com base nesses algoritmos.

Aqui está uma lista de algumas bibliotecas de referência (principalmente de código aberto) que podem ajudar:

  1. Biblioteca Científica GNU
  2. LAPACK, ele tem um bom livro como manual do usuário. Também há LAPACK ++ e outros pacotes derivados / relacionados (TNT) . Veja isso para mais informações.
  3. Álgebra Linear de Impulso
  4. Tatu
  5. BLAS

Outras coisas específicas são

  1. Apophenia para modelos estatísticos
  2. Potro
  3. FFTW
  4. O pacote R - e um livro
  5. OpenCV
  6. Biblioteca do kernel Intel Math
  7. Para reconhecimento de padrões

Você também pode conferir " Análise de dados com ferramentas de código aberto ".

Aqui está uma lista enorme de comparação, embora eu não tenha verificado tudo.
http://www.netlib.org/utk/people/JackDongarra/la-sw.html


4

Receitas numéricas ainda é, na IMO, um livro útil. Ele descreve os algoritmos muito bem, incluindo sua derivação, as situações em que são úteis e alternativas a serem consideradas quando não são. Eu uso o livro há anos.

Uma coisa que eu nunca usei é o código deles. Eu sempre escrevo minha própria implementação com base nos algoritmos que eles descrevem. Nesse aspecto, a qualidade do código não importa (e é de fato questionável: no livro C da 2ª edição, eles definem uma coleção de funções e macros para tornar as matrizes indexadas por unidade, porque os autores são originários de um histórico do Fortran). Como exemplo: uma vez eu tive que implementar a FFT no Objective-C, então usei a NR no Fortran para entender o que a FFT fez e como o código deveria parecer.

Pense em NR da mesma maneira que pensa em Knuth: você nunca colaria código desse livro em seu projeto.


3

Pessoalmente, eu gosto, é sobre o nível que eu consigo entender

O código é Fortran traduzido para 'C', mas tudo bem, você pode traduzi-lo novamente para Fortran e depois para C ++! Existem vantagens nas versões Fortran ou C, pois o código é praticamente autônomo; você não precisa arrastar um monte de classes C ++ para criar matrizes, complexos etc. - especialmente devido à qualidade de sua codificação!

Há uma objeção justificável às reivindicações ridículas de direitos autorais dos autores e conheço vários professores que proíbem a NR em suas aulas. Entre os especialistas numéricos, os livros também têm a reputação de "informações suficientes para causar problemas". Mas sua única sugestão é geralmente usar seu código pessoal ou comprar NAG.

Uma coleção sugerida de bibliotecas numéricas alternativas de alta qualidade está em http://www.netlib.org/

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.