14

我需要在我的程序中求解一个线性方程组。是否有一个简单的 C++ 线性代数库,最好由不超过几个头文件组成?我已经找了将近一个小时,所有我发现的都需要在 Linux 上搞乱,在 MinGW 中编译 DLL 等等等等(我使用的是 Visual Studio 2008。)

4

4 回答 4

15

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

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

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

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

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

它有几个带有简单 api 的求解器。

于 2010-03-19T02:02:50.360 回答
7

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

于 2010-03-19T01:28:59.683 回答
5

您可以使用LAPACKC++ 绑定。一个快速的谷歌打开了这个链接到一些 LAPACK for Windows 库。不过,这取决于您的系统有多大,这可能有点过头了。

于 2010-03-19T01:29:22.730 回答
2

我是犰狳的忠实粉丝,但根据下载页面的末尾,您的编译器可能是一个问题 :

视窗

到目前为止,Armadillo 的开发和测试主要在类 UNIX 平台上完成,但是应该很少或没有特定于平台的代码。虽然初步测试是在 Windows 机器上完成的,但开发人员有兴趣了解 Armadillo 在更彻底的测试中的工作情况。

如果您在使用“MS Visual C++ 2008 Express Edition”编译器时遇到问题(由于它对 C++ 标准的支持不完整),您可能需要尝试以下替代免费编译器:

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

值得一试,因为这是一个精心设计的(并且大部分是模板化的)库。

否则,也许尝试Eigen2它将您的编译器列为受支持。

编辑:作为对评论的回应,犰狳不需要Lapack,但可以更好地使用它(并且更好地使用经过调整的 Blas):

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

问:如果没有 LAPACK/ATLAS,犰狳的工作情况如何?
答:基本功能将可用(例如矩阵加法和乘法),但特征分解等功能将不可用。矩阵乘法(主要用于大矩阵)不会那么快。

于 2010-03-19T01:30:11.553 回答