Quali alternative moderne alle ricette numeriche esistono? [chiuso]


21

In passato, il libro Ricette numeriche era considerato il riferimento standard per gli algoritmi numerici. La prima edizione di Fortran è stata seguita da edizioni in C e C ++ e altre, che le hanno poi rese più aggiornate. Attraverso questi, ha fornito il codice di riferimento per gli algoritmi all'avanguardia del giorno.

Le edizioni precedenti sono disponibili online gratuitamente al giorno d'oggi.

Sfortunatamente, penso che ora sia principalmente utile solo come tomo storico. Le pratiche di "ingegneria del software" mi sembrano obsolete e il contenuto reale non ha tenuto il passo con la letteratura.

Quali riferimenti allo stesso modo comprensibili ma accessibili dovrebbero invece guardare al programmatore moderno?


7
Gli stessi algoritmi sono ottimi per la risoluzione di problemi generici. Sono le loro implementazioni che potrebbero lasciare qualcosa a desiderare. Ma questo è OK perché il codice nel libro è abbastanza semplice da modificare in base ai tuoi gusti. Le implementazioni nei capitoli sono abbastanza "autonome" e prive di cruft. Le ricette numeriche sono ancora un buon riferimento per i momenti in cui è necessario implementare alcune cose numeriche di base ma non si desidera / è necessaria una libreria o un framework enorme o complesso.
Angelo,

3
Allo stato attuale, questa domanda potrebbe essere considerata offensiva, non è certamente molto costruttiva. Ho fatto uso delle ricette numeriche durante la mia carriera e lo consiglio vivamente a chiunque necessiti di un riferimento pronto per gli algoritmi per risolvere problemi complessi. Non ho mai usato il codice direttamente, ma ho sempre implementato gli algoritmi nelle mie lingue usando le mie interfacce preferite. I problemi che sembri vedere sono superficiali, e di solito ci saranno algoritmi migliori là fuori se ti interessa guardare, ma anche allora NR è utile per indicarti la giusta direzione.
Mark Booth,

5
Devo concordare che il codice C e C ++ fornito nei libri dimostra ancora una volta che un buon programmatore Fortran può scrivere un buon codice Fortran in qualsiasi lingua. Tuttavia, questi libri sono ancora un ottimo riferimento. Le spiegazioni degli algoritmi sono molto chiare. Il codice è utilizzabile immediatamente e se offende davvero la tua sensibilità puoi sempre riscriverlo da solo. Sarebbe comunque molto più semplice che implementarlo da zero.
Dima,

12
Ricorda che le restrizioni di copyright sul codice in NR sono piuttosto draconiane. È consentito digitare personalmente il codice per un massimo di dieci routine e NON è consentito distribuire il programma risultante a qualsiasi altra persona o computer. In quasi tutti gli ambienti di lavoro, ciò significa che dovrai comunque implementare nuovamente l'algoritmo, quindi quale sarebbe il vantaggio per gli autori di fornire un OO sofisticato o un'implementazione funzionale? Il servizio fornito dal libro è una chiara spiegazione di importanti algoritmi, non la fornitura di una forte libreria matematica.
Charles E. Grant,

3
A chi importa com'è il codice? Avvolgilo bene e non guardarlo mai.
David Heffernan,

Risposte:


7

In termini di Ricette Numeriche, abbiamo bisogno di due cose: la comprensione di come gli algoritmi si traducono in implementazione della programmazione e, in secondo luogo, un'implementazione di riferimento che registra le cose.

Sembra che NON ci sia alcuna combinazione di BOOK + software di riferimento. Tuttavia, ci sono alcuni buoni software di riferimento e alcuni di questi forniscono riferimenti a documenti sulla base di tali algoritmi.

Ecco un elenco di alcune librerie di riferimento (principalmente open source) che potrebbero aiutare:

  1. GNU Scientific Library
  2. LAPACK ha un buon libro come manuale utente Esistono anche LAPACK ++ e altri pacchetti derivati ​​/ correlati (TNT) . Vedi questo per maggiori informazioni.
  3. Potenzia l'algebra lineare
  4. Armadillo
  5. BLAS

Altre cose specifiche sono

  1. Apofenia per modelli statistici
  2. Puledro
  3. FFTW
  4. Il pacchetto R - e un libro
  5. OpenCV
  6. Libreria del kernel Intel Math
  7. Per il riconoscimento di schemi

Puoi anche dare un'occhiata a " Analisi dei dati con strumenti Open Source ".

Ecco un enorme elenco di confronto anche se non ho verificato tutto.
http://www.netlib.org/utk/people/JackDongarra/la-sw.html


4

Ricette numeriche è ancora, IMO, un libro utile. Descrive molto bene gli algoritmi, inclusa la loro derivazione, le situazioni in cui sono utili e le alternative da considerare quando non lo sono. Uso il libro da anni.

Una cosa che non ho mai usato è il loro codice. Scrivo sempre la mia implementazione in base agli algoritmi che descrivono. Sotto questo aspetto la qualità del loro codice non ha importanza (ed è davvero discutibile: nel libro C della 2a edizione, definiscono una raccolta di funzioni e macro per rendere le matrici indicizzate in unità perché gli autori provengono da un background Fortran). Ad esempio: una volta ho dovuto implementare FFT in Objective-C, quindi ho usato NR in Fortran per capire cosa faceva FFT e come doveva apparire il codice.

Pensa a NR nello stesso modo in cui pensi a Knuth: non incolleresti mai il codice di quel libro nel tuo progetto.


3

Personalmente mi piace, riguarda il livello che posso capire

Il codice è tradotto in Fortran in 'C' ma va bene lo puoi semplicemente tradurre in Fortran e poi in C ++ tu stesso! Ci sono vantaggi per le versioni Fortran o C in quanto il codice è praticamente autonomo, non è necessario trascinare un gruppo di classi C ++ per fare matrici, complesse, ecc., Soprattutto data la qualità della loro codifica!

Vi è un'obiezione giustificabile alle ridicole affermazioni sul copyright degli autori e conosco un numero di docenti che vietano la NR nelle loro classi. Tra gli esperti numerici i libri hanno anche la reputazione di "informazioni sufficienti per metterti nei guai". Ma il loro unico suggerimento è generalmente quello di utilizzare il loro codice personale o acquistare NAG.

Una raccolta suggerita di librerie numeriche alternative di alta qualità è disponibile all'indirizzo http://www.netlib.org/

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.