GNU科学计算函数库 GSL - GNU Scientific Library

GNU科学计算函数库GSL(GNU Scientific Library)是一个强大的C/C++数值计算函数库,它是一个自由软件,是GNU项目软件的一个部分,遵循GPL协议。目前GSL的最新版本是1.5,发布于2004年6月25日。

常见的LINUX发行版一般不带GSL,用户可以下载安装,安装比较简单,只要按照安装说明安装即可。

函数库提供了大量的数值计算程序,如随机函数、特殊函数和拟合函数等等。整个函数库大约有1000多个函数,几乎涵盖了科学计算的各个方面。以下是整个函数库的目录:

Complex Numbers
Roots of Polynomials
Special Functions 
Vectors and Matrices
Permutations  
Sorting 
BLAS Support , BLAS(Basic Linear Algebra Subprograms)
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

GSL主页上有完整的GSL参考手册,里面有详细的函数介绍。参考手册有GSL Reference Manual - HTMLGSL Reference Manual - Gzipped Postscript GNU Scientific Library Reference Manual 。内容都是一样的,电子书有600多页,文档非常详细,书的作者也是这些函数库的开发设计者。涵盖GSL使用的方方面面。

GSL函数库的设计者都是一些经验丰富的科学家和程序员。它是面向对象设计的,C和C++程序可以非常容易的调用,而且下载的安装源码里包含有所有程序的具体算法,用户可以参考,而且也可以对此提出改进。

GSL里面还包含完整的数学物理常数,有专门的头文件包含。

下面举一个简单的例子sample.c:

#include <stdio .h>
#include <gsl /gsl_sf_bessel.h>

int main (void)
{
   double x = 5.0;
   double y = gsl_sf_bessel_J0(x);
   printf ("J0(%g) = %.18en", x, y);
   return 0;
}

编译:

gcc sample.c -o sample -lgsl

运行输出:

J0(5) = 143382920e-01

有兴趣的可以详细阅读一下GSL Reference Manual