library: libMatrix #include "TDecompBK.h" |
TDecompBK
class description - source file - inheritance tree (.pdf)
protected:
virtual const TMatrixDBase& GetDecompMatrix() const
public:
TDecompBK()
TDecompBK(Int_t nrows)
TDecompBK(Int_t row_lwb, Int_t row_upb)
TDecompBK(const TMatrixDSym& m, Double_t tol = 0.0)
TDecompBK(const TDecompBK& another)
virtual ~TDecompBK()
static TClass* Class()
virtual Bool_t Decompose()
virtual void Det(Double_t&, Double_t&)
virtual Int_t GetNcols() const
virtual Int_t GetNrows() const
const TMatrixD& GetU() const
void Invert(TMatrixDSym& inv)
TMatrixDSym Invert()
virtual TClass* IsA() const
TDecompBK& operator=(const TDecompBK& source)
virtual void Print(Option_t* opt = "") const
virtual void SetMatrix(const TMatrixDSym& a)
virtual void ShowMembers(TMemberInspector& insp, char* parent)
virtual Bool_t Solve(TVectorD& b)
virtual TVectorD Solve(const TVectorD& b, Bool_t& ok)
virtual Bool_t Solve(TMatrixDColumn& b)
virtual void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
virtual Bool_t TransSolve(TVectorD& b)
virtual TVectorD TransSolve(const TVectorD& b, Bool_t& ok)
virtual Bool_t TransSolve(TMatrixDColumn& b)
protected:
Int_t fNIpiv size of row permutation index
Int_t* fIpiv [fNIpiv] row permutation index
TMatrixD fU decomposed matrix so that a = u d u^T
The Bunch-Kaufman diagonal pivoting method decomposes a real
symmetric matrix A using
A = U*D*U^T
where U is a product of permutation and unit upper triangular
matrices, U^T is the transpose of U, and D is symmetric and block
diagonal with 1-by-1 and 2-by-2 diagonal blocks.
U = P(n-1)*U(n-1)* ... *P(k)U(k)* ...,
i.e., U is a product of terms P(k)*U(k), where k decreases from n-1
to 0 in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1
and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as
defined by IPIV(k), and U(k) is a unit upper triangular matrix, such
that if the diagonal block D(k) is of order s (s = 1 or 2), then
( I v 0 ) k-s
U(k) = ( 0 I 0 ) s
( 0 0 I ) n-k
k-s s n-k
If s = 1, D(k) overwrites A(k,k), and v overwrites A(0:k-1,k).
If s = 2, the upper triangle of D(k) overwrites A(k-1,k-1), A(k-1,k),
and A(k,k), and v overwrites A(0:k-2,k-1:k).
fU contains on entry the symmetric matrix A of which only the upper
triangular part is referenced . On exit fU contains the block diagonal
matrix D and the multipliers used to obtain the factor U, see above .
fIpiv if dimension n contains details of the interchanges and the
the block structure of D . if (fIPiv(k) > 0, then rows and columns k
and fIPiv(k) were interchanged and D(k,k) is a 1-by-1 diagonal block.
If IPiv(k) = fIPiv(k-1) < 0, rows and columns k-1 and -IPiv(k) were
interchanged and D(k-1:k,k-1:k) is a 2-by-2 diagonal block.
TDecompBK()
TDecompBK(Int_t nrows)
TDecompBK(Int_t row_lwb,Int_t row_upb)
TDecompBK(const TMatrixDSym &a,Double_t tol)
TDecompBK(const TDecompBK &another) : TDecompBase(another)
Bool_t Decompose()
void SetMatrix(const TMatrixDSym &a)
Bool_t Solve(TVectorD &b)
Solve Ax=b assuming the BK form of A is stored in fU . Solution returned in b.
Bool_t Solve(TMatrixDColumn &cb)
Solve Ax=b assuming the BK form of A is stored in fU . Solution returned in b.
void Invert(TMatrixDSym &inv)
For a symmetric matrix A(m,m), its inverse A_inv(m,m) is returned .
TMatrixDSym Invert()
For a symmetric matrix A(m,m), its inverse A_inv(m,m) is returned .
void Print(Option_t *opt) const
Inline Functions
void ~TDecompBK()
const TMatrixDBase& GetDecompMatrix() const
Int_t GetNrows() const
Int_t GetNcols() const
const TMatrixD& GetU() const
Bool_t Solve(TMatrixDColumn& b)
Bool_t TransSolve(TVectorD& b)
TVectorD TransSolve(const TVectorD& b, Bool_t& ok)
Bool_t TransSolve(TMatrixDColumn& b)
void Det(Double_t&, Double_t&)
TDecompBK& operator=(const TDecompBK& source)
TClass* Class()
TClass* IsA() const
void ShowMembers(TMemberInspector& insp, char* parent)
void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
Last update: root/matrix:$Name: $:$Id: TDecompBK.cxx,v 1.2 2005/02/15 16:17:09 brun Exp $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
ROOT page - Class index - Class Hierarchy - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.