|Re: [eigen] request for help: 4x4 matrix inverse|
[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]
Hm, just one remark: On Monday 14 April 2008 19:50:47 Konstantinos Margaritis wrote: > We partition the matrix in 4 2x2 matrices: > > M= | P Q | > > | R S | > > where P = | a1 a2 |, Q = | a3 a4 |, R = | c1 c2 |, S = | c3 c4 | > > | b1 b2 | | b3 b4 | | d1 d2 | | d3 d4 | > > (actually the method is generic for any NxM matrix, but it becomes > quite more complicated in these cases). > So, M's determinant is calculated thus: > > detM = detP * det(S - R*P1*Q) > > ( P1 = P^(-1) ) > > (so if detP = 0, detM = 0 and M has no inverse, but detP is calculated > in just one step!) I don't agree with the last sentence: it is easy to find examples where detP=0 and detM is nonzero. For example, M= (1 1 0 0) (1 1 1 0) (0 1 1 0) (0 0 0 1) this matrix M is invertible, but its topleft 2x2 block is not. I think that your formula works when P is invertible, but doesn't allow to conclude anything when P is not. But that's not a problem for me since what I really need is the 4x4 inversion and for this I think that your method will work great -- implementing it right now. For 4x4 determinant, I think that the method I have in LU/Determinant.h is even faster since it does only 30 muls and zero divs -- and so in particular, zero conditional branching. Cheers, Benoit
Description: This is a digitally signed message part.
|Mail converted by MHonArc 2.6.19+||http://listengine.tuxfamily.org/|