MathTL
 All Classes Functions Variables Typedefs Enumerations
Classes | Public Member Functions
MathTL::InfiniteVector< C, I > Class Template Reference

#include <infinite_vector.h>

Inheritance diagram for MathTL::InfiniteVector< C, I >:
map

List of all members.

Classes

class  const_iterator
class  const_reverse_iterator
struct  decreasing_order

Public Member Functions

 InfiniteVector ()
 InfiniteVector (const InfiniteVector< C, I > &v)
const_iterator begin () const
const_iterator end () const
const_reverse_iterator rbegin () const
const_reverse_iterator rend () const
InfiniteVector< C, I > & operator= (const InfiniteVector< C, I > &v)
void swap (InfiniteVector< C, I > &v)
bool empty () const
void clear ()
bool operator== (const InfiniteVector< C, I > &v) const
bool operator!= (const InfiniteVector< C, I > &v) const
operator[] (const I &index) const
get_coefficient (const I &index) const
C & operator[] (const I &index)
void set_coefficient (const I &index, const C value)
size_t size () const
void support (std::set< I > &supp) const
void clip (const std::set< I > &supp)
void compress (const double eta=1e-15)
void add_coefficient (const I &index, const C increment)
void add (const InfiniteVector< C, I > &v)
void add (const C s, const InfiniteVector< C, I > &v)
void sadd (const C s, const InfiniteVector< C, I > &v)
void scale (const C s)
void scale (const InfiniteDiagonalMatrix< C, I > *D, const int k=1)
InfiniteVector< C, I > & operator+= (const InfiniteVector< C, I > &v)
void subtract (const InfiniteVector< C, I > &v)
InfiniteVector< C, I > & operator-= (const InfiniteVector< C, I > &v)
InfiniteVector< C, I > & operator*= (const C c)
InfiniteVector< C, I > & operator/= (const C c)
const C operator* (const InfiniteVector< C, I > &v) const
double weak_norm (const double tau) const
void COARSE (const double eps, InfiniteVector< C, I > &v) const
const double wrmsqr_norm (const double atol, const double rtol, const InfiniteVector< C, I > &v, const InfiniteVector< C, I > &w) const

Detailed Description

template<class C, class I = int>
class MathTL::InfiniteVector< C, I >

A model class InfiniteVector<C,I> for inherently sparse, arbitrarily indexed vectors x = (x_i)_{i I} with entries from a (scalar) class C. InfiniteVector<C,I> may act as a realization of coefficient_type in the WaveletTL.

Although internally, we will model InfiniteVector as a map<I,C>, the access to the vector entries takes place by a nested iterator class (compare the deal.II matrix classes) which is STL-compatible.


Constructor & Destructor Documentation

template<class C , class I >
MathTL::InfiniteVector< C, I >::InfiniteVector ( )

default constructor: yields empty (zero) vector

template<class C, class I>
MathTL::InfiniteVector< C, I >::InfiniteVector ( const InfiniteVector< C, I > &  v)

copy constructor


Member Function Documentation

template<class C, class I>
void MathTL::InfiniteVector< C, I >::add ( const InfiniteVector< C, I > &  v)

in place summation *this += v

template<class C, class I>
void MathTL::InfiniteVector< C, I >::add ( const C  s,
const InfiniteVector< C, I > &  v 
)

in place summation *this += s*v

template<class C, class I>
void MathTL::InfiniteVector< C, I >::add_coefficient ( const I &  index,
const C  increment 
)

add a value to a vector entry

template<class C , class I >
InfiniteVector< C, I >::const_iterator MathTL::InfiniteVector< C, I >::begin ( ) const [inline]

const_iterator pointing to the first nontrivial vector entry

Reimplemented in MathTL::LaurentPolynomial< R >, and MathTL::MultivariateLaurentPolynomial< R, DIMENSION >.

template<class C , class I >
void MathTL::InfiniteVector< C, I >::clear ( ) [inline]

set infinite vector to zero

template<class C , class I>
void MathTL::InfiniteVector< C, I >::clip ( const std::set< I > &  supp)

clip the infinite vector to a given support set

template<class C, class I>
void MathTL::InfiniteVector< C, I >::COARSE ( const double  eps,
InfiniteVector< C, I > &  v 
) const

Computes optimal v such that \|*this-v\|_{}; "optimal" means taking the largest entries in modulus of *this. The vector v does not have to be initialized, it will be cleared at the beginning of the algorithm

template<class C , class I >
void MathTL::InfiniteVector< C, I >::compress ( const double  eta = 1e-15)

set all values with modulus strictly below a threshold to zero (fabs<C> should exist)

template<class C, class I = int>
bool MathTL::InfiniteVector< C, I >::empty ( ) const [inline]

test emptyness

template<class C , class I >
InfiniteVector< C, I >::const_iterator MathTL::InfiniteVector< C, I >::end ( ) const [inline]

const_iterator pointing to one after the last nontrivial vector entry

Reimplemented in MathTL::LaurentPolynomial< R >, and MathTL::MultivariateLaurentPolynomial< R, DIMENSION >.

