2013-04-27 12 views
14

Sto cercando una libreria Java per calcolare le funzioni speciali gamma, beta, erf, bessel (e alcune relative) da includere nel nostro parser di formule. L'accuratezza numerica è la priorità principale: è un programma scientifico. E deve essere open source e gratuito per uso commerciale (come le licenze Apache e BSD).Libreria di funzioni matematiche speciali Java

Supponevo che avrei trovato rapidamente l'implementazione 'classica', 'di riferimento' come la libreria JAMA è per le operazioni con matrici ma non riesco a trovarlo fino ad ora. Abbiamo solo bisogno di una valutazione delle funzioni speciali e non abbiamo bisogno di funzionalità aggiuntive della libreria.

Il primo che ho trovato è Apache comune Math ma vedo una terribile precisione per la funzione beta: http://commons.apache.org/proper/commons-math/userguide/special.html.

Quindi ho trovato Colt. Sembra essere buono ma non sono sicuro che sia stato testato correttamente da sviluppatori e utenti (alcuni codici usati raramente possono essere copiati da qualche parte con errori, ecc.)

Qualsiasi suggerimento sarà apprezzato.

risposta

3

Prima di tutto: non lasciarti ingannare dall'aspetto casalingo della pagina Web e dalla vecchia data di rilascio della libreria Colt (così come dalle librerie JET e JAS che si basano su di essa). È stato utilizzato in infiniti progetti di ricerca e il codice è stato verificato da centinaia di persone di grande talento.

Naturalmente, se è in gioco la credibilità del proprio prodotto, non si dovrebbe limitarsi a credermi sulla parola. Ecco due idee su come ottenere un giudizio sulla correttezza:

  • Leggere il codice sorgente. JavaDoc di Colt contiene riferimenti ai documenti in cui sono stati pubblicati i metodi numerici. Cerca altri lavori che fanno riferimento a questi documenti e vedi se i problemi con il metodo usato sono stati scoperti in seguito.
  • Utilizzare un software numerico commerciale di cui ci si fida (ad esempio Mathematica), generare valori per le funzioni a cui si è interessati in modo sistematico o casuale e confrontarli con i valori generati da Colt. Se permetti a questo test di funzionare abbastanza a lungo, otterrai una buona comprensione della qualità dei numeri.

Se davvero non si vuole utilizzare Colt (che immagino fosse la tua domanda), suggerisco di porting del codice C/C++ dal libro ricette numerica (http://www.nrbook.com) da soli. Di solito non è necessaria troppa adozione, ma è comunque necessario pensare a come si desidera testarlo.

+0

Grazie per questo commento. In effetti sono quasi pronto per usare la libreria Colt e ho bisogno di qualche raccomandazione reale per questo. Post scriptum NRBook è un ottimo lavoro! – Alexander

Problemi correlati