矩阵模板库矩阵求逆

时间:2008-12-03 15:56:10

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

我正在尝试使用版本Boost boost_1_37_0和MTL mtl4-alpha-1-r6418来反转矩阵。我似乎无法找到矩阵反转代码。我用谷歌搜索了一些例子,它们似乎引用了上面版本中似乎缺失的lu.h。任何提示?

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

那么,有没有想过如何在MTL4中进行矩阵求逆?

更新:我认为我更了解马特,我正在向前迈进this ITL path

3 个答案:

答案 0 :(得分:4)

您似乎使用lu_factor,然后使用lu_inverse。不过,我不记得你与枢轴有什么关系。来自documentation

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

  

如何反转矩阵?

     

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

如果不出意外,您可以查看lu.h on their site

答案 1 :(得分:0)

我从未使用过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已被分解;图书馆应该有一个常规。

答案 2 :(得分:0)

在MTL4中使用此:

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

以下是api的链接。