matrices listas haskell matrix linear-algebra

matrices - listas en haskell



Biblioteca de matriz de álgebra lineal Haskell para tipos de elementos arbitrarios (1)

Estoy buscando una biblioteca de álgebra lineal Haskell que tenga las siguientes características:

  • Multiplicación de matriz
  • Además de la matriz
  • Transposición matricial
  • Cálculo de rango
  • La inversión de matriz es un plus

y tiene las siguientes propiedades:

  • tipos de elementos arbitrarios (escalares) (en particular, tipos de elementos que no son instancias Storable ). Mis elementos son una instancia de Num ; además, se puede calcular el inverso multiplicativo. Los elementos matemáticamente forman un campo finito (𝔽 2 256 ). Eso debería ser suficiente para implementar las funciones mencionadas anteriormente.
  • tamaños de matriz arbitrarios (probablemente necesite algo así como 100x100 , pero los tamaños de matriz dependerán de la entrada del usuario, por lo que no debe limitarse a otra cosa que no sea la memoria o la potencia de cálculo disponible)
  • lo más rápido posible, pero soy consciente de que una biblioteca para elementos arbitrarios probablemente no funcionará como una biblioteca C / Fortran que hace el trabajo (interconectado a través de FFI) debido a la indirección de tipos arbitrarios (no Int , Double o similares) . Al menos un puntero se desreferencia cuando se toca un elemento
  • (escrito en Haskell, este no es un requisito real para mí, pero como mis elementos no son instancias Storable , la biblioteca debe estar escrita en Haskell)

Ya lo intenté muy duro y evalué todo lo que parecía prometedor (la mayoría de las bibliotecas en Hackage afirman directamente que no funcionarán para mí). En particular, escribí código de prueba usando:

  • hmatrix , asume elementos hmatrix
  • Vec , pero la documentation dice:

    Dimensión baja: aunque la dimensionalidad está limitada solo por lo que manejará GHC, la biblioteca está diseñada para 2,3 y 4 dimensiones. Para el álgebra lineal general, echa un vistazo a la excelente biblioteca hmatrix y enlaces blas

Miré el código y la documentación de muchas más bibliotecas, pero nada parece satisfacer mis necesidades :-(.

Actualizar

Como parece que no hay nada, comencé un proyecto en GitHub que tiene como objetivo desarrollar dicha biblioteca. El estado actual es muy minimalista, no está optimizado para la velocidad en absoluto y solo las funciones más básicas tienen pruebas y, por lo tanto, deberían funcionar. Pero si le interesa usar o ayudar a desarrollarlo: póngase en contacto conmigo (encontrará mi dirección de correo electrónico en mi sitio web ) o envíe solicitudes de extracción.


bueno, me consta que estoy muy seguro de lo relevante que es mi respuesta, pero tengo buenas experiencias con la biblioteca GNU GSL y hay un contenedor para haskel:

http://hackage.haskell.org/package/bindings-gsl

Échale un vistazo, tal vez te ayude