Las siguientes tablas proporcionan una comparación de las bibliotecas de software de álgebra lineal , ya sean bibliotecas especializadas o de propósito general con una cobertura significativa de álgebra lineal.
Álgebra lineal densa
Información general
Creador | Idioma | Primer lanzamiento público | Última versión estable | Disponibilidad del código fuente | Licencia | Notas | |
---|---|---|---|---|---|---|---|
ALGLIB [1] | Proyecto ALGLIB | C ++, C #, FreePascal, VBA | 2006 | 3.12.0 / 08.2017 | Libre | GPL / comercial | Biblioteca de análisis numérico de propósito general con interfaces C ++ y C #. |
Armadillo [2] [3] | NICTA | C ++ | 2009 | 9.200 / 10.2018 | Libre | Licencia Apache 2.0 | Biblioteca de plantillas C ++ para álgebra lineal; incluye varias descomposiciones y factorizaciones; la sintaxis ( API ) es similar a MATLAB . |
ATLAS | R. Clint Whaley y col. | C | 2001 | 3.10.3 / 07.2016 | Libre | BSD | Implementación ajustada automáticamente de BLAS. También incluye las descomposiciones LU y Cholesky. |
Blaze [4] | K. Iglberger y col. | C ++ | 2012 | 3.8 / 08.2020 | Libre | BSD | Blaze es una biblioteca matemática C ++ de código abierto y alto rendimiento para aritmética densa y escasa. |
Blitz ++ | Todd Veldhuizen | C ++ | ? | 1.0.2 / 10.2019 | Libre | GPL | Blitz ++ es una biblioteca de clases de plantillas C ++ que proporciona contenedores de arreglos multidimensionales de alto rendimiento para la informática científica. |
Impulsar uBLAS | J. Walter, M. Koch | C ++ | 2000 | 1.70.0 / 04.2019 | Libre | Aumente la licencia del software | uBLAS es una biblioteca de clases de plantillas de C ++ que proporciona la funcionalidad BLAS de nivel 1, 2, 3 para matrices densas, empaquetadas y dispersas. |
Dlib | Davis E. King | C ++ | 2006 | 19.7 / 09/2017 | Libre | Aumentar | Biblioteca de plantillas C ++; se une a BLAS optimizados como Intel MKL; Incluye descomposiciones matriciales, solucionadores no lineales y herramientas de aprendizaje automático |
Eigen | Benoît Jacob | C ++ | 2008 | 3.3.9 / 12.2020 | Libre | MPL2 | Eigen es una biblioteca de plantillas de C ++ para álgebra lineal: matrices, vectores, solucionadores numéricos y algoritmos relacionados. |
Fastor [5] | R. Poya, AJ Gil y R. Ortigosa | C ++ | 2016 | 0.6.3 / 06.2020 | Libre | Licencia MIT | Fastor es una biblioteca de tensor (matriz multidimensional fija) de alto rendimiento para C ++ moderno. |
Biblioteca científica GNU [6] | Proyecto GNU | C, C ++ | 1996 | 2.5 / 06.2018 | Libre | GPL | Biblioteca de análisis numérico de propósito general. Incluye algo de soporte para álgebra lineal. |
Bibliotecas numéricas IMSL | Software Rogue Wave | C, Java, C #, Fortran, Python | 1970 | muchos componentes | No libre | Propiedad | Biblioteca de análisis numérico de propósito general. |
LAPACK [7] [8] | Fortran | 1992 | 3.9.0 / 11.2019 | Libre | BSD de 3 cláusulas | Biblioteca de álgebra lineal numérica con una larga historia | |
librsb | Michele Martone | C, Fortran, M4 | 2011 | 1.2 / septiembre de 2016 | Libre | GPL | Primitivas de subprocesos múltiples de alto rendimiento para matrices dispersas grandes. Operaciones de soporte para solucionadores iterativos: multiplicación, resolución triangular, escalado, E / S matricial, renderizado matricial. Muchas variantes: por ejemplo: simétrica, hermitiana, compleja, cuádruple precisión. |
MKL | Intel | C ++, Fortran | 2003 | 2020.0 actualización 1 / 01.2020 | No libre | Licencia de software simplificada de Intel | Biblioteca de análisis numérico optimizada para CPU Intel |
Numéricos de Math.NET | C. Rüegg, M. Cuda y col. | C# | 2009 | 3.20 / 07.2017 | Libre | Licencia MIT | Biblioteca de análisis numérico C # con soporte de álgebra lineal |
Biblioteca numérica NAG | El grupo de algoritmos numéricos | C, Fortran | 1971 | muchos componentes | No libre | Propiedad | Biblioteca de análisis numérico de propósito general. |
NMath | Software CenterSpace | C# | 2003 | 7.1 / diciembre 2019 | No libre | Propiedad | Bibliotecas matemáticas y estadísticas para .NET Framework |
Ciencia ficción [9] [10] [11] | Enthought | Pitón | 2001 | 1.0.0 / 10.2017 | Libre | BSD | Basado en Python |
Xtensor [12] | S. Corlay, W. Vollprecht, J. Mabille y col. | C ++ | 2016 | 0.21.10 / 11.2020 | Libre | BSD de 3 cláusulas | Xtensor es una biblioteca de C ++ destinada al análisis numérico con expresiones de matriz multidimensionales, transmisión y computación perezosa. |
Tipos de matrices y operaciones
Tipos de matriz (no se enumeran tipos especiales como bidiagonal / tridiagonal):
- Real - general (no simétrico) real
- Complejo - complejo general (asimétrico)
- SPD - simétrico positivo definido (real)
- HPD - Hermitian positivo definido (complejo)
- SY - simétrico (real)
- HE - Hermitian (complejo)
- BND - banda
Operaciones:
- TF - factorizaciones triangulares (LU, Cholesky)
- OF - factorizaciones ortogonales (QR, QL, factorizaciones generalizadas)
- EVP - problemas de valores propios
- SVD - descomposición de valor singular
- GEVP - EVP generalizado
- GSVD - SVD generalizada
Verdadero | Complejo | SPD | HPD | SY | ÉL | BND | TF | DE | EVP | SVD | GEVP | GSVD | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ALGLIB | sí | sí | sí | sí | No | No | No | sí | sí | sí | sí | sí | No |
ATLAS | sí | sí | sí | sí | No | No | No | sí | No | No | No | No | No |
Dlib | sí | sí | sí | sí | sí | sí | No | sí | sí | sí | sí | No | No |
Biblioteca científica GNU | sí | sí | sí | sí | No | No | No | sí | sí | sí | sí | sí | No |
ILNumerics.Net | sí | sí | sí | sí | No | No | No | sí | sí | sí | sí | No | No |
Bibliotecas numéricas IMSL | sí | sí | sí | sí | No | No | sí | sí | No | sí | sí | sí | No |
LAPACK | sí | sí | sí | sí | sí | sí | sí | sí | sí | sí | sí | sí | sí |
MKL | sí | sí | sí | sí | sí | sí | sí | sí | sí | sí | sí | sí | sí |
Biblioteca numérica NAG | sí | sí | sí | sí | sí | sí | sí | sí | sí | sí | sí | sí | sí |
NMath | sí | sí | sí | sí | sí | sí | sí | sí | sí | sí | sí | No | No |
SciPy (paquetes de Python) | sí | sí | sí | sí | No | No | No | sí | sí | sí | sí | No | No |
Eigen | sí | sí | sí | sí | sí | sí | sí | sí | sí | sí | sí | sí | No |
Armadillo | sí | sí | sí | sí | sí | sí | No | sí | sí | sí | sí | sí | No |
Referencias
- ^ Bochkanov, S. y Bystritsky, V. (2011). ALGLIB: una biblioteca multiplataforma de análisis numérico y procesamiento de datos. Proyecto ALGLIB. Novgorod, Rusia.
- ^ Sanderson, C. y Curtin, R. (2016). Armadillo: una biblioteca de C ++ basada en plantillas para álgebra lineal. Revista de software de código abierto, 1 (2), 26.
- ^ Sanderson, C. (2010). Armadillo: una biblioteca de álgebra lineal C ++ de código abierto para la creación rápida de prototipos y experimentos de computación intensiva (p. 84). Informe técnico, NICTA.
- ^ https://bitbucket.org/blaze-lib/blaze/src/master/
- ^ Poya, Roman y Gil, Antonio J. y Ortigosa, Rogelio (2017). "Un marco de contracción de tensor paralelo de datos de alto rendimiento: aplicación a electromecánica acoplada" . Comunicaciones de Física Informática . 216 : 35–52. doi : 10.1016 / j.cpc.2017.02.016 .CS1 maint: varios nombres: lista de autores ( enlace )
- ^ Gough, B. (2009). Manual de referencia de la biblioteca científica GNU. Network Theory Ltd ..
- ^ Anderson, E., Bai, Z., Bischof, C., Blackford, S., Dongarra, J., Du Croz, J., ... y Sorensen, D. (1999). Guía del usuario de LAPACK. SIAM.
- ^ Anderson, E., Bai, Z., Dongarra, J., Greenbaum, A., McKenney, A., Du Croz, J., ... y Sorensen, D. (1990, noviembre). LAPACK: una biblioteca de álgebra lineal portátil para computadoras de alto rendimiento. En Actas de la conferencia ACM / IEEE de 1990 sobre supercomputación (págs. 2-11). IEEE Computer Society Press.
- ^ Jones, E., Oliphant, T. y Peterson, P. (2001). SciPy: herramientas científicas de código abierto para Python.
- ^ Bressert, E. (2012). SciPy y NumPy: una descripción general para desarrolladores. "O'Reilly Media, Inc.".
- ^ Blanco-Silva, FJ (2013). Aprendizaje de ciencia ficción para computación numérica y científica. Packt Publishing Ltd.
- ^ https://github.com/xtensor-stack/xtensor
enlaces externos
- scipy en GitHub
- armadillo en GitHub
- mathnet-numerics en GitHub