2010-10-22 13 views
11

¿Hay algún paquete para realizar cálculos de Sparse Linear Algebra, tal vez en base a bibliotecas C rápidas y eficientes? Busqué en Hackage pero no encontré nada al respecto: hmatrix, que usa GSL, BLAS y LAPACK, es genial, pero no parece incluir algoritmos especiales para resolver sistemas lineales y problemas de valores propios/vectores con matrices dispersas . Lo que me gustaría encontrar, es algo similar al módulo sparse.linalg en scipy. Gracias!¿Algún paquete de álgebra lineal dispersa en Haskell?

+1

Alguien en una respuesta señaló esto, que se veía bien y no sé por qué se eliminó su respuesta https://github.com/laughedelic/sparse-lin-alg – sclv

Respuesta

7

Por lo que sé, todavía no existe ese paquete.

Hubo un artículo R. L. Winwright y M. E. Sexton. Un estudio de representaciones de matrices dispersas para resolver sistemas lineales en un lenguaje funcional. J. Functional Programming, 2 (1): 61-72, enero de 1992., donde compararon las representaciones de matrices dispersas de Quad-tree, Binary tree y run-length en Miranda. Los árboles cuádruples fueron superiour en el método CG, y la codificación de longitud de ejecución funcionó bien con SOR.

Hubo una implementación de la FEM en Haskell en 1993, Some issues in a functional implementation of a finite element algorithm. Usaron cuadrúboles también. El rendimiento logrado no fue estelar, pero fue hace mucho tiempo ... Espero que hoy Haskell pueda tener un mejor rendimiento. También hay nuevas bibliotecas de matriz para usar, que pueden dar mejores representaciones de las matrices dispersas. Hoy tenemos IntMap, Vector e incluso Repa.

Aún no se ha escrito una biblioteca de los solucionadores dispersos en Haskell (o enlaces a C/solucionadores de Fortran).

+0

scipy.sparse parece cultivar muchos de los Pesado levantando a superLU, que debe ser straightfowarard para enlazar: http://crd.lbl.gov/~xiaoye/SuperLU/, pero uno todavía necesita código para crear las representaciones de matriz dispersas para comenzar. – sclv

+1

Sí. También hay una biblioteca UMFPACK de solucionadores directos http://www.cise.ufl.edu/research/sparse/umfpack/. No debería ser demasiado difícil interactuar con ninguno de ellos. Y también hay solucionadores iterativos que a menudo requieren menos memoria para ejecutarse. Podemos elegir interactuar con las bibliotecas existentes o implementarlas desde cero. No estoy seguro de cuál puede ser más rápido. De nuevo, hay TAUCS http://www.tau.ac.il/~stoledo/taucs/ y LASPACK http://www.mgnet.org/mgnet/Codes/laspack/ (solo secuenciales) y PETSc http: // www.mcs.anl.gov/petsc/petsc-2/ (enorme). – sastanin

+0

SciPy.Sparse utiliza implementaciones Fortran de los métodos iterativos de http://www.netlib.org/templates/ – sastanin

Cuestiones relacionadas