Raccomandazione per C # Matrix Library

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

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

Alcune delle funzionalità sono:
Scomposizione di un valore singolo
Inversione della matrice
Traccia
determinanti

Biblioteche consigliate (dalle risposte)

(la maggior parte implementa le funzionalità sopra indicate)

  • Math. NET Numerics per .NET, Silverlight e Mono (opensource)
  • Librerie numeriche di ottimizzazione estrema (commerciali, molto complete)
  • IL Numerics (commerciale)
  • Libreria numerica FinMath di Deltix (commerciale, utilizza Intel® Math Kernel Library (MKL) e Intel® Integrated Performance Primitives (IPP))
  • Classe di matrice veloce leggera in C # (algoritmo Strassen, decomposizione LU)

Math.NET Numerics è molto bello, se supporta le operazioni che vuoi. Il vecchio Mathidia Iridium supporta ancora più opzioni. Inoltre, dnAnalytics è molto carino, ma non è più sviluppato. (Oltre a Iridium, vengono uniti in Math.NET Numerics.)

Sul lato commerciale, ci sono alcune opzioni molto buone e robuste. Le librerie numeriche di ottimizzazione estrema funzionano molto bene. La libreria di Visual Numerics funziona anche molto bene (anche se con una distribuzione basata sulle royalty …).

Credo che Math.NET abbia la maggior parte delle funzionalità che menzioni. Yu potrebbe voler guardarlo e vedere se soddisfa le tue esigenze.

Puoi dare un’occhiata ai campioni di Iridium per vedere la syntax e il codice di esempio.

Ho usato molto ILNumerics . Ha anche contribuito al progetto. Da sapere è l’unica libreria che conosco, che non trascorre la metà del tempo di CPU in GC per calcoli gravi . È veloce e maturo. Vedi l’ elenco completo delle funzionalità .

Oltre alle librerie citate in altri post, posso dire alcune parole calde 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.