C++科学计算库GSL及其配置

分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net

C++科学计算库GSL及其配置
       很有可能某一天,在程序里面你会需要用到一些函数,比如 Γ 函数,β 函数,还有普通的对数吖之类的,你会想到什么,不会是#i nclude <math.h>吧?计算机科学发展了这么多年,已经有了许许多多优秀的科学计算的函数库,涵盖了各种方面,你所要做的,就是导入它们,把参数代入,然后等待结果,呵呵。忘掉那个又大,又慢,又难看,又难操作的MatLab吧(软件要是都象工程或者科学软件那样来开发,也就是只讲功能,根本不管不顾使用者的习惯或者难受程度,计算机行业早就倒闭了……)
    下面的文字默认你已经熟练掌握了各种C++编译器尤其是MinGW的命令行编译,当然,如果你bs windows并且在linux下面编译大规模源代码得心应手,那……

目前号称有三大库支持科学计算,它们是GNU的gsl,blitz++以及MTL,我们这里要使用GNU的gsl来做科学计算gsl可以在http://www.gnu.org下载,不过不是bin发布,还要自己编译,而且对windows的支持不好。
    我们可以在这里得到可以在MingW下面用的Lib版本的gsl,它是:
http://gnuwin32.sourceforge.net/packages/gsl.htm
        这里下载两个文件就可以支持windows下的编程,分别是gsl-1.8-bin.zip和gsl-1.8-dev.zip(版本号今后可能会变),bin里面提供了dll,dev里面提供了头文件和lib(这里只有.a格式的lib,所以不支持VC只支持MingW),把头文件复制到 MingW的include目录里面去,把lib(两个.a文件:libgsl.a和libgslcblas.a)放到你的源代码的同一个目录下面,然后就可以在程序里面调用gsl的函数了!

下面是例子

#include <iostream>
#include <gsl/gsl_sf.h>
int main()
{
std::cout << gsl_sf_gamma_inc( 1.5, 0.5 ) << std::endl;
std::cout << gsl_sf_gamma_inc_Q( 1.5, 0.5 ) << std::endl;
std::cout << gsl_sf_gamma_inc_P( 1.5, 0.5 ) << std::endl;
} 

如果想要在VC编译器下面用gsl,也可以到这里下载lib库文件 http://www6.in.tum.de/~kiss/WinGsl.htm
WinGsl
Windows vesrsion of the GNU Scientific Library
Description
    Here you will find a MS-VC++ adaptation of the GNU gsl-1.4 library. It‘s free in the sense of GNU licensing scheme.
    You have the choice to download the complete set of source code and compile yourself or download just the divcompiled static/dynamic libraries.
Versions
WinGsl-1.4.xx
Contain the complete set of free source code, help and samples based on gsl-1.4, necessary to compile and use the scientific library under Windows with MS-VC++ 6.0 / 7.0
WinGsl-1.4.01 / 09.07.2004 First release. ( ~3.6 MB)
WinGsl-1.4.02 / 11.08.2004 Current version.
WinGsl-Lib-1.4.xx
Contains a ready-to-use set of static and dynamic libraries generated from WinGsl-1.4.xx.

WinGsl-Lib-1.4.01 / 09.07.2004 First release. ( ~16.8 MB, VC++ 6.0)
WinGsl-Lib-1.4.02 / 11.08.2004 Current version ( VC++ 6.0).
WinGsl-Lib-1.4.03 / 27.08.2004 Current version ( .NET 2003).
虽然版本有点老,但是应该够用了。

附带两篇转载文章,对原作者表示感谢:
---------------------------------------------------------------------------------------------------------------------
GNU数学函数库gsl在windows下的移植

1.gsl在dev-c++下的移植:
     (1)下载gsl-1.8.exe:    http://gnuwin32.sourceforge.net/packages/gsl.htm

