很有可能某一天,在程序里面你会需要用到一些函数,比如 Γ 函数,β 函数,还有普通的对数吖之类的,你会想到什么,不会是#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的函数了!
下面是例子
#i nclude <iostream>
#i nclude <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 precompiled 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)
#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);
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 和 ibgslcblas.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;
}
分享到:
相关推荐
gsl库及详细的安装方法,经测试可以使用
C++ 产生各种随机数的方法,简单适用,只需要添加头文件
我想做一个最小二乘法正太拟合曲线,网上都是python调用matlab进行拟合,我想用C++拟合曲线,发现网上有开源库GSL也有计算方法;这工程就是用VS2019编译的GSL动态库,测试项目中包括GSL生成的动态库静态库。
本文讲述了win7操作系统下,gsl1.8.0在VC6.0上的安装及配置方法,最终可以安装成功。
本文档详细的介绍了如何在vc++6.0环境中使用gsl库,包括gsl的安装方法、vc++6.0的配置以及验证是否设置成功的实例。
此文件是Qt环境下GSL的部署方法,内部已经附带gsl的dll和lib文件,以及写好的pri文件,直接调用。 GSL(GNU Scientific Library)是一个 C 写成的用于科学计算的库,有超过1000个函数,该库提供了关于数学计算的很多...
gsl-1.8库 图像处理 软件 安装版
触屏无法使用的解决方法 1 . re管理器在/system/lib/firmware目录新建silead文件夹,权限0755 解压出来gsl3692-jumper-ezpad-6-plus.fw,复制粘贴到/system/lib/firmware/silead里面,权限0644
实用C代码
使用GSL的蒙特卡罗模拟 C语言的Monte Carlo模拟-GSL RNG-编译语言 编译语言-估计PI-蒙特卡洛模拟 该程序是用C语言完成的,用于模拟Monte Carlo方法。 该程序利用GSL库获取随机数。 蒙特卡洛法是什么? 蒙特卡洛方法...
GSL的当前实现基于 ,可以用作其的替代方法。 由于它们的相似性,可以将其移植到其他图形级IR。 特征 声明式的。 该语言使用户可以专注于图替换的本质。 他们不需要关心替换算法的细节。 很简单。 该语言充分利用...
这是一个比较好用的数学运算库,采用动态链接库dll\lib库\.h头文件三者共同调用的方式完成使用,在文章中已明确给出必要配置方法。配合网站https://www.gnu.org/software/gsl/doc/html/index.html可以自行学习使用。
(如果这样添加了其实下面指定的前两个都不需要,因为在系统中已经有了这些文件,但不建议按这种方法指定,这样会使系统VC库中的东西非常混乱,强烈建议使用下面这种指定路径的方法!!) 在Project -> tracking-> ...
此类的具体使用方法见:http://blog.csdn.net/czyt1988/article/details/21743595 在进行曲线拟合时用的最多的是最小二乘法,其中以一元函数(线性)和多元函数(多项式)居多,下面这个类专门用于进行多项式拟合,...
版块汇总科学运算积分微分插值拟合优化统计-计算方法.rar 我们将会将本版块的所有资料以及多数问题本帖中给出很好的答复
介绍 Annealing 是 GSL 的 C11 语言扩展库,即 GNU 科学库,尝试重新设计模拟退火模块。 该库以 POSIX 系统为目标。上次作者费心更新这一段时,他测试了 GSL 2.5。...更多详情、使用方法,请下载后阅读README.md文件
使用C++ 编写的sg滤波,需要依赖GSL库,滤波方法文献参考Chen, et al., 2004. A simple method for reconstructing a high-quality ; NDVI time-series data set based on the Savitzky�Golay filter. Remote ...
计算多重积分的蒙特卡罗方法与数论网格法 蒙特卡罗方法,数论网格法
为达到能快速使用的目的。文档对 CTP 与 sensor 的自动加载原理,使用方法步骤, 如何添加一个新的模组等做了详细的讲解
二维插值方法,适用于二维插值,由于距离反比插值随距离越来越远,插值数据越来越小,开发的全新插值方式。