【问题标题】:System of linear equations in C++? [closed]C ++中的线性方程组? [关闭]
【发布时间】:2010-03-19 01:22:56
【问题描述】:

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

【问题讨论】:

  • 我喜欢这个问题,它对我很有用。这对我很有建设性......

标签: c++ linear-algebra


【解决方案1】:

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

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

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

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

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

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

【讨论】:

  • 我也需要这个!谢谢。
【解决方案2】:

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

【讨论】:

  • 我在文档中找不到关于矩阵求逆或求解线性方程的任何内容。我错过了吗?
  • @Archagon:基本上,Boost 为向量、矩阵和基本 BLAS 功能提供容器(它支持所有三个 BLAS 级别)。对于更高级的线性代数,您可能希望获得一些 LAPACK 的实现。 Boost 有绑定,但它们不在主要发行版中(您必须寻找它们)。您不需要绑定,但它们使事情变得更容易(理论上)。
  • @Archagon,这里是一个使用 boost::ublas::solve github.com/ohhmm/openmind/blob/… 的例子
【解决方案3】:

您可以使用LAPACKC++ bindings。一个快速的 google 出现了 this link 到一些 LAPACK for Windows 库。不过,这取决于您的系统有多大。

【讨论】:

    【解决方案4】:

    我是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: 基本功能将可用(例如矩阵加法和乘法), 但是像特征分解这样的东西不会。矩阵乘法(主要是 对于大矩阵)不会那么快。

    【讨论】:

    • 我试过犰狳。求解线性方程需要LAPACK,需要编译DLL。
    • 不,看我的编辑。 Lapack 更好 但说没有它也可以。我没有尝试过这种配置,因为我有 Lapack...
    • 我也是这么想的,但是每当我使用solve()函数时,它都会告诉我需要安装LAPACK...
    • 注意:犰狳是 fortran 库之上的 c++ 包装器
    • 不是真的。 Armadillo 确实调用了作为接口的 LAPACK 和 BLAS。 Fortran 实现很常见,但绝不是必需的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多