Re: Replacement for TMatrixD::InvertPosDef()

From: Edmond Offermann <>
Date: Wed, 19 Jan 2005 08:26:13 -0800 (PST)

Hi Pierre-Luc,

Yes, since version 4.0 InvertPosDef has been removed from the TMatrixD/F
classes . It could only invert symmetric posdef members and for the others
an error message was produced; so not really a good design .

In version 4.0x a whole new linear algebra package was introduced, which is nearly completely backward compatible .......

We now have seperate classes for general/dense (TMatrixD), symmetric (TMatrixDSym)
or sparse (TMatrixDSparse) matrices . You can invoke for TMatrixD and TMatrixDSym
Invert() of InvertFast() which uses TDecompLU and TDecompBK internally ,
thereby exploiting the structure of the underlying matrix .

In case of a positive-definite symmetric matrix, you can go one step further and use
TDecompChol (Cholesky decomposition) which is actually the algorithm of InvertPosDef .

To get an idea of all the new possibilties have a look at the tutorial invertMatrix.C

In summary, if you want to keep using a Cholesky decomposition (and you should)
cahnge your matrix from TMatrixD to TMatrixDSym and use the TDecompChol class to invert it .

(In case you wonder, we could have defined a TMatrixDSymPosDef class with its
 own Invert() function but that was thought to be one class too much....)


> Hi,
> TMatrixD::InvertPosDef() is no longer existing in ROOT. What is
> replacing
> it? I need to inverse a covariance matrix, InvertPosDef() was perfect
> to inverse it properly...
> Thanks!
> Piere-Luc Drouin
> Carleton University
Received on Wed Jan 19 2005 - 17:26:20 MET

This archive was generated by hypermail 2.2.0 : Tue Jan 02 2007 - 14:45:04 MET