MakeSchurr in TMatrixDEigen


I’m using TMatrixDEigen to find the eigenvalues of a TMatrixD

my code looks like this:

TMatrixD S = TMatrixD(3,3);
TMatrixDEigen * Sbis = NULL; 
TMatrixD VP= TMatrixD(3,3);

/* put something in S */

Sbis = new TMatrixDEigen(S);
VP = Sbis->GetEigenValues();

basically it works, but i sometimes get an error message :

TMatrixDEigen::MakeSchur(…) seems to be the function that triangularize the original matrix via a schur transformation to get the eigenvalues.

my concern is that this function doesn’t give any feedback on what happen in case of such an error and what may have caused it.

In my particular case, “S” is a generalized sphericity matrix, which eigenvalues are used to compute a few event shape variables (since i haven’t found so far something already implemented)

well, can someone help me to get along with this problem ? (avoid makeschurr error or find a nice eventshape program) thanks a lot in advance
all the best


It appears that this error is due to a vanishing determinant of the input matrix.

Hi Ambroise,

The MakeSchurr routine is a real “blackbox” for me with some nice ad-hoc operations
by Wilkinson and MatLab. I can not give you advice when the input matrix is
ill-conditioned and the triangulation scheme stops working.

Calculating the determinant is not a good indicator since scaling the identity matrix
can also give a vanishing number. More useful could be the Condition number of the
matrix (see, section
condition number).
Try to find a condition number for your matrices above which the MakeSchurr
routine does not converge.

  • Eddy