Re: [eigen] Cholesky Decompositon

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


Dear Adrien, 
thank you for your kind and precise reply. 
I tried to invoke the info method and I get exactly what you reported. I would therefore like to ask you the following. 

In the llt() method, if a problem of any nature were encountered, an exception would not be raised, but the matrix L would be terminated with the elements of the initial matrix.
Is this correct?

Thank you in advance

Il giorno mar 14 apr 2020 alle ore 15:00 Adrien Escande <adrien.escande@xxxxxxxxx> ha scritto:
Dear Tommaso,

calling the method info() on your LLT object in this case should return Eigen::ComputationInfo::NumericalIssue. It's not because the code didn't crash that you can say the decomposition arrived at a result. Success is conveyed by info() and there is no exception raised upon failure.
From a quick look a the code, llt() stops prematurely if it encounters a pivot that is <= 0. The part of the resulting L matrix up to this point will be "correct", but all the rows after should simply be (part of) the rows of your initial matrix.

Best regards,
Adrien

On Tue, Apr 14, 2020 at 7:35 PM Tommaso Ferrari <tomferri93@xxxxxxxxx> wrote:
Dear all,
I was analyzing Cholesky's decomposition algorithm on a non positive definite matrix. It is a 3*3 matrix, whose eigenvalues are -29.5, 2, 30.5. 
I noticed that the llt() method produces a result even if, obviously, the reconstruction of the starting matrix is not correct (due to the fact that the input matrix is not positive definite). 
I would like to know if, in general, given a non positive definite matrix, the llt() method still arrives at a result or if there may be exceptions or errors. 
How does the decomposition proceed, having as input a non positive definite matrix? Are pseudo method (pseudo determinant, pseudo inverse) used?
Thanks for your attention and response

Tommaso 


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/