dune-common  2.3.1-rc1
Public Types | Public Member Functions | List of all members
Dune::DenseMatrix< M > Class Template Reference

A dense n x m matrix. More...

#include <dune/common/densematrix.hh>

Inheritance diagram for Dune::DenseMatrix< M >:
Inheritance graph

Public Types

enum  { blocklevel = 1 }
 We are at the leaf of the block recursion. More...
 
typedef Traits::derived_type derived_type
 type of derived matrix class More...
 
typedef Traits::value_type value_type
 export the type representing the field More...
 
typedef Traits::value_type field_type
 export the type representing the field More...
 
typedef Traits::value_type block_type
 export the type representing the components More...
 
typedef Traits::size_type size_type
 The type used for the index access and size operation. More...
 
typedef Traits::row_type row_type
 The type used to represent a row (must fulfill the Dune::DenseVector interface) More...
 
typedef Traits::row_reference row_reference
 The type used to represent a reference to a row (usually row_type &) More...
 
typedef Traits::const_row_reference const_row_reference
 The type used to represent a reference to a constant row (usually const row_type &) More...
 
typedef DenseIterator
< DenseMatrix, row_type
Iterator
 Iterator class for sequential access. More...
 
typedef Iterator iterator
 typedef for stl compliant access More...
 
typedef Iterator RowIterator
 rename the iterators for easier access More...
 
typedef row_type::Iterator ColIterator
 rename the iterators for easier access More...
 
typedef DenseIterator< const
DenseMatrix, const row_type
ConstIterator
 Iterator class for sequential access. More...
 
typedef ConstIterator const_iterator
 typedef for stl compliant access More...
 
typedef ConstIterator ConstRowIterator
 rename the iterators for easier access More...
 
typedef row_type::ConstIterator ConstColIterator
 rename the iterators for easier access More...
 

Public Member Functions

row_reference operator[] (size_type i)
 random access More...
 
const_row_reference operator[] (size_type i) const
 
size_type size () const
 size method (number of rows) More...
 
Iterator begin ()
 begin iterator More...
 
Iterator end ()
 end iterator More...
 
Iterator beforeEnd ()
 
Iterator beforeBegin ()
 
ConstIterator begin () const
 begin iterator More...
 
ConstIterator end () const
 end iterator More...
 
ConstIterator beforeEnd () const
 
ConstIterator beforeBegin () const
 
template<class RHS >
DenseMatrixoperator= (const RHS &rhs)
 
template<class Other >
DenseMatrixoperator+= (const DenseMatrix< Other > &y)
 vector space addition More...
 
template<class Other >
DenseMatrixoperator-= (const DenseMatrix< Other > &y)
 vector space subtraction More...
 
DenseMatrixoperator*= (const field_type &k)
 vector space multiplication with scalar More...
 
DenseMatrixoperator/= (const field_type &k)
 vector space division by scalar More...
 
template<class Other >
DenseMatrixaxpy (const field_type &k, const DenseMatrix< Other > &y)
 vector space axpy operation (*this += k y) More...
 
template<class Other >
bool operator== (const DenseMatrix< Other > &y) const
 Binary matrix comparison. More...
 
template<class Other >
bool operator!= (const DenseMatrix< Other > &y) const
 Binary matrix incomparison. More...
 
template<class X , class Y >
void mv (const X &x, Y &y) const
 y = A x More...
 
template<class X , class Y >
void mtv (const X &x, Y &y) const
 y = A^T x More...
 
template<class X , class Y >
void umv (const X &x, Y &y) const
 y += A x More...
 
template<class X , class Y >
void umtv (const X &x, Y &y) const
 y += A^T x More...
 
template<class X , class Y >
void umhv (const X &x, Y &y) const
 y += A^H x More...
 
template<class X , class Y >
void mmv (const X &x, Y &y) const
 y -= A x More...
 
template<class X , class Y >
void mmtv (const X &x, Y &y) const
 y -= A^T x More...
 
template<class X , class Y >
void mmhv (const X &x, Y &y) const
 y -= A^H x More...
 
