|
Feel++ 0.91.0
|
Singular Value Decomposition of a rectangular matrix. More...
#include <svd.hpp>
Public Types | |
Typedefs | |
| typedef MatrixA::value_type | value_type |
| typedef MatrixA | matrix_type |
|
typedef boost::numeric::ublas::vector < value_type > | vector_type |
Public Member Functions | |
Constructors, destructor | |
| SVD (matrix_type const &__A) | |
| ~SVD () | |
Accessors | |
| matrix_type const & | U () const |
| matrix_type const & | V () const |
| vector_type const & | S () const |
| value_type | conditionNumber () const |
| void | conditionNumber (value_type &__max, value_type &__min) const |
Singular Value Decomposition of a rectangular matrix.

where matrices
and
are orthogonal and Sig is a digonal matrix.
The singular value decomposition is performed by constructing an SVD object from an M*N matrix A with M>=N (that is, at least as many rows as columns). Note, in case M > N, matrix Sig has to be a M*N diagonal matrix. However, it has only N diag elements, which we store in a 1:N Vector sig.
Algorithm Bidiagonalization with Householder reflections followed by a modification of a QR-algorithm. For more details, see G.E. Forsythe, M.A. Malcolm, C.B. Moler Computer methods for mathematical computations. - Prentice-Hall, 1977 However, in the present implementation, matrices U and V are computed right away rather than delayed until after all Householder reflections.
| value_type Feel::SVD< MatrixA >::conditionNumber | ( | ) | const [inline] |
Computes
which represents the condition number of the matrix that was decomposed in singular values
| vector_type const& Feel::SVD< MatrixA >::S | ( | ) | const [inline] |
Referenced by Feel::SOrth< MatrixA >::SOrth().
| matrix_type const& Feel::SVD< MatrixA >::U | ( | ) | const [inline] |
| matrix_type const& Feel::SVD< MatrixA >::V | ( | ) | const [inline] |
1.7.4