C++数值计算资源

  [转]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/  

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
第1章 矩阵运算1 1.1 实矩阵相乘1 1.2 复矩阵相乘4 1.3 一般实矩阵求逆8 1.4 一般复矩阵求逆13 1.5 对称正定矩阵的求逆18 1.6 托伯利兹矩阵求逆的特兰持方法21 1.7 求一般行列式的值25 1.8 求矩阵的秩29 1.9 对称正定矩阵的乔里斯基分解与行列式求值33 1.10 矩阵的三角分解36 1.11 一般实矩阵的QR分解41 1.12 一般实矩阵的奇异值分解46 1.13 求广义逆的奇异值分解法61 第2章 矩阵特征值与特征向量的计算75 2.1 求对称三对角阵的全部特征值与特征向量75 2.2 求实对称矩阵全部特征值与特征向量的 豪斯荷尔德变换法80 2.3 求赫申伯格矩阵全部特征值的QR方法88 2.4 求一般实矩阵的全部特征值95 2.5 求实对称矩阵特征值与特征向量的雅可比法102 2.6 求实对称矩阵特征值与特征向量的雅可比过关法109 第3章 线性代数方程组的求解115 3.1 求解实系数方程组的全选主元高斯消去法115 3.2 求解实系数方程组的全选主元高斯\|约当消去法119 3.3 求解复系数方程组的全选主元高斯消去法124 3.4 求解复系数方程组的全选主元高斯\|约当消去法129 3.5 求解三对角线方程组的追赶法135 3.6 求解一般带型方程组139 3.7 求解对称方程组的分解法146 3.8 求解对称正定方程组的平方根法151 3.9 求解托伯利兹方程组的列文逊方法155 3.10 高斯\|赛德尔迭代法161 3.11 求解对称正定方程组的共轭梯度法165 3.12 求解线性最小二乘问题的豪斯荷尔德变换法169 3.13 求解线性最小二乘问题的广义逆法175 3.14 求解病态方程组189 第4章 非线性方程与方程组的求解195 4.1 求非线性方程实根的对分法195 4.2 求非线性方程一个实根的牛顿法198 4.3 求非线性方程一个实根的埃特金迭代法201 4.4 求非线性方程一个实根的试位法204 4.5 求非线性方程一个实根的连分式法206 4.6 求实系数代数方程全部根的QR方法211 4.7 求实系数代数方程全部根的牛顿下山法216 4.8 求复系数代数方程全部根的牛顿下山法225 4.9 求非线性方程组一组实根的梯度法233 4.10 求非线性方程组一组实根的拟牛顿法238 4.11 求非线性方程组最小二乘解的广义逆法246 4.12 求非线性方程一个实根的蒙特卡洛法262 4.13 求实函数或复函数方程一个复根的蒙特卡洛法265 4.14 求非线性方程组一组实根的蒙特卡洛法269 第5章 插值与逼近274 5.1 Lagrange插值274 5.2 连分式插值277 5.3 埃尔米特插值281 5.4 埃特金逐步插值284 5.5 光滑插值288 5.6 第一种边界条件的三次样条函数插值、微商与积分294 5.7 第二种边界条件的三次样条函数插值、微商与积分301 5.8 第三种边界条件的三次样条函数插值、微商与积分307 5.9 二元Lagrange插值314 5.10 最小二乘曲线拟合319 5.11 切比雪夫曲线拟合326 5.12 最佳一致逼近的里米兹方法332 5.13 矩形域的最小二乘曲面拟合337 第6章 数值积分348 6.1 变步长梯形求积法348 6.2 变步长辛卜生求积法351 6.3 自适应梯形求积法353 6.4 龙贝格求积法356 6.5 计算一维积分的连分式法359 6.6 高振荡函数求积法363 6.7 勒让德-高斯求积法368 6.8 拉盖尔-高斯求积法371 6.9 埃尔米特-高斯求积法374 6.10 切比雪夫求积法376 6.11 计算一维积分的蒙特卡洛法379 6.12 变步长辛卜生二重积分法382 6.13 计算多重积分的高斯方法386 6.14 计算二重积分的连分式法391 6.15 计算多重积分的蒙特卡洛法395 第7章 常微分方程组的求解399 7.1 定步长欧拉方法399 7.2 变步长欧拉方法404 7.3 维梯方法409 7.4 定步长龙格-库塔方法414 7.5 变步长龙格-库塔方法419 7.6 变步长基尔方法424 7.7 变步长默森方法430 7.8 连分式法436 7.9 双边法444 7.10 阿当姆斯预报校正法450 7.11 哈明方法456 7.12 特雷纳方法463 7.13 积分刚性方程组的吉尔方法470 7.14 二阶微分方程边值问题的数值解法487 第8章 数据处理494 8.1 随机样本分析494 8.2 一元线性回归分析499 8.3 多元线性回归分析503 8.4 逐步回归分析510 8.5 半对数数据相关521 8.6 对数数据相关525第9章 极值问题的求解529 9.1 一维极值连分式法529 9.2 n维极值连分式法532 9.3 不等式约束线性规划问题538 9.4 求n维极值的单形调优法545 9.5 求约束条件下n维极值的复形调优法552 第10章 复数、多项式与特殊函数的计算562 10.1 复数运算562 10.2 实系数多项式的计算569 10.3 复系数多项式的计算574 10.4 特殊函数的计算581
本光盘是《计算机常用数值计算算法与程序 C++版》一书的配套光盘,盘中包括了书中所有的C++程序源代码文件,每个源程序文件的文件扩展名都使用.cpp形式。这些C++程序已经在微软公司Windows平台下的Virsual C++ 6.0环境下通过。盘中还包括由这些源程序在VC++6.0下生成的可执行文件(文件扩展名为.exe),以及由这些程序运行后产生的结果文件(文件扩展名为.dat)。另外,还包括若干类书中所介绍算法的头文件,由文件扩展名为.h和.inl所组成。 为了方便读者实际应用书中所介绍的算法程序,本光盘专门预创建了VC++6.0的工程,以每一章建立一个工程,一共有16个工程,对应着书中的16章。全部工程包含在一个目录(文件夹)——NumComp下,该目录下一共有17个子目录(文件夹),第一个到第十六个为每章所对应的工程文件夹,命名为ChapXX,XX表示01至16,如Chap05,表示为第五章的程序所建立了工程目录(文件夹),第17个目录(文件夹)名为include,其中存放了本书中算法程序需要的诸头文件。在前十六个目录(文件夹)中除存放了各章所介绍的算法示例C++源程序文件,还包括几个VC++6.0工程所需要的文件,读者可以不用去动它们。在每一个ChapXX目录(文件夹)下,还有一个目录(文件夹):debug,该目录(文件夹)中存放了ChapXX所对应的章中所有算法C++源程序生成的可执行文件和这些程序运行后生成的结果数据文件。除止之外,还有几个是VC++6.0工程所生成的文件,读者可以不用去动它们。 在每一个ChapXX目录(文件夹)下,包括一个这样的文件:ChapX.dsw,X表示1至16这16个阿拉伯数字之一,对应于这X章的工程。当进入到某一这样的目录(文件夹)中,用鼠标双击该文件名,就可以启动VC++6.0程序,并调用了该工程,这是最方便的一种启动VC++6.0的方法之一,下面就可以进行对C++程序的编辑、编译、连接、运行等工作了。具体的操作步骤,可以参阅有关VC++6.0的使用操作手册,或技术手册。 如果读者要自己另外建立VC++6.0的工程及相应的目录(文件夹),可以参阅VC++6.0的使用操作手册,也可阅读《计算机常用数值计算算法与程序 C++版》一书的第一章“概论”中的1.8节“Visual C++ 6.0的编译运行环境”,其中有详细说明。 最后注意,在VC++ 6.0中设置好路径,特别是include目录(文件夹)的路径,否则在编译时会出现找不到头文件的错误,使编译无法正常进行。具体的设置方法请参看本书第1章的相关内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值