[转]C++各大有名科学计算库 收藏
From: http://fly-hyp.javaeye.com/blog/346352
C++各大有名科学计算库
C++各大有名科学计算库
2008年10月13日 星期一 上午 11:29
在 C++中,库的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论。现实中,C++的库门类繁多,解决的问题也是极其广泛,库从轻量级到重量级的都有。不少都是让人眼界大开,亦或是望而生叹的思维杰作。由于库的数量非常庞大,而且限于笔者水平,其中很多并不了解。所以文中所提的一些库都是比较著名的大型库。
C++各大有名库的介绍——科学计算
1、Blitz++
参考网站:http://www.oonumerics.org/blitz
Blitz++ 是一个高效率的数值计算函数库,它的设计目的是希望建立一套既具像C++ 一样方便,同时又比Fortran速度更快的数值计算环境。通常,用C++所写出的数值程序,比 Fortran慢20%左右,因此Blitz++正是要改掉这个缺点。方法是利用C++的template技术,程序执行甚至可以比Fortran更快。
Blitz++目前仍在发展中,对于常见的SVD,FFTs,QMRES等常见的线性代数方法并不提供,不过使用者可以很容易地利用Blitz++所提供的函数来构建。
2、POOMA
参考网站:http://www.codesourcery.com/pooma/pooma
POOMA是一个免费的高性能的C++库,用于处理并行式科学计算。POOMA的面向对象设计方便了快速的程序开发,对并行机器进行了优化以达到最高的效率,方便在工业和研究环境中使用。
3、MTL
参考网站:http://www.osl.iu.edu/research/mtl
Matrix Template Library(MTL)是一个高性能的泛型组件库,提供了各种格式矩阵的大量线性代数方面的功能。在某些应用使用高性能编译器的情况下,比如Intel的编译器,从产生的汇编代码可以看出其与手写几乎没有两样的效能。
4、CGAL
参考网站:www.cgal.org
Computational Geometry Algorithms Library的目的是把在计算几何方面的大部分重要的解决方案和方法以C++库的形式提供给工业和学术界的用户。
Intel Math Kernel Library
1.基本线形代数运算(BLAS) 向量与向量、向量与矩阵、矩阵与矩阵的运算
2.稀疏线形代数运算
3.快速傅立叶变换(单精度/双精度)(fftw)
4.LAPACK(求解线形方程组、最小方差、特征值、Sylvester方程等)
5.向量数学库(VML)
6.向量统计学库(VSL)
7.高级离散傅立叶变换
IMSL
软件名称 IMSL C Numerical Library(不兼容vc6编译器)
程序设计语言 C, Forton, C#, Java
资源网址 http://www.vni.com/
功能概述 分为统计库和数学库两部分. 数学库包含应用数学和特殊函数.IMSL 程序库 - 已成为数值分析解决方案的工业标准。 IMSL 程序库提供最完整与最值得信赖的函数库。 IMSL 数值程序库提供目前世界上最广泛被使用的 IMSL 算法,有超过 370 验证过、最正确与 thread-safe 的数学与统计程序。 IMSL FORTRAN 程序库提供新一代以 FORTRAN 90 为程序库基础的程序,能展现出最佳化的演算法能力应用于多处理器与其它高效能运算系统。
lapack
软件名称 Linear Algebra Package
程序设计语言 Fortran 77
资源网址 http://www.netlib.org/lapack
功能概述 线性代数计算子程序包
lapack++
软件名称 Linear Algebra Package in c++
程序设计语言 c++
资源网址 http://math.nist.gov/lapack++/
功能概述 c++版的线性代数计算子程序包
BLAS
软件名称 Basic Linear Algebra Subroutines
程序设计语言 Fortran 77
主要开发者 Kagstrom B. ,Ling P. ,Van Loan C.
资源网址 http://www.netlib.org/blas
功能概述 Blas是执行向量和矩阵运算的子程序集合。
uBLAS
BLAS in C++ with expression templates. 表达式模版形式的 C++中的BLAS ,
gsl
软件名称 GNU Scientific Library (linux)
程序设计语言 C , C++ compable
资源网址 http://www.gnu.org/software/gsl/
功能概述 范围广泛, 包括数值分析的常见内容
Blitz++
软件名称 Blitz++ (不兼容vc6编译器)
资源网址 http://sourceforge.net/project/showfiles.php?group_id=63961
功能概述 The current versions provide dense arrays and vectors, random number generators, and small vectors and matrices.是一个高效率的数值计算函数库,它的设计目的是希望建立一套既具像 C++ 一样方便,同时又比 Fortran 速度更快的数值计算环境。通常,用 C++ 所写出的数值程序,比 Fortran 慢 20% 左右,因此Blitz++ 正是要改掉这个缺点。方法是利用 C++ 的 template 技术,程序执行甚至可以比 Fortran 更快。
MTL
软件名称 Matrix Template Library(兼容vc6编译器)
资源网址 http://www.osl.iu.edu/research/mtl/
功能概述 The Matrix Template Library (MTL) is a high-performance generic component library that provides comprehensive linear algebra functionality for a wide variety of matrix formats. MTL专注于线性代数相关的计算任务,如各种形式矩阵的生成(对角,共轭,稀疏,对称等),相关的计算,变换,以及与一维向量的运算。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/candj/archive/2009/11/26/4871880.aspx
C++数值计算矩阵库(来自Kay, http://blog.csdn.net/sinkay/archive/2004/09/16/106238.aspx)
做工程计算的东西,总感觉需要一个优秀的矩阵库,片断性的问题,一般都是用matlab就很方便,但是做程序的话,虽然也可以使用matlab,总是有点七零八落,今天趁机查了一些c++数值库的信息,尤其是矩阵库,一些出色的文章我也粘贴到了blog中,呵呵,我记性可不是象人家程序那么出色,:),
http://www-900.ibm.com/developerWorks/cn/linux/other/matrix/index.shtml
评估和比较 Meschach、Cooperware 矩阵和 Blitz,developworks上的文章,进行了分析比较,尤其是性能分析,没有提到mtl,
http://blog.csdn.net/ccboy/archive/2003/05/02/10432.aspx,
VC++ .NET 2003 –安装和使用Boost 1.30和Blitz++0.6,是ccboy的安装blitz的一些细致说明,对于第一次安装使用blitz库,用处很大,
http://www.zengyihome.net/articles/C++/incompleteCPPreference1-2.htm
C++资源之不完全导引,我立即把这个网页打印了一份,里边对c++资源讲的很多,都是c++的精品,对数值库的分析有点泛泛,人家本来就不是做数值库分析的文章,呵呵,
http://www.oonumerics.org/blitz/manual/Frames.html
blitz的user guide,和一般的介绍差不多,的确是数值计算,里边有随机数的生成,不知道和boost库的随机数有什么不同,对于矩阵就少点,没有那些常用的矩阵变换,只有自己去实现了,(强烈要求添加矩阵常用运算)还好,那次书店看到一本翻译的《C++数值分析》,有理论,源代码,自己看着修改,应该也不是问题,
http://www.osl.iu.edu/research/mtl/reference/html/index.html
mtl的index主页,专注与矩阵运算,但是我没在里边看到求逆函数,兴许是没找到
http://www.oonumerics.org/oon/
面向对象数值计算库的总的介绍,各类数值库都有,线性代数,阵图形,神经网络,高能物理量子计算,微分方程,可视化,图论,强烈推荐啊,不排除各种库会存在问题(手头使用的一些库都存在问题,经常得修改,非常害怕搞不好就那么崩了),希望使用者和开发者多多完善它们,功德无量啊,:)
说了这么多,我想还是blitz比较合适,首先是需要它的稳定和性能,至于其中没有的算法,只好参照别人的东西自己写了,
再加上Boost中的blas库,提供了Vector,Matrix的类型,还有三角矩阵,对称矩阵,稀疏矩阵等,里边的稀疏矩阵采用了类似map的结构,看模板的东西真的好累,里边的vector expression,matix expression没有看太明白它们的结构,有时间再慢慢看代码了,它的例子倒是很简练的
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sinkay/archive/2004/09/16/106238.aspx
C++计算几何算法库 开发者:http://www.cs.uu.nl/CGAL/
C++矩阵计算库 开发者:http://www.osl.iu.edu/research/mtl/
DifEqu 开发者:http://www.math.u-szeged.hu/~makay/difequ/difequ.htm
简介: 数值方法解微分方程软件
ESBStats 开发者:ESB Consultancy
http://free.prohosting.com/~sxjm/software/url=http:/www.esbconsult.com.au/
简介: 一种统计分析软件
ExacMath 开发者:Floating Point Software http://www.fptsoftware.com/
简介: C++高精度函数计算库
EViews 开发者:GMS http://www.eviews.com/
简介: 计量经济学软件包
web资源: http://time.dufe.edu.cn/jiliangruanjian/
Maple CLIFFORD代数计算包 开发者:http://www.math.tntech.edu/rafal/cliff3/
Stata 开发者:StataCorp LP. http://www.stata.com/
简介: Stata作为一个小型的统计软件,其统计分析能力远远超过了SPSS,在许多方面也超过了SAS!由于Stata在分析时是将数据全部读入内存,在计算全部完成后才和磁盘交换数据,因此计算速度极快(一般来说,SAS的运算速度要比SPSS至少快一个数量级,而Stata的某些模块和执行同样功能的SAS模块比,其速度又比SAS快将近一个数量级!)Stata也是采用命令行方式来操作,但使用上远比SAS简单。其生存数据分析、纵向数据(重复测量数据)分析等模块的功能甚至超过了SAS。用Stata绘制的统计图形相当精美,很有特色。在长远趋势上,Stata有超越SAS的可能(据消息灵通人士透露:在SAS的老家--北卡,真正搞生物统计的人青睐的反而是Stata!)。Stata的另一个特点是他的许多高级统计模块均是编程人员用其宏语言写成的程序文件(ADO文件),这些文件可以自行修改、添加和下载。用户可随时到Stata网站寻找并下载最新的升级文件。事实上,Stata的这一特点使其成为了几大统计软件中升级最多、最频繁的一个。Stata最大的缺点应该是数据接口太简单,实际上只能读入文本格式的数据文件;其数据管理界面也过于单调。
web资源: http://time.dufe.edu.cn/jiliangruanjian/