12 #ifndef ROOT_TDecompSVD 13 #define ROOT_TDecompSVD 21 #ifndef ROOT_TDecompBase const TVectorD & GetSig()
virtual void Det(Double_t &d1, Double_t &d2)
Matrix determinant det = d1*TMath::Power(2.,d2)
TVectorT< Element > & ResizeTo(Int_t lwb, Int_t upb)
Resize the vector to [lwb:upb] .
static Bool_t Bidiagonalize(TMatrixD &v, TMatrixD &u, TVectorD &sDiag, TVectorD &oDiag)
Bidiagonalize the (m x n) - matrix a (stored in v) through a series of Householder transformations ap...
static void Diag_3(TMatrixD &v, TMatrixD &u, TVectorD &sDiag, TVectorD &oDiag, Int_t k, Int_t l)
Step 3 in the matrix diagonalization.
virtual Bool_t TransSolve(TVectorD &b)
Solve A^T x=b assuming the SVD form of A is stored . Solution returned in b.
void Print(Option_t *opt="") const
Print class members.
Decomposition Base class.
double inv(double x)
For comparisons.
virtual void SetMatrix(const TMatrixD &a)
Set matrix to be decomposed.
virtual Int_t GetNcols() const
static Bool_t Diagonalize(TMatrixD &v, TMatrixD &u, TVectorD &sDiag, TVectorD &oDiag)
Diagonalizes in an iterative fashion the bidiagonal matrix C as described through sDiag and oDiag...
Single Value Decomposition class.
#define ClassDef(name, id)
virtual TVectorD Solve(const TVectorD &b, Bool_t &ok)
virtual Bool_t Decompose()
SVD decomposition of matrix If the decomposition succeeds, bit kDecomposed is set ...
static void SortSingular(TMatrixD &v, TMatrixD &u, TVectorD &sDiag)
Perform a permutation transformation on the diagonal matrix S', so that matrix S'' = U''^T ...
virtual TVectorD TransSolve(const TVectorD &b, Bool_t &ok)
Bool_t TestBit(UInt_t f) const
virtual Int_t GetNrows() const
virtual Bool_t Solve(TVectorD &b)
Solve Ax=b assuming the SVD form of A is stored .
static void Diag_1(TMatrixD &v, TVectorD &sDiag, TVectorD &oDiag, Int_t k)
Step 1 in the matrix diagonalization.
const TMatrixD GetMatrix()
Reconstruct the original matrix using the decomposition parts.
virtual const TMatrixDBase & GetDecompMatrix() const
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
virtual Double_t Condition()
Matrix condition number.
TDecompSVD & operator=(const TDecompSVD &source)
Assignment operator.
static void Diag_2(TVectorD &sDiag, TVectorD &oDiag, Int_t k, Int_t l)
Step 2 in the matrix diagonalization.