【问题标题】:Matrix Template Library matrix inversion矩阵模板库矩阵求逆
【发布时间】:2008-12-03 15:56:10
【问题描述】:

我正在尝试使用 Boost boost_1_37_0 和 MTL mtl4-alpha-1-r6418 版本对矩阵求逆。我似乎无法找到矩阵求逆代码。我搜索了一些示例,它们似乎引用了上述版本中似乎缺少的 lu.h。有什么提示吗?

@Matt 建议复制 lu.h,但这似乎来自 MTL2 而不是 MTL4。我在用 VS05 或更高版本编译 MTL2 时遇到问题。

那么,知道如何在 MTL4 中进行矩阵求逆吗?

更新:我想我更了解马特,我将前往 this ITL path

【问题讨论】:

    标签: c++ math stl boost linear-algebra


    【解决方案1】:

    看起来您使用的是lu_factor,然后是lu_inverse。不过,我不记得您与枢轴有什么关系。来自documentation

    是的,就像你说的,看起来他们的文档说你需要 lu.h,不知何故:

    如何反转矩阵?

    你应该问的第一个问题 你自己是不是真的想 计算矩阵的逆或如果 你真的想解决一个线性 系统。求解线性系统 方程,没有必要 显式计算矩阵逆。 反而更有效率 计算的三角因子 矩阵,然后执行前向和 倒三角求解 因素。更多关于线性求解 系统如下。如果你真的 想要反转一个矩阵,有一个 mtl/lu.h 中的函数lu_inverse()

    没有别的可以看lu.h on their site

    【讨论】:

    • 谢谢。是的,我正在尝试制作/移植 lu.h 我发现,但它似乎是一个不同的版本,我的线性 al 很生疏。
    【解决方案2】:

    我从未在矩阵数学中使用过 boost 或 MTL,但我使用过 JAMA/TNT

    此页面http://wiki.cs.princeton.edu/index.php/TNT 展示了如何对矩阵求逆。基本方法与库无关:

    1. 将矩阵 M 分解为 XY,其中 X 和 Y 是适当的因式分解(LU 可以,但为了数值稳定性,我认为您可能需要使用 QR 或 SVD)。

    2. 求解 I = MN = (XY)N 得到 N,前提是 M 已被分解;图书馆应该有一个例程。

    【讨论】:

      【解决方案3】:

      在 MTL4 中使用这个:

      mtl::matrix::inv(Matrix const &A, MatrixOut &Inv);
      

      这是api的链接。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-02
        • 1970-01-01
        • 2013-05-05
        • 2011-08-30
        • 2017-11-24
        • 2019-02-08
        • 1970-01-01
        • 2013-11-11
        相关资源
        最近更新 更多