(2)安装gsl,安装后在安装目录下将有如下目录
\contrib\gsl-1.8 一些说明文件
\bin 二进制文件

     libgsl.dll             gsl的动态链接库(基于gcc的正式版本)
     libgsl_d.dll           gsl的动态链接库(基于gcc的调试版本)
     libgslcblas.dll        cblas的动态链接库(基于gcc的正式版本)
     libgslcblas_d.dll      cblas的动态链接库(基于gcc的调试版本)
     gsl-histogram.exe      用于计算数据直方图的程序
      gsl-randist.exe        用于生成服从指定分布数据的程序 

\lib 库文件

     libgsl.a                gsl的静态链接库(基于gcc的正式版本)
     libgsl_d.a              gsl的静态链接库(基于gcc的调试版本)
     libgslcblas.a           cblas的静态链接库(基于gcc的正式版本)
     libgslcblas_d.a         cblas的静态链接库(基于gcc的调试版本)
     libgsl_dll.a            libgsl.dll的gcc输入库
     libgsl_d_dll.a          libgsl_d.dll的gcc输入库
     libgslcblas_dll.a       libgslcblas.dll的gcc输入库
     libgslcblas_d_dll.a     libgslcblas_d.dll的gcc输入库
     libgsl.def              输出libgsl.dll的定义
     libgslcblas.def         输出libgslcblas.dll的定义 

\doc 有关文档
\info
\man1
\man3
     各种格式的gsl帮助文件
\include\gsl 头文件
     gsl include files
     其中使用到的主要有bin,lib,include\gsl下的文件

(3)设置dev-c++编译环境,有两种方式:

一、这种最简单,将gsl安装目录下的bin下 libgsl.dll,libgslcblas.dll复制到dev-c++安装目录下的bin目录下;lib下 libgsl.a,libgslcblas.a复制到dev-c++安装目录下的lib目录下;include下的整个gsl文件夹复制到dev-c++ 安装目录下的include目录下。打开dev-c++,工具-编译选项-编译器,选上“在连接器命令行加入如下命令”,加入-lgsl -lgslcblas(即在连接时连上libgsl.a,libgslcblas.a,gcc可以自动识别前缀lib和后缀.a)

#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);
    system("pause");
    return 0;
} 

移植可以正常运行。

二、打开dev-c++,工具-编译选项-目录,分别将gsl安装目录下的lib,include加入到库和头文件的路径中。最后,在编译器选项中,选中“在连接器命令行加入如下命令”,加入-lgsl -lgslcblas,即可以正常使用gsl。

2.gsl在Visual C++ 6.0下的移植

(1)下载WinGsl-Lib-1.4.02.zip : http://www6.in.tum.de/~kiss/WinGsl.htm

(2)解压到临时目录,WinGsl中的库文件的扩展名是.lib,可用于Visual C++ 6.0 的编译器

(3)设置Visual C++ 6.0编译环境,有两种方式:

一、将临时目录下bin中的WinGsl.dll和WinGslD.dll复制到~\Microsoft Visual Studio\VC98\Bin下;整个Gsl目录复制到~\Microsoft Visual Studio\VC98\Include下;lib目录下的所有.lib文件全部复制到~\Microsoft Visual Studio\VC98\Lib下。在使用gsl函数时,在新建的工程中,project-settings-link,在object/library modules中加入你用到的库文件,如WinGsl.lib等,加入多个可以用空格隔开。

二、打开VC,tools-options-directories,将解压目录下的lib,gsl分别加入到库文件和头文件的搜索路径中,将 WinGsl.dll和WinGslD.dll复制到~\Microsoft Visual Studio\VC98\Bin下。在新建的工程中将你所使用到的库文件加入到object/library modules。

---------------------------------------------------------------------------------------------------------------------
GSL 在 Windows开发环境下的使用
2005-9-11
        GSL(GNU Scientific Library)是一个非常不错的科学计算函数库,本站前面已经有文章对此做过介绍,本文将主要介绍在Win32平台三个不同的开发环境下如何使用这个软件库
        首先下载GSL win32的套装程序,地址在gnuwin32 GSL需要下载 Binaries 和 Developer files 。下载后解压到一个目录D:\temp中,然后开始进入下面的步骤。

