Autor (es) original (es) | Mark Galassi , James Theiler, Brian Gough, Gerard Jungman y muchos otros |
---|---|
Desarrollador (es) | Proyecto GNU |
Versión inicial | Mayo de 1996 |
Lanzamiento estable | GSL-2.6 / 20 de agosto de 2019 |
Repositorio | ftpmirror |
Escrito en | C |
Tipo | Biblioteca numérica |
Licencia | Licencia pública general GNU |
Sitio web | www |
La Biblioteca Científica GNU (o GSL ) es una biblioteca de software para cálculos numéricos en matemáticas y ciencias aplicadas . El GSL está escrito en C ; los contenedores están disponibles para otros lenguajes de programación. El GSL es parte del Proyecto GNU [1] y se distribuye bajo la Licencia Pública General GNU .
Historial del proyecto [ editar ]
El proyecto GSL fue iniciado en 1996 por los físicos Mark Galassi y James Theiler del Laboratorio Nacional de Los Alamos . [2] Su objetivo era escribir un reemplazo moderno para las bibliotecas Fortran ampliamente utilizadas pero algo obsoletas , como Netlib . [3] Llevaron a cabo el diseño general y escribieron los primeros módulos; con eso listo, reclutaron a otros científicos para contribuir.
El "desarrollo general de la biblioteca y el diseño e implementación de los módulos principales" fue realizado por Brian Gough y Gerard Jungman. [2] Otros contribuyentes importantes fueron Jim Davies , Reid Priedhorsky, M. Booth y F. Rossi. [2]
La versión 1.0 fue lanzada en 2001. En los años siguientes, la biblioteca se expandió lentamente; como indica la documentación, los encargados del mantenimiento estaban más interesados en la estabilidad que en la funcionalidad adicional. La versión principal 1 finalizó con la versión 1.16 de julio de 2013; esta fue la única actividad pública en los tres años 2012-2014.
El vigoroso desarrollo se reanudó con la publicación de la versión 2.0 en octubre de 2015. La última versión 2.6 se lanzó en agosto de 2019.
Ejemplo [ editar ]
El siguiente programa de ejemplo calcula el valor de la función de Bessel para 5: [4]
#include <stdio.h>#include <gsl / gsl_sf_bessel.h>int main ( void ) { doble x = 5.0 ; doble y = gsl_sf_bessel_J0 ( x ); printf ( "J0 (% g) =% .18e \ n " , x , y ); return 0 ; }
El programa de ejemplo debe estar vinculado a la biblioteca GSL en el momento de la compilación:
gcc $ ( gsl-config --cflags ) ejemplo.c $ ( gsl-config --libs )
La salida se muestra a continuación y debe ser correcta con precisión de doble precisión :
J0 (5) = -1,775967713143382920e-01
Funciones [ editar ]
La biblioteca de software proporciona facilidades para:
- Funciones matemáticas básicas
- Números complejos
- Polinomios
- B-splines
- Funciones especiales
- Vectores y matrices
- Permutaciones
- Combinaciones
- Multijuegos
- Clasificación
- BLAS
- Álgebra lineal
- Eigensystems
- Transformadas rápidas de Fourier
- Integración numérica (basada en QUADPACK )
- Generación de números aleatorios
- Secuencias cuasialeatorias
- Distribuciones de números aleatorios
- Estadísticas
- Histogramas
- N-tuplas
- Integración de Monte Carlo
- Recocido simulado
- Ecuaciones diferenciales ordinarias
- Interpolación
- Diferenciación numérica
- Aproximaciones de Chebyshev
- Aceleración en serie
- Transformada discreta de Hankel
- Hallazgo de raíces en una y múltiples dimensiones
- Minimización en una y múltiples dimensiones
- Ajuste de mínimos cuadrados
- Ajuste no lineal por mínimos cuadrados
- Constantes físicas
- Aritmética de punto flotante IEEE
- Transformada de ondícula discreta
Enlaces de lenguaje de programación [ editar ]
Dado que el GSL está escrito en C, es sencillo proporcionar envoltorios para otros lenguajes de programación. Actualmente existen tales envoltorios para
- AMPL [5]
- C ++ [6] [7] [8]
- Fortran [9]
- Haskell [10] [11]
- Java [12]
- Julia [13]
- Lisp [14]
- Ocaml [15]
- Octava
- Lenguaje de datos Perl
- Python [16]
- R [17] [18]
- Rubí [19]
Soporte C ++ [ editar ]
El GSL se puede usar en clases de C ++ , pero sin usar punteros a funciones miembro, porque el tipo de puntero a función miembro es diferente de un puntero a función . [20] En su lugar, deben utilizarse punteros a funciones estáticas. Otra solución alternativa común es utilizar un funtor .
Se encuentran disponibles envoltorios de C ++ para GSL. [6] [7] [8] No todos estos se mantienen con regularidad. Ofrecen acceso a clases matriciales y vectoriales sin que el usuario tenga que utilizar malloc y funciones gratuitas . Algunos también ofrecen soporte para también crear espacios de trabajo que se comporten como clases de puntero inteligente . Finalmente, existe (limitado, a partir de abril de 2020) soporte para permitir al usuario crear clases para representar una función parametrizada como un funtor .
Si bien no son estrictamente envoltorios, hay algunas clases de C ++ [21] [22] que permiten a los usuarios de C ++ utilizar la biblioteca científica Gnu con características de envoltorio.
Ver también [ editar ]
- Lista de software de análisis numérico
- Lista de bibliotecas numéricas
- Netlib
- Recetas numéricas
Referencias [ editar ]
- ^ http://directory.fsf.org/GNU/
- ^ a b c Página de inicio de GSL .
- ^ Documento de diseño GSL .
- ^ Uso de la biblioteca. Un programa de ejemplo . Documentación GSL.
- ^ Enlaces AMPL para la biblioteca científica GNU .
- ^ a b ccgsl: una interfaz C ++ para la biblioteca científica gnu ;
- ^ a b GSL : envoltorios de C ++ para GSL ;
- ^ a b GSLwrap: Una clase contenedora de C ++ para la Biblioteca científica GNU .
- ^ FGSL: una interfaz de Fortran para la biblioteca científica GNU .
- ^ El paquete hmatrix-special, una interfaz para las funciones especiales de GSL .
- ^ El paquete hmatrix-gsl, una interfaz puramente funcional para cálculos numéricos seleccionados, implementada internamente usando GSL .
- ^ Ajustes preestablecidos de JavaCPP para GSL .
- ^ Interfaz de Julia a GSL .
- ^ GSLL, Biblioteca científica GNU para Lisp .
- ^ gsl-ocaml: enlaces OCaml al GSL .
- ^ Interfaz Python para la biblioteca científica GNU .
- ^ RcppGSL: Integración 'Rcpp' para vectores y matrices 'GNU GSL' .
- ^ gsl: envoltorio para la biblioteca científica Gnu .
- ^ rb-gsl: Ruby / GSL es una interfaz Ruby para la biblioteca científica GNU, para computación numérica con Ruby .
- ^ Punteros a las funciones de los miembros . Archivado el 13 de octubre de 2004 en la Wayback Machine .
- ^ Biblioteca de Computación Científica Orientada a Objetos o2scl ;
- ^ yat .
Enlaces externos [ editar ]
- Página web oficial
- El paquete gsl para R (lenguaje de programación) , un contenedor R para las funciones especiales y generadores de números cuasi aleatorios.