template<class Mthd, class Mat> Mat decomp(const Mat & m);
LU for Lower-Upper triangular decomposition.Bareiss for Lower-Upper triangular decomposition based on Bareiss method. It applies the following pivoting scheme:
where
is the transformed matrix at step
and
is the initial matrix. At the end of this process, after some permutation of the rows, the matrix is upper triangular. If A is a square matrix, the last entry
on the diagonal at the end of the process is the determinant of the matrix
. Moreover, if
has its coefficients in a ring, it is the same for the matrices
, since the previous division is exact
QR for Orthogonal-Upper triangular decomposition.matrix_t T = Decomp<LU>(M); matrix_t R = Decomp<QR>(M);
synaps/linalg/decomp.h
where
and
are
and
matrices. The result is a
matrix. On can use the following methods
matrix_t B = ...; matrix_t X = solve<LU>(A,B); matrix_t Y = solve<LS>(A,B);
synaps/linalg/solve.h
LU for Gauss method uses classical pivoting techniques (ie. LU decomposition) to compute the determinant.
synaps/linalg/Det.h
Theorem: [GLVL96] For a real matrix of size , there exists two orthogonal matrices
such that
|
Definition: For a matrix , the numerical rank of A is defined by:
|
Theorem: [GLVL96] If is of rank and then
|
The singular value decomposition of a matrix
is the decomposition of the form
where
and
are orthognal matrices
,
and
is a diagonal matrix such that
. The values
are called the singular values of
.
vector_t s = Svd(m);
synaps/linalg/svd.h
. Thus if
then
As a result, in order to determine the rank of a matrix
, we find the singular values
so that
The function
Rank(A);
.
synaps/linalg/rank.heigen and eigen_vect. They also provide generalised eigenvalues and eigenvectors, for pairs of matrices (a,B). If the internal representation of type lapack::rep2d<double>, the routine dgeeg or dgegv are called. VectDse<std::complex<double> > v = eigen(A); VectDse<double> w = eigen(A, Real()); VectDse<double> w = eigen(A,B);
synaps/linalg/eigen.h
synaps/linalg/FFT.h ![]() |