Is there a way to get the reduced row echelon form of an instance of one or all of the TMatrix classes? If not, is there another way to get Root to solve a system of equations without using a matrix?


who would have thought that rref stands for reduced row echelon form :laughing:

Yes, we have in the linear algebra package an extensive set of tools to
solve linear equations, going beyond Gaussain elimination (rref) .
They all derive from the TDecompBase class .

TDecompLU : general dens matrix
TDecompBK : symmetric dense matrix
TDecompSVD : using single value decomposition
TDcompChol : symmetric positive def matrix
TDecompQRH : QR decomposition
TDecompSparse : sparse matrices

They all try to get the matrix in some triangular form making
forward/backward substitution easy .

Methods in common are :

virtual Bool_t Solve ( TVectorD &b) = 0;
virtual TVectorD Solve (const TVectorD& b,Bool_t &ok) = 0;
virtual Bool_t Solve ( TMatrixDColumn& b) = 0;
virtual Bool_t TransSolve ( TVectorD &b) = 0;
virtual TVectorD TransSolve (const TVectorD &b,Bool_t &ok) = 0;
virtual Bool_t TransSolve ( TMatrixDColumn& b) = 0;

virtual Bool_t MultiSolve (TMatrixD &B);

For each method one simply does first TDecompX(A) for matrix A
and then apply any of the above methods .