template<class C , class I>
C MathTL::InfiniteVector< C, I >::get_coefficient ( const I &  index) const

read-only access to the vector entries

Reimplemented in MathTL::MultivariateLaurentPolynomial< R, DIMENSION >.

template<class C, class I>
bool MathTL::InfiniteVector< C, I >::operator!= ( const InfiniteVector< C, I > &  v) const [inline]

non-equality test

template<class C, class I>
const C MathTL::InfiniteVector< C, I >::operator* ( const InfiniteVector< C, I > &  v) const

inner product

template<class C, class I >
InfiniteVector< C, I > & MathTL::InfiniteVector< C, I >::operator*= ( const C  c)

in place multiplication with a scalar

Reimplemented in MathTL::LaurentPolynomial< R >, and MathTL::MultivariateLaurentPolynomial< R, DIMENSION >.

template<class C, class I>
InfiniteVector< C, I > & MathTL::InfiniteVector< C, I >::operator+= ( const InfiniteVector< C, I > &  v) [inline]

in place summation

template<class C, class I>
InfiniteVector< C, I > & MathTL::InfiniteVector< C, I >::operator-= ( const InfiniteVector< C, I > &  v) [inline]

in place subtraction

template<class C, class I >
InfiniteVector< C, I > & MathTL::InfiniteVector< C, I >::operator/= ( const C  c)

in place division by a (nontrivial) scalar

template<class C, class I>
InfiniteVector< C, I > & MathTL::InfiniteVector< C, I >::operator= ( const InfiniteVector< C, I > &  v)

assignment from another vector

template<class C, class I>
bool MathTL::InfiniteVector< C, I >::operator== ( const InfiniteVector< C, I > &  v) const [inline]

equality test

template<class C , class I>
C MathTL::InfiniteVector< C, I >::operator[] ( const I &  index) const [inline]

read-only access to the vector entries

template<class C , class I>
C & MathTL::InfiniteVector< C, I >::operator[] ( const I &  index)

read-write access to the vector entries

template<class C , class I >
InfiniteVector< C, I >::const_reverse_iterator MathTL::InfiniteVector< C, I >::rbegin ( ) const

const_reverse_iterator pointing to the last nontrivial vector entry

Reimplemented in MathTL::LaurentPolynomial< R >, and MathTL::MultivariateLaurentPolynomial< R, DIMENSION >.

template<class C , class I >
InfiniteVector< C, I >::const_reverse_iterator MathTL::InfiniteVector< C, I >::rend ( ) const

const_reverse_iterator pointing to one before the first last nontrivial vector entry

Reimplemented in MathTL::LaurentPolynomial< R >, and MathTL::MultivariateLaurentPolynomial< R, DIMENSION >.

template<class C, class I>
void MathTL::InfiniteVector< C, I >::sadd ( const C  s,
const InfiniteVector< C, I > &  v 
)

in place summation *this = s*(*this) + v (AXPY level 1 BLAS routine)

template<class C, class I >
void MathTL::InfiniteVector< C, I >::scale ( const C  s)

in place scaling *this *= s

template<class C, class I>
void MathTL::InfiniteVector< C, I >::scale ( const InfiniteDiagonalMatrix< C, I > *  D,
const int  k = 1 
)

in place scaling with a diagonal matrix, *this = D^k (*this)

template<class C, class I>
void MathTL::InfiniteVector< C, I >::set_coefficient ( const I &  index,
const C  value 
)

set a vector entry

Reimplemented in MathTL::MultivariateLaurentPolynomial< R, DIMENSION >.

template<class C , class I >
size_t MathTL::InfiniteVector< C, I >::size ( ) const [inline]

number of nonzero entries

template<class C, class I>
void MathTL::InfiniteVector< C, I >::subtract ( const InfiniteVector< C, I > &  v)

in place subtraction *this -= v

template<class C , class I>
void MathTL::InfiniteVector< C, I >::support ( std::set< I > &  supp) const

return support of the current vector as a set

template<class C, class I>
void MathTL::InfiniteVector< C, I >::swap ( InfiniteVector< C, I > &  v) [inline]

swap components of two vectors

template<class C , class I >
double MathTL::InfiniteVector< C, I >::weak_norm ( const double  tau) const

weak l_tau norm

template<class C, class I>
const double MathTL::InfiniteVector< C, I >::wrmsqr_norm ( const double  atol,
const double  rtol,
const InfiniteVector< C, I > &  v,
const InfiniteVector< C, I > &  w 
) const

Computes v such that \|*this-v\|_{}; In contrast to the usual coarse routine, here the This routine is a suggestion from Rob Stevenson.

weighted root mean square norm ||x||_{v,w} = (1/n * sum_i |x_i|^2 / (atol+max(|v_i|,|w_i|)*rtol)^2)^{1/2}

(this has to be modeled as a member function, since partial specialization of template functions is not allowed in C++)


The documentation for this class was generated from the following files:
 All Classes Functions Variables Typedefs Enumerations