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

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

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

更新:我想我更了解马特了,我要往下走 此 ITL 路径.

有帮助吗?

解决方案

看起来你使用lu_factor,然后lu_inverse。我不记得你有什么用枢轴做,虽然。从href="http://www.osl.iu.edu/research/mtl/reference/html/index.html" rel="nofollow noreferrer">文档的

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

  

如何I反矩阵吗

     

在第一个问题,你应该问   你自己是你是否真的想要   计算矩阵的或者如果逆   你真的想解决一个线性   系统。用于解决的线性系统   方程,这是没有必要   明确地计算矩阵求逆。   相反,它是更有效的   计算的三角因素   矩阵,然后执行前向和   与向后三角求解   因素。更多关于求解线性   系统如下。如果你真的   要反转矩阵,有一个   功能lu_inverse()在MTL / lu.h。

如果不出意外,你可以看看 lu.h他们网站

其他提示

我从未使用过 boost 或 MTL 进行矩阵数学,但我使用过 JAMA/梯恩梯.

这一页 http://wiki.cs.princeton.edu/index.php/TNT 展示如何求矩阵逆。基本方法是独立于库的:

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

  2. 求解 N 的 I = MN = (XY)N,前提是 M 已被分解;图书馆应该为此制定一个例行程序。

在MTL4使用这样:

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

下面是将 API 的链接。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top