TMatrixDEigen gives 'too many iterations'?

Hello,

What could causes the TMatrixDEigen method to exceed the 50 iterations allowed? I am diagonalizing a covariance matrix with 2e4 elements, and I often get this warning. I am worried it means my results are not accurate.

Is it possible to raise this limit, or lower the tolerance for TMatrixDEigen?

The SVD class would not decompose my matrices, even though Matlab was able to do it on the same data. I also found errors with the .Invert method. I would prefet to use SVD, but I could not raise the iterative limit or find a way to get it to converge.

What are the best suggestions for diagonalization, inversion, or decomposition of matrices of this size? There is a considerable range in the values of the elements.

Hi,

How is your matrix, symmetric or just a simple square matrix ? Is it also sparse ?
Depending on the type of matrix you can decide also the algorithm to use. In Principle TMatrixDEigen should work, if not maybe save the matrix in a ROOT file and post it, so the problem can be investigated

Lorenzo

[quote=“moneta”]Hi,

How is your matrix, symmetric or just a simple square matrix ? Is it also sparse ?
Depending on the type of matrix you can decide also the algorithm to use. In Principle TMatrixDEigen should work, if not maybe save the matrix in a ROOT file and post it, so the problem can be investigated

Lorenzo[/quote]

It is a symmetric square matrix of 144x144. There are actually many of these that I diagonalize.

Does it matter if there are zeroes on the diagonal?

Hi,

Why not use the appropriate eigen analysis class: TMatrixDSymEigen ?

  • Eddy