2010-02-25 15 views
61

Ho bisogno di una libreria C# per gestire le matrici. Dovrebbe implementare la decomposizione del valore singolare, l'inversione della matrice, ecc.Raccomandazione per C# Matrix Library

Ho già utilizzato CSML, ma questo non implementa alcune delle funzionalità di cui ho bisogno.

Alcune delle caratteristiche sono:
valore singolare di decomposizione
inversione di matrice
Trace
Determinanti

Biblioteche suggerite (da risposte)

(la maggior parte di loro implementano le caratteristiche di cui sopra)

+4

Potrebbe essere utile menzionare le funzionalità di cui CSML non dispone. – Nick

+2

http://accord-framework.net/ Implementa le operazioni della matrice come metodi di estensione del tipo 'double [,]'. –

risposta

27

Math.NET Numerics è molto bello, se supporta le operazioni desiderate. Il vecchio Mathidia Iridium supporta ancora più opzioni. Inoltre, dnAnalytics è abbastanza bello, ma non è più in fase di sviluppo. (Sia, come Iridium, sono stati uniti in Math.NET Numerics.)

Sul lato commerciale, ci sono alcune opzioni molto buone e robuste. Il Extreme Optimization Numerical Libraries funziona molto bene. La libreria Visual Numerics funziona anche molto bene (anche se con una distribuzione basata sulle royalty ...).

+0

Iridium farà il trucco. Non potrei usare la classe matrix da Math.NET poiché è astratta, quindi avevo bisogno di derivarla. destra ? – jose

+1

Forniscono implementazioni concrete, ma poiché i numeri Math.NET non sono completi, alcune delle implementazioni non sono ancora state completate. –

+0

Esistono due classi concrete: Matrix m = new DenseMatrix (...) o new SparseMatrix (...) in base alle proprie esigenze. –

6

Credo che lo Math.NET abbia la maggior parte delle funzioni menzionate. Yu potrebbe voler guardarlo e vedere se soddisfa le tue esigenze.

È possibile dare un'occhiata allo Iridium samples per visualizzare la sintassi e il codice di esempio.

2

In aggiunta alle librerie menzionate in altri post, posso dire qualche parola calda sulla libreria FinMath. È una biblioteca piuttosto nuova, ma secondo la mia esperienza ha diversi vantaggi. È molto facile usare questa libreria. Innanzitutto, ha un solo file eseguibile (* .dll) per entrambi i sistemi operativi a 32 e 64 bit. In secondo luogo, si basa sulla ben nota Intel Math Kernel Library e quindi fornisce prestazioni molto buone. L'API .NET gestita fornita da questa libreria è anche molto ampia e flessibile. Ma è un software proprietario e costa una notevole quantità di denaro. Manca anche alcune funzionalità (ad esempio rispetto a NMath dal software CenterSpace). Ad ogni modo, vale la pena provarlo.

5

Ho usato molto ILNumerics. Ha anche contribuito al progetto. Da sapere è l'unica libreria che conosco, che non impiega la metà della CPU in GC per serious computations. È veloce e maturo. Vedi il completo feature list.

+1

+1 ILNumerics ha tutte le caratteristiche di altre librerie. Ma è molto più veloce. –