我需要在我的程序中解决一个线性方程组。是否有一个简单的C ++线性代数库,最好只包含几个标题?我一直在寻找将近一个小时,而我发现的所有内容都需要弄乱Linux,在MinGW中编译DLL等等。(我使用的是Visual Studio 2008。)
答案 0 :(得分:15)
我认为Eigen正是您所寻找的。 p>
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++ bindings的LAPACK。一个快速谷歌出现了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,犰狳会如何运作?
答:基本功能可用(例如矩阵加法和乘法), 但是像特征分解这样的东西不会。矩阵乘法(主要是 对于大型矩阵来说,速度不会那么快。