template<class X , class Y >
void usmv (const field_type &alpha, const X &x, Y &y) const
 y += alpha A x More...
 
template<class X , class Y >
void usmtv (const field_type &alpha, const X &x, Y &y) const
 y += alpha A^T x More...
 
template<class X , class Y >
void usmhv (const field_type &alpha, const X &x, Y &y) const
 y += alpha A^H x More...
 
FieldTraits< value_type >
::real_type 
frobenius_norm () const
 frobenius norm: sqrt(sum over squared values of entries) More...
 
FieldTraits< value_type >
::real_type 
frobenius_norm2 () const
 square of frobenius norm, need for block recursion More...
 
FieldTraits< value_type >
::real_type 
infinity_norm () const
 infinity norm (row sum norm, how to generalize for blocks?) More...
 
FieldTraits< value_type >
::real_type 
infinity_norm_real () const
 simplified infinity norm (uses Manhattan norm for complex values) More...
 
template<class V >
void solve (V &x, const V &b) const
 Solve system A x = b. More...
 
void invert ()
 Compute inverse. More...
 
field_type determinant () const
 calculates the determinant of this matrix More...
 
template<typename M2 >
MAT & leftmultiply (const DenseMatrix< M2 > &M)
 Multiplies M from the left to this matrix. More...
 
template<typename M2 >
MAT & rightmultiply (const DenseMatrix< M2 > &M)
 Multiplies M from the right to this matrix. More...
 
size_type N () const
 number of rows More...
 
size_type M () const
 number of columns More...
 
size_type rows () const
 number of rows More...
 
size_type cols () const
 number of columns More...
 
bool exists (size_type i, size_type j) const
 return true when (i,j) is in pattern More...
 

Detailed Description

template<typename M>
class Dune::DenseMatrix< M >

A dense n x m matrix.

Matrices represent linear maps from a vector space V to a vector space W. This class represents such a linear map by storing a two-dimensional array of numbers of a given field type K. The number of rows and columns is given at compile time.

Template Parameters
MATtype of the matrix implementation

Member Typedef Documentation

template<typename M>
typedef Traits::value_type Dune::DenseMatrix< M >::block_type

export the type representing the components

template<typename M>
typedef row_type::Iterator Dune::DenseMatrix< M >::ColIterator

rename the iterators for easier access

template<typename M>
typedef ConstIterator Dune::DenseMatrix< M >::const_iterator

typedef for stl compliant access

template<typename M>
typedef Traits::const_row_reference Dune::DenseMatrix< M >::const_row_reference

The type used to represent a reference to a constant row (usually const row_type &)

template<typename M>
typedef row_type::ConstIterator Dune::DenseMatrix< M >::ConstColIterator

rename the iterators for easier access

template<typename M>
typedef DenseIterator<const DenseMatrix,const row_type> Dune::DenseMatrix< M >::ConstIterator

Iterator class for sequential access.

template<typename M>
typedef ConstIterator Dune::DenseMatrix< M >::ConstRowIterator

rename the iterators for easier access

template<typename M>
typedef Traits::derived_type Dune::DenseMatrix< M >::derived_type

type of derived matrix class

template<typename M>
typedef Traits::value_type Dune::DenseMatrix< M >::field_type

export the type representing the field

template<typename M>
typedef DenseIterator<DenseMatrix,row_type> Dune::DenseMatrix< M >::Iterator

Iterator class for sequential access.

template<typename M>
typedef Iterator Dune::DenseMatrix< M >::iterator

typedef for stl compliant access

template<typename M>
typedef Traits::row_reference Dune::DenseMatrix< M >::row_reference

The type used to represent a reference to a row (usually row_type &)

template<typename M>
typedef Traits::row_type Dune::DenseMatrix< M >::row_type

The type used to represent a row (must fulfill the Dune::DenseVector interface)

template<typename M>
typedef Iterator Dune::DenseMatrix< M >::RowIterator

rename the iterators for easier access