下面介绍三个不同的开发环境:MingW、Visual C++ 7.0 和 Borland C++ Builder。

一、MingW
        首先将D:\temp下bin目录中的两个dll动态链结库(libgsl.dll和libgslcblas.dll)复制到 mingw 的 bin 目录中(gcc路径必须在 PATH 中)或者乾脆直接复制到 C:\Windows 或者 C:\Windows\system32 中,总之是程序运行的话必须可以找到这两个动态链结库。
        再将 D:\temp\include\ 下 gsl 目录完整复制到 mingw 的 include 目录中去,这些全是头文件,开发程序时必须会用到的。然后将 D:\temp\lib 下的 libgsl.a 和 libgslcblas.a 复制到 mingw 的 lib 目录下。

现在一切都准备好了,可以尝试编译一个测试程式看看是否运行正常,这样的话,整个开发过程与 Linux 下开发 GSL 程序完全一样。

编译命令是:
gcc test.c -o text.exe -lgsl

二、Visual C++ 7.0

如前所述,需要先将那两个动态链结库复制到PATH路径中的目录下,然后复制D:\temp\include\ 下 gsl 目录到 Visual C++ 的 Include 目录下,再将 D:\temp\lib 下的 libgsl.lib 和 libgslcblas.lib 复制到 Visual C++ 的 lib 目录下。
        这样准备工作就做完了,下来拿一个简单的程序来测试:

编译命令是:
cl test.c /link libgsl.lib用IDE时则是需要将这两个lib档加到 link 参数中去即可。

三、Borland C++ Builder
        依然同前,需要先将那两个动态链结库复制到PATH路径中的目录下,然后复制D:\temp\include\ 下 gsl 目录到 Borland C++ Builder 的 Include 目录下。

下来的步骤稍有麻烦,进入那两个dll所在目录,用BCB所带的 implib 工具产生2个需要用到的 lib 文件,命令如下:

implib -af libgsl.lib libgsl.dll

implib -af libgslcblas.lib libgslcblas.dll然后将这两个lib文件复制到 BCB 的 lib 目录下即可。D:\teml\lib 下的 libgsl-bcc.lib 和 libgslcblas-bcc.lib 经过我试验在BCB编译中不可用。只能用implib产生的lib档。
        现在开始测试,编译命令:

bcc32 test.c libgsl.lib命令行是如此,如果你用BCB的IDE的话,就更简单了,将这两个lib文件名加到编译参数中就可以了。

事情的经过就这么简单。
下面是test.c的源码

#i nclude <stdio .h>
#i nclude <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;
} 

本文地址:http://read.newbooks.com.cn/info/195035.html

在vc 6中如果 同时加入了 WinGsl.lib 和 WinGslD.lib 后,会出现 MSVCRT的问题,下面是一个解决方案。
http://hi.baidu.com/yuanqizhu/blog/item/026f187bd7f25df10bd1879e.html

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net

原文地址:https://www.cnblogs.com/sownchz/p/10500292.html

时间: 2024-11-03 22:04:28

C++科学计算库GSL及其配置的相关文章

windows下的gsl(科学计算库)配置

一.GSL介绍 GNU科学计算函数库GSL(GNU Scientific Library)是一个强大的C/C++数值计算函数库,它是一个自由软件,是GNU项目软件的一个部分,遵循GPL协议.GSL是一个为C和C++程序员提供的科学数值运算库.该科学计算库异常强大,函数库提供了大量的数值计算程序,如随机函数.特殊函数和拟合函数等等,整个函数库大约有1000多个函数,几乎涵盖了科学计算的各个方面.提供了如下方面的支持: Complex Numbers          Roots of Polyno

ubuntu14.04 下安装 gsl 科学计算库

