Armadillo:matrix.i(true)vs matrix.i() - 一个是逻辑错误,另一个不是?

时间:2013-03-24 14:40:04

标签: c++ armadillo

输入矩阵如下所示:

[ 1 2 4 ]
[ 4 5 6 ]
[ 7 8 9 ]

(MAT1)

Wolfram Alpha confirms it has an inverse.使用matrix.i()(这意味着它使用快速反转)产生近似正确的结果

[  1.0000 -4.6667  2.6667 ]
[ -1.0000  6.3333 -3.3333 ]
[  1.0000 -2.0000  1.0000 ]

(MAT2)

但是通过编写matrix.i(true)来启用慢速模式会导致它抛出logic_error有什么理由会这样做吗?




我试图打开它的原因是将反转矩阵乘以

的向量
[ 15 ]
[ 24 ]
[ 35 ]

(MAT3)

产生错误的答案

[ -3.6667 ]
[ 20.3333 ]
[  2.0000 ]

(MAT4)

when it should be this

[ -3.6667 ]
[  5.3333 ]
[  2.0000 ]

(mat5)

在乘法之前立即检查确认输入(mat3)是正确的,这让我相信快速反转创建了一个不正确的矩阵作为输出(mat4而不是mat5)< / em>的

......现在我想到了,快速逆是正确的,没有理由不正确......这是一个窘境。

主要问题是,如上所述,

任何原因matrix.i(true)导致逻辑错误而matrix.i()没有?

0 个答案:

没有答案