De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

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 ]

  1. ^ http://directory.fsf.org/GNU/
  2. ^ a b c Página de inicio de GSL .
  3. ^ Documento de diseño GSL .
  4. ^ Uso de la biblioteca. Un programa de ejemplo . Documentación GSL.
  5. ^ Enlaces AMPL para la biblioteca científica GNU .
  6. ^ a b ccgsl: una interfaz C ++ para la biblioteca científica gnu ;
  7. ^ a b GSL : envoltorios de C ++ para GSL ;
  8. ^ a b GSLwrap: Una clase contenedora de C ++ para la Biblioteca científica GNU .
  9. ^ FGSL: una interfaz de Fortran para la biblioteca científica GNU .
  10. ^ El paquete hmatrix-special, una interfaz para las funciones especiales de GSL .
  11. ^ El paquete hmatrix-gsl, una interfaz puramente funcional para cálculos numéricos seleccionados, implementada internamente usando GSL .
  12. ^ Ajustes preestablecidos de JavaCPP para GSL .
  13. ^ Interfaz de Julia a GSL .
  14. ^ GSLL, Biblioteca científica GNU para Lisp .
  15. ^ gsl-ocaml: enlaces OCaml al GSL .
  16. ^ Interfaz Python para la biblioteca científica GNU .
  17. ^ RcppGSL: Integración 'Rcpp' para vectores y matrices 'GNU GSL' .
  18. ^ gsl: envoltorio para la biblioteca científica Gnu .
  19. ^ rb-gsl: Ruby / GSL es una interfaz Ruby para la biblioteca científica GNU, para computación numérica con Ruby .
  20. ^ Punteros a las funciones de los miembros . Archivado el 13 de octubre de 2004 en la Wayback Machine .
  21. ^ Biblioteca de Computación Científica Orientada a Objetos o2scl ;
  22. ^ 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.