【发布时间】:2010-03-19 01:22:56
【问题描述】:
我需要在我的程序中求解一个线性方程组。是否有一个简单的 C++ 线性代数库,最好由不超过几个头文件组成?我已经找了将近一个小时,所有我发现的都需要搞乱Linux,在MinGW等中编译DLL等等(我使用的是Visual Studio 2008。)
【问题讨论】:
-
我喜欢这个问题,它对我很有用。这对我很有建设性......
标签: c++ linear-algebra
我需要在我的程序中求解一个线性方程组。是否有一个简单的 C++ 线性代数库,最好由不超过几个头文件组成?我已经找了将近一个小时,所有我发现的都需要搞乱Linux,在MinGW等中编译DLL等等(我使用的是Visual Studio 2008。)
【问题讨论】:
标签: c++ linear-algebra
我认为 Eigen 是您正在寻找的。p>
http://eigen.tuxfamily.org/index.php?title=Main_Page
它是一个只有头文件的库,可以在许多编译器上编译。它甚至使用奇异的汇编来加快数学运算。
这是展示线性求解器 api 的页面。
http://eigen.tuxfamily.org/dox-2.0/TutorialAdvancedLinearAlgebra.html
它有几个带有简单 api 的求解器。
【讨论】:
Boost 有一些基本的线性代数。
【讨论】:
您可以使用LAPACK 的C++ bindings。一个快速的 google 出现了 this link 到一些 LAPACK for Windows 库。不过,这取决于您的系统有多大。
【讨论】:
我是Armadillo 的忠实粉丝,但根据 end of the download page:
窗户
开发和测试 犰狳目前主要完成 在类 UNIX 平台上,但是有 应该很少或没有平台 具体代码。虽然初步测试 是在 Windows 机器上完成的, 开发人员有兴趣听到 犰狳在更多方面的表现如何 彻底的测试。
如果您在使用“MS”时遇到问题 Visual C++ 2008 速成版' 编译器(由于其不完整 支持 C++ 标准),您可以 想尝试以下替代方案 免费编译器:
- 英特尔的 C++ 编译器
- GCC(MinGW 的一部分)
- GCC(CygWin 的一部分)
值得一试,因为这是一个经过精心设计(并且大部分是模板化)的库。
否则,不妨试试Eigen2,它列出了您的编译器支持。
编辑:作为对评论的回应,犰狳并不需要 Lapack,但使用 Lapack 效果更好(使用调整后的 Blas 效果更好):
问:我还需要哪些其他库才能充分利用 Armadillo?
A:犰狳可以在没有外部库的情况下工作。不过建议 安装 LAPACK 和 ATLAS 库以获得附加功能。 Armadillo 将尽可能使用 ATLAS 例程代替 LAPACK。问:如果没有 LAPACK/ATLAS,犰狳的工作情况如何?
A: 基本功能将可用(例如矩阵加法和乘法), 但是像特征分解这样的东西不会。矩阵乘法(主要是 对于大矩阵)不会那么快。
【讨论】: