.net math matrix sparse-matrix

Matrix Library para.NET



math sparse-matrix (9)

Estoy buscando una biblioteca de matriz buena (bien probada, con todas las funciones e, idealmente, con una buena interfaz) para .NET / C #. Mis principales requisitos aquí son solo que debería ser gratuito (en este caso, no me importa especialmente si es de código abierto) y, preferiblemente, es compatible con operaciones de matriz dispersas . Los requisitos obligatorios son todas las operaciones básicas (p. Ej., Multiplicación, transposición, inversión), así como también encontrar valores propios y vectores propios. Sería preferible la implementación de métodos numéricos en lugar de / y analíticos para el descubrimiento de valores propios, en particular el algoritmo de Lanczos para matrices dispersas, ya que las matrices con las que voy a tratar son muy grandes (longitudes de hasta 10.000) como bien como cuadrado, y también razonablemente escaso. Diciendo eso, podría estar pidiendo un poco más, así que cualquier sugerencia para una biblioteca de matriz razonablemente completa sería genial.

Ahora soy consciente de que Python tiene una o dos bibliotecas útiles para tales tareas (a saber, NumPy / SciPy ), pero .NET desafortunadamente parece estar ausente en el área.

Un poco de búsqueda apareció en las siguientes bibliotecas para .NET, que potencialmente podría utilizar:

Sin embargo, dado que no he tenido experiencia alguna en el uso de estas bibliotecas u otras (y no tengo tiempo suficiente para verificarlas correctamente en cualquier caso), agradecería mucho que alguien aquí pudiera comentar sus recomendaciones sobre las distintas bibliotecas. , sus pros / contras particularmente con respecto a la idoneidad para mis usos, y sus experiencias generales con ellos.

Recurrir a MatLab siempre es una opción, pero no una opción preferida, ya que sería mucho más conveniente si pudiera integrar las matemáticas matriciales directamente con mi programa.



Con respecto a .NET y Python, puedes usar IronPython. Sin embargo, también necesitarás Ironclad para hacer que SciPy y NumPy funcionen con IronPython.


Editar:

No estaba completamente allí la última vez que lo evalué, pero ha habido bastante actividad, por lo que también debes considerar los números matemáticos (gratuitos y de código abierto) Math.NET .

Al mirar ahora, parece que han terminado su nueva versión, y han agregado soporte de matrices dispersas, así como otras cosas buenas.

Si desea un soporte más robusto, lamentablemente realmente necesita ingresar paquetes comerciales para .NET atm.

Hay dos paquetes muy ricos en funciones, que soportan muy bien las matrices. Extreme Numerics funciona muy bien y tiene algunas características muy agradables. También he escuchado cosas muy buenas sobre las bibliotecas matemáticas de IMSL Visual Numerics .


La ahora desaparecida biblioteca Managed DirectX tenía algún soporte de matriz.

Desde entonces, esto se ha incorporado a Microsoft XNA, que probablemente no sea adecuado para usted, pero el artículo de Wikipedia de MDX recomienda algo llamado SlimDX que podría estar bien .


Otra alternativa: IMSL para .NET . CenterSpace tiene las bibliotecas de NMath , no las ha usado.


Prueba ILNumerics : tenemos un rel. una larga historia como proyecto de código abierto y recientemente cambió a licencias comerciales para un mejor y confiable soporte. Soy parcial, pero aquí viene una breve lista de características:

  • Mejor gestión de la memoria, por lo tanto ...
  • Algoritmos mucho más rápidos
  • Utiliza MKL para el álgebra lineal
  • clases de matriz n-dim, sintaxis similar a Matlab
  • Controles de trama 3D
  • Soporte para 32/64 bit
  • Soporte para mono
  • Lista completa de características

Tengo Mapack en el pasado y me pareció muy bueno.

Aunque, no creo que tenga matrices dispersas, pero sí admite todas las funciones básicas de álgebra lineal.


Utilicé Mapack (el puerto .Net no la versión COM) en un proyecto de red neuronal en la universidad. No recuerdo exactamente los detalles de la biblioteca, pero hizo todo lo que necesitaba y no fue particularmente oneroso de usar.


Meta.Numerics (alojado en codeplex ) es un paquete gratuito que calculará valores propios y vectores propios de matrices no simétricas, pero actualmente no trata especialmente las matrices dispersas.