GSL(GNU Scientific Library)作为三大科学计算库之一,除了涵盖基本的线性代数,微分方程,积分,随机数,组合数,方程求根,多项式求根,排序等,还有模拟退火,快速傅里叶变换,小波,插值,基本样条,最小二乘拟合,特殊函数等.下面介绍一下GSL的安装和使用. 方法一: 首先从官网下载到源代码(我用的版本是 gsl-1.9)压缩包,解压后进入目录,执行 ./configure make make install 这个过程需要几分钟.这里还有一点需要注意的是,执行 make inst

转载~如何在Pycharm中安装numpy等科学计算库

转载自机器小人z windows下如何快速优雅的使用python的科学计算库? Python是一种强大的编程语言,其提供了很多用于科学计算的模块,常见的包括numpy.scipy.pandas和matplotlib.要利用Python进行科学计算,就需要一一安装所需的模块,而这些模块可能又依赖于其它的软件包或库,因而安装和使用起来相对麻烦.幸好有人专门在做这一类事情,将科学计算所需要的模块都编译好,然后打包以发行版的形式供用户使用,Anaconda就是其中一个常用的科学计算发行版. 我们从网站(

windows下如何快速优雅的使用python的科学计算库?

Python是一种强大的编程语言,其提供了很多用于科学计算的模块,常见的包括numpy.scipy.pandas和matplotlib.要利用Python进行科学计算,就需要一一安装所需的模块,而这些模块可能又依赖于其它的软件包或库,因而安装和使用起来相对麻烦.幸好有人专门在做这一类事情,将科学计算所需要的模块都编译好,然后打包以发行版的形式供用户使用,Anaconda就是其中一个常用的科学计算发行版. 我们从网站(链接1)下载的默认的Anaconda版本已经内置了很多库(链接2),包括nump

『Python』Numpy学习指南第十章_高端科学计算库scipy入门(系列完结)

简介: scipy包包含致力于科学计算中常见问题的各个工具箱.它的不同子模块相应于不同的应用.像插值,积分,优化,图像处理,,特殊函数等等. scipy可以与其它标准科学计算程序库进行比较,比如GSL(GNU C或C++科学计算库),或者Matlab工具箱.scipy是Python中科学计算程序的核心包;它用于有效地计算numpy矩阵,来让numpy和scipy协同工作. 在实现一个程序之前,值得检查下所需的数据处理方式是否已经在scipy中存在了.作为非专业程序员,科学家总是喜欢重新发明造轮子

收集的Java科学计算库

将数学.物理.生物.航天.经济学等的计算集成到单一系统架构,提供了细致全面的计算系统. 科学计算框架 Catalano http://www.oschina.net/p/catalano Catalano Framework 是一个 Java 和 Android 的科学计算框架. 主要计算功能: 图像处理 模糊逻辑 数学计算 统计 机器学习 神经网络 科学计算可移植扩展工具包 PETSc http://www.oschina.net/p/petsc PETSc(Portable, Extensi

c++ 科学计算库

可具体查看下面链接,以获取较全面的科学计算库 http://blog.csdn.net/lee_cv/article/details/17374685 http://www.oschina.net/project/tag/239/Mathematics-computin?sort=view&lang=0&os=0

Python科学计算库-Numpy

科学计算库Numpy 处理数据 Year,WHO region,Country,Beverage Types,Display Value 1986,Western Pacific,Viet Nam,Wine,0 1986,Americas,Uruguay,Other,0.5 1985,Africa,Cte d'Ivoire,Wine,1.62 1986,Americas,Colombia,Beer,4.27 1987,Americas,Saint Kitts and Nevis,Beer,1.9

科学计算库Numpy基础操作

pycharm,python3.7,numpy版本1.15.1 2018年9月11日04:23:06 """ 科学计算库Numpy基础操作 时间:2018\9\11 0011 """ import numpy print("""\n------以矩阵的方式读取数据------\n ------------genfromtxt函数('文件路径',delimiter = '分隔符',dtype = 读取方式)------