C ++中的线性方程组?

时间:2010-03-19 01:22:57

标签: c++ linear-algebra

我需要在我的程序中解决一个线性方程组。是否有一个简单的C ++线性代数库,最好只包含几个标题?我一直在寻找将近一个小时,而我发现的所有内容都需要弄乱Linux,在MinGW中编译DLL等等。(我使用的是Visual Studio 2008。)

4 个答案:

答案 0 :(得分:15)

我认为Eigen正是您所寻找的。

http://eigen.tuxfamily.org/index.php?title=Main_Page

它是一个仅头文件库,可在许多编译器上编译。它甚至使用奇异的装配来加快数学运算速

这是显示线性求解器api的页面。

http://eigen.tuxfamily.org/dox-2.0/TutorialAdvancedLinearAlgebra.html

它有一些简单的api求解器。

答案 1 :(得分:8)

Boost有一些基本的线性代数。

答案 2 :(得分:5)

您可以使用C++ bindingsLAPACK。一个快速谷歌出现了this link到Windows库的一些LAPACK。根据您的系统的大小,这可能会有点过分。

答案 3 :(得分:2)

我是Armadillo的忠实粉丝,但你的编译器可能是一个问题 end of the download page

  

Windows

     

开发和测试   到目前为止,犰狳主要完成了   然而,在类似UNIX的平台上   应该是很少或没有平台   具体代码。虽然进行了初步测试   是在Windows机器上完成的   开发人员有兴趣听取   犰狳的工作情况如何   彻底的测试。

     

如果您在使用'MS时遇到问题   Visual C ++ 2008速成版'   编译器(由于其不完整   你可能会支持C ++标准)   想尝试以下替代方案   免费编译器:

     
      
  • 英特尔的C ++编译器
  •   
  • GCC(MinGW的一部分)
  •   
  • GCC(CygWin的一部分)
  •   

值得一试,因为这是一个定义明确的(主要是模板化的)库。

否则,可以尝试将Eigen2列为支持的编译器。

编辑:为了回应评论,Armadillo没有要求 Lapack,但是使用它更好(并且更好地使用调优的Blas):

  问:我需要哪些其他图书馆才能充分利用犰狳?
  答:犰狳可以在没有外部库的情况下工作。但是建议      安装LAPACK和ATLAS库以获得更多功能。      犰狳将尽可能使用ATLAS例程来代替LAPACK。

     问:如果没有LAPACK / ATLAS,犰狳会如何运作?
  答:基本功能可用(例如矩阵加法和乘法),      但是像特征分解这样的东西不会。矩阵乘法(主要是      对于大型矩阵来说,速度不会那么快。