Toutes les actualités, formations et événements
GSL
01 / 01 / 1970,
Actualité
GSL pour GNU Scientific Library.
C'est un bibliothèque écrite en C fournissant des outils de calculs numériques en mathématiques appliqués. La GSL fait partie du projet GNU et est distribuée sous GNU General Public License.
page officielle : http://www.gnu.org/software/gsl/
description wikipédia : http://fr.wikipedia.org/wiki/GNU_Scientific_Library
The GNU Scientific Library (GSL) is a numerical library for C and C++ programmers. It is free software under the GNU General Public License.
The library provides a wide range of mathematical routines such as random number generators, special functions and least-squares fitting. There are over 1000 functions in total with an extensive test suite.
doc : http://www.gnu.org/software/gsl/manual/html_node/
The current version is GSL-1.10. It was released on 21 September 2007. This is a stable release. The complete range of subject areas covered by the library includes,
| Complex Numbers | Roots of Polynomials | Special Functions |
| Vectors and Matrices | Permutations | Sorting |
| BLAS Support | Linear Algebra | Eigensystems |
| Fast Fourier Transforms | Quadrature | Random Numbers |
| Quasi-Random Sequences | Random Distributions | Statistics |
| Histograms | N-Tuples | Monte Carlo Integration |
| Simulated Annealing | Differential Equations | Interpolation |
| Numerical Differentiation | Chebyshev Approximation | Series Acceleration |
| Discrete Hankel Transforms | Root-Finding | Minimization |
| Least-Squares Fitting | Physical Constants | IEEE Floating-Point |
| Discrete Wavelet Transforms |
Exemple de programme :
/*
* Exemple d'utilisation de générateurs de nombres aléatoires de la GSL
*/
// Pour le cout et endl
#include
// Pour la fonction time utilisée pour générer la graine
#include
// Pour les générateurs de nombres de la GSL
#include
#include
using std::cout;
using std::endl;
int main(int argc, char *argv[]) {
gsl_rng *r; // Générateur de nombres aléatoires
// Creation du générateur (ici, Mersenne Twister)
r = gsl_rng_alloc(gsl_rng_mt19937);
// Initialisation de la graine
gsl_rng_set(r, time(NULL));
// Génération de 20 nombres suivant la loi de Gauss
double sigma = 1;
cout << "Loi de Gauss avec sigma= " << sigma << endl;
for(int i = 0; i < 20; i++)
cout << i << " : " << gsl_ran_gaussian(r, sigma) << endl;
// Génération de 20 nombres suivant la loi log-normale
double zeta = 1;
cout << endl << "Loi log-normale avec sigma= " << sigma;
cout << " et zeta=" << zeta << endl;
for(int i = 0; i < 20; i++)
cout << i << " : " << gsl_ran_lognormal(r, zeta, sigma) << endl;
// Destruction du générateur
gsl_rng_free(r);
}
Compiler le programme
avec g++ : g++ -o testGsl testGsl.cpp -W -Wall -lgsl
avec ipcp : ipcp -o testGsl testGsl.cpp -W -Wall -lgsl
Executer le programme
Une fois votre programme compilé, vous allez vouloir l'exécuter, et une erreur indiquant que le programme ne trouve pas les librairies nécessaires à son fonctionnement apparaît. Nous devons modifier la variable d'environnement référençant les librairies afin de lui indiquer où elles se trouvent. Bien évidemment, à chaque nouvelle session, vous devrez taper cette commande. Pour éviter cela, nous allons directement placer cette commande dans le fichier .bashrc se trouvant à la racine de notre compte ou dans le fichier de soumission.