15 Anni di programmazione

Aneddoti e Codici di un inguaribile ottimista

Librerie di Calcolo Numerico sotto .NET

Il Progetto Colt mette a disposizione dei suoi utenti un insieme di Librerie Open Source per il calcolo numerico. Il codice è scritto in Java e l’ultima release risale ad Agosto 2010. I campi di interesse sono i seguenti:

· Templated Lists and Maps

· Templated Multi-dimensional matrices

· Linear Algebra

· Histogramming

· Mathematics

· Statistics

· Random Numbers and Random Sampling

· Parallel & Concurrent programming

Navigando su Internet, ho scoperto che gran parte del codice sorgente Java è stato tradotto in C# sotto il framework .NET.

Purtroppo non esiste un sito web di riferimento e tutto questo codice è inserito in package più “generale” che ho scaricato al seguente indirizzo . Spero di non aver commesso alcun crimine per aver raccolto tutta la sezione scientifica in un unico progetto .NET che ho allegato all’articolo.

Vediamo un semplice utilizzo di questa libreria.

In teoria della probabilità la distribuzione di Poisson (o Poissoniana) è una distribuzione di probabilità discreta che esprime le probabilità per il numero di eventi che si verificano successivamente ed indipendentemente in un dato intervallo di tempo, sapendo che mediamente se ne verifica un numero Lambda.

La distribuzione di Poisson trova applicazione nello studio dei cosiddetti processi di Poisson, rappresentabili come eventi casuali, indipendenti tra loro e distribuiti uniformemente nel tempo.

Un'applicazione pratica famosa nella storia è quella connessa agli studi del dott. von Bortkewitsch sulle morti per calci di cavalli nell'esercito prussiano alla fine del XIX secolo! Esempi più concreti possono essere il numero di telefonate in arrivo ad un centralino, i guasti che si verificano in un apparato complesso formato da molti componenti indipendenti, i difetti in una striscia di materiale, etc.

Per definizione,

Dove Lambda è il numero medio di eventi per intervallo di tempo. Tornando ai nostri esempi, se in un’ora il centralino riceve in media 8 telefonate, la probabilità di riceverne 4 nello stesso intervallo di tempo è data dal valore P(4), dove Lambda = 8.

 

Supponiamo di aver importato la libreria in un nostro progetto. Il codice mostrato in figura mostra come calcolare la probabilità richiesta. L’istanza dell’oggetto Poisson viene inizializzata col valore medio noto, dopodiché il metodo pdf restituisce per un argomento x il valore della distribuzione di probabilità associata. Qualora siate interessati alla funzione cumulativa, basta invece utilizzare il metodo cdf.

La libreria contiene anche distribuzioni molto complesse come la temibile funzione Zeta, la Breit Wigner, la funzione Gamma e molte altre. Per gli appassionati della generazione di numeri random (ricordiamo la spinosa questione dell’assegnazione del premio agli incontri del gruppo DOTNETCAMPANIA!), la libreria offre generatori molto sofisticati quali DRAND e MersenneTwister. Leggete però attentamente la documentazione per essere sicuri di utlizzarli correttamente.

A tutti coloro che invece sono solo interessati al linguaggio C#, segnalo tutto il codice accessorio utilizzato nella libreria, ad esempio la costruzione dei Comparatori specializzati per i diversi tipi.

Concludo riportando le condizioni di utilizzo del codice contenuto nella libreria.

Ecco il rar della soluzione:

Published 8 nov 2010 15:44 da Salvatore Sorrentino