在哪里可以获得C/ c++的免费数学库
Where to get free math libraries for C/C++
是否有免费的C/c++库可以做matlab所做的函数类型-我的意思是复杂的东西,如离散拉普拉斯等?在matlab中创建某种接口并构建自己的库是最好的选择吗?
谢谢
你看过Boost.Math吗?http://www.boost.org/doc/libs/1_46_1/libs/math/doc/html/index.html
如果你是在windows上,有一个非常容易使用的安装程序由BoostPro:http://www.boostpro.com/download/
如果你想要的东西是matlab克隆但免费,你可以使用Octave http://www.gnu.org/software/octave/
我没有在c++程序中使用它,但它显然有一个c++ API:
http://octave.sourceforge.net/doxygen/html/index.html根据你想做的事情,有不同的软件包可用。
任意精度
- 主要是整数:GMP, MPIR(类似的代码库,MPIR有VC构建)
- 花车:MPFR
- 复杂:MPC
专家:
- Number Theory: Flint
- 线性代数:Boost Numeric uBLAS
- pde: libMesh 计算流体动力学:OpenFoam
- 图论:Boost Graph
一般:
- TNT(是lapack++ (TNT=do everything, lapack++ =Linear Alg.)
- SciMath(商业)
- GNU科学图书馆
,这只是少数。我没有重复其他人列出的libpari
。
如果你想知道,Maple, Mathematica, Matlab等都使用GNU MP进行任意精度计算。
PARI可能是一个不错的选择,尽管我不熟悉使用它:
PARI官方网站
PARI是一个C库,如果你想要一个独立的软件,他们有PARI- gp
以下是上述网站对PARI的描述:
PARI/GP是一种应用广泛的计算机为快速代数系统设计数论中的计算因式分解,代数分解理论,椭圆曲线…),而且包含了大量的其他用于计算的有用函数数学实体,例如矩阵,多项式,幂级数,代数数等等,还有很多超越函数。PARI也是作为C库提供更快的计算。
希望对大家有帮助!
注:据说Octave函数可以从c++中调用,这可能是MATLAB的一个很好的替代。
看看armadillo,它可以简化您对矩阵的处理。那么为了解偏微分方程你就得自己动手了。明确地构造你的拉普拉斯矩阵,并以你想要的方式求解它。
也有英特尔MKL(不是免费的),它增加了一些价值:迭代求解器(GMRES, BCG)和一些黑盒,用于解决简单域(立方体和球体)上的拉普拉斯/泊松方程。
我使用OpenCV进行大量图像处理和矩阵操作,这通常是我使用matlab的目的。
http://opencv.willowgarage.com/wiki/可能是多余的,这取决于你想做什么样的数学,但它对计算机视觉很好。
GNU Scientific Library是C和c++程序员的免费数值库。
使用编码器工具箱(需要MATLAB R2011a),您还可以将MATLAB代码转换为C或c++。
你可以使用octave runtime:
http://en.wikipedia.org/wiki/GNU_Octave C.2B.2B_Integration
- 如何在cpp中删除(免费)多维结构内存?
- 存储在堆分配向量中的指针的免费存储
- 如何在C++非托管/本机 DLL 中从注册免费 COM C# 托管 DLL 创建 COM 对象
- 应用地址清理器后,免费无效指针消失
- 为什么用绕道钩住堆免费对删除/免费不起作用?
- std::atomic中的任何内容都是免费等待的
- 免费图像写入像素
- 优点和缺点 在类内为大型项目定义的内联朋友助手免费函数
- 全球免费给出一个错误.调试器不解释
- 我应该只在免费商店上为一次调用创建对象吗?
- 由PostMessage发送的来自c++的C ++的免费HBITMAP
- 从命令行构建一个.sln / .vcxproj项目,并使用Visual C 的免费版本构建
- C++自动内存 malloc 和免费覆盖问题
- 使用线程和静音时,双免费或损坏(!prev)错误
- 使用lambda在功能指针铸造时双免费
- 将 C 样式字符串复制到免费存储上分配的内存中
- 我很难修复我认为是双重免费的东西
- Malloc,免费和多个指针,它是如何工作的
- 如何正确使用和免费的ASN1C sequence_of
- TBB免费图像lambda阵列比较错误