template<typename M>
typedef Traits::size_type Dune::DenseMatrix< M >::size_type

The type used for the index access and size operation.

template<typename M>
typedef Traits::value_type Dune::DenseMatrix< M >::value_type

export the type representing the field

Member Enumeration Documentation

template<typename M>
anonymous enum

We are at the leaf of the block recursion.

Enumerator
blocklevel 

The number of block levels we contain. This is 1.

Member Function Documentation

template<typename M>
template<class Other >
DenseMatrix& Dune::DenseMatrix< M >::axpy ( const field_type k,
const DenseMatrix< Other > &  y 
)
inline

vector space axpy operation (*this += k y)

Referenced by Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::axpy().

template<typename M>
Iterator Dune::DenseMatrix< M >::beforeBegin ( )
inline
Returns
an iterator that is positioned before the first entry of the vector.
template<typename M>
ConstIterator Dune::DenseMatrix< M >::beforeBegin ( ) const
inline
Returns
an iterator that is positioned before the first entry of the vector.
template<typename M>
Iterator Dune::DenseMatrix< M >::beforeEnd ( )
inline
Returns
an iterator that is positioned before the end iterator of the vector, i.e. at the last entry.
template<typename M>
ConstIterator Dune::DenseMatrix< M >::beforeEnd ( ) const
inline
Returns
an iterator that is positioned before the end iterator of the vector. i.e. at the last element
template<typename M>
Iterator Dune::DenseMatrix< M >::begin ( )
inline
template<typename M>
ConstIterator Dune::DenseMatrix< M >::begin ( ) const
inline

begin iterator

template<typename M>
size_type Dune::DenseMatrix< M >::cols ( ) const
inline
template<typename M>
field_type Dune::DenseMatrix< M >::determinant ( ) const

calculates the determinant of this matrix

template<typename M>
Iterator Dune::DenseMatrix< M >::end ( )
inline
template<typename M>
ConstIterator Dune::DenseMatrix< M >::end ( ) const
inline

end iterator

template<typename M>
bool Dune::DenseMatrix< M >::exists ( size_type  i,
size_type  j 
) const
inline

return true when (i,j) is in pattern

template<typename M>
FieldTraits<value_type>::real_type Dune::DenseMatrix< M >::frobenius_norm ( ) const
inline

frobenius norm: sqrt(sum over squared values of entries)

template<typename M>
FieldTraits<value_type>::real_type Dune::DenseMatrix< M >::frobenius_norm2 ( ) const
inline

square of frobenius norm, need for block recursion

template<typename M>
FieldTraits<value_type>::real_type Dune::DenseMatrix< M >::infinity_norm ( ) const
inline

infinity norm (row sum norm, how to generalize for blocks?)

template<typename M>
FieldTraits<value_type>::real_type Dune::DenseMatrix< M >::infinity_norm_real ( ) const
inline

simplified infinity norm (uses Manhattan norm for complex values)

template<typename M>
void Dune::DenseMatrix< M >::invert ( )

Compute inverse.

Exceptions
FMatrixErrorif the matrix is singular
template<typename M>
template<typename M2 >
MAT& Dune::DenseMatrix< M >::leftmultiply ( const DenseMatrix< M2 > &  M)
inline

Multiplies M from the left to this matrix.

template<typename M>
size_type Dune::DenseMatrix< M >::M ( ) const
inline
template<typename M>
template<class X , class Y >
void Dune::DenseMatrix< M >::mmhv ( const X &  x,
Y &  y 
) const
inline

y -= A^H x

template<typename M>
template<class X , class Y >
void Dune::DenseMatrix< M >::mmtv ( const X &  x,
Y &  y 
) const
inline

y -= A^T x

template<typename M>
template<class X , class Y >
void Dune::DenseMatrix< M >::mmv ( const X &  x,
Y &  y 
) const
inline

y -= A x

template<typename M>
template<class X , class Y >
void Dune::DenseMatrix< M >::mtv ( const X &  x,
Y &  y 
) const
inline

y = A^T x

template<typename M>
template<class X , class Y >
void Dune::DenseMatrix< M >::mv ( const X &  x,
Y &  y 
) const
inline

y = A x

template<typename M>
size_type Dune::DenseMatrix< M >::N ( ) const
inline
template<typename M>
template<class Other >
bool Dune::DenseMatrix< M >::operator!= ( const DenseMatrix< Other > &  y) const
inline

Binary matrix incomparison.

template<typename M>
DenseMatrix& Dune::DenseMatrix< M >::operator*= ( const field_type k)
inline

vector space multiplication with scalar

template<typename M>
template<class Other >
DenseMatrix& Dune::DenseMatrix< M >::operator+= ( const DenseMatrix< Other > &  y)
inline

vector space addition

template<typename M>
template<class Other >
DenseMatrix& Dune::DenseMatrix< M >::operator-= ( const DenseMatrix< Other > &  y)
inline

vector space subtraction

template<typename M>
DenseMatrix& Dune::DenseMatrix< M >::operator/= ( const field_type k)
inline

vector space division by scalar

template<typename M>
template<class RHS >
DenseMatrix& Dune::DenseMatrix< M >::operator= ( const RHS &  rhs)
inline
template<typename M>
template<class Other >
bool Dune::DenseMatrix< M >::operator== ( const DenseMatrix< Other > &  y) const
inline

Binary matrix comparison.

Referenced by Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::operator!=().

template<typename M>
row_reference Dune::DenseMatrix< M >::operator[] ( size_type  i)
inline

random access

template<typename M>
const_row_reference Dune::DenseMatrix< M >::operator[] ( size_type  i) const
inline
template<typename M>
template<typename M2 >
MAT& Dune::DenseMatrix< M >::rightmultiply ( const DenseMatrix< M2 > &  M)
inline

Multiplies M from the right to this matrix.

template<typename M>
size_type Dune::DenseMatrix< M >::rows ( ) const
inline

number of rows

Referenced by Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::axpy(), Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::beforeEnd(), Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::end(), Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::exists(), Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::frobenius_norm(), Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::frobenius_norm2(), Dune::istl_assign_to_fmatrix(), Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::leftmultiply(), Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::mmhv(), Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::mmtv(), Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::mmv(), Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::mtv(), Dune::DenseMatrixHelp::multAssign(), Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::mv(), Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::N(), Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::operator*=(), Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::operator+=(), Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::operator-=(), Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::operator/=(), Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::operator==(), Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::rightmultiply(), Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::size(), Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::umhv(), Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::umtv(), Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::umv(), Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::usmhv(), Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::usmtv(), and Dune::DenseMatrix< FieldMatrix< T, ROWS, COLS > >::usmv().

template<typename M>
size_type Dune::DenseMatrix< M >::size ( ) const
inline
template<typename M>
template<class V >
void Dune::DenseMatrix< M >::solve ( V &  x,
const V &  b 
) const

Solve system A x = b.

Exceptions
FMatrixErrorif the matrix is singular
template<typename M>
template<class X , class Y >
void Dune::DenseMatrix< M >::umhv ( const X &  x,
Y &  y 
) const
inline

y += A^H x

template<typename M>
template<class X , class Y >
void Dune::DenseMatrix< M >::umtv ( const X &  x,
Y &  y 
) const
inline

y += A^T x

template<typename M>
template<class X , class Y >
void Dune::DenseMatrix< M >::umv ( const X &  x,
Y &  y 
) const
inline

y += A x

template<typename M>
template<class X , class Y >
void Dune::DenseMatrix< M >::usmhv ( const field_type alpha,
const X &  x,
Y &  y 
) const
inline

y += alpha A^H x

template<typename M>
template<class X , class Y >
void Dune::DenseMatrix< M >::usmtv ( const field_type alpha,
const X &  x,
Y &  y 
) const
inline

y += alpha A^T x

template<typename M>
template<class X , class Y >
void Dune::DenseMatrix< M >::usmv ( const field_type alpha,
const X &  x,
Y &  y 
) const
inline

y += alpha A x


The documentation for this class was generated from the following file: