AbstractLinAlgPack::MatrixOpNonsing Class Reference

Abstract base class for all nonsingular polymorphic matrices that can be used to compute matrix-vector products and solve for linear systems efficiently. More...

#include <AbstractLinAlgPack_MatrixOpNonsing.hpp>

Inheritance diagram for AbstractLinAlgPack::MatrixOpNonsing:
Inheritance graph
[legend]

List of all members.

Public Member Functions

MatrixOpNonsingoperator= (const MatrixOpNonsing &M)
 Calls operator=(MatrixOp&).

Clone



virtual mat_mwons_mut_ptr_t clone_mwons ()
 Clone the non-const matrix object (if supported).
virtual mat_mwons_ptr_t clone_mwons () const
 Clone the const matrix object (if supported).

Condition number estimation



const MatNorm calc_cond_num (EMatNormType requested_norm_type=MAT_NORM_1, bool allow_replacement=false) const
 Compute an estimate of the condition number of this matrix.

Overridden from MatrixOp



mat_mut_ptr_t clone ()
 Returns this->clone_mwons().
mat_ptr_t clone () const
 Returns this->clone_mwons().

Overridden from MatrixNonsing



mat_mns_mut_ptr_t clone_mns ()
 Returns this->clone_mwons().
mat_mns_ptr_t clone_mns () const
 Returns this->clone_mwons().

Detailed Description

Abstract base class for all nonsingular polymorphic matrices that can be used to compute matrix-vector products and solve for linear systems efficiently.

Definition at line 41 of file AbstractLinAlgPack_MatrixOpNonsing.hpp.


Member Function Documentation

MatrixOpNonsing::mat_mwons_mut_ptr_t AbstractLinAlgPack::MatrixOpNonsing::clone_mwons (  )  [virtual]

Clone the non-const matrix object (if supported).

The default implementation returns NULL which is perfectly acceptable. A matrix object is not required to return a non-NULL value but almost every good matrix implementation will.

Reimplemented in AbstractLinAlgPack::MatrixSymOpNonsing.

Definition at line 39 of file AbstractLinAlgPack_MatrixOpNonsing.cpp.

MatrixOpNonsing::mat_mwons_ptr_t AbstractLinAlgPack::MatrixOpNonsing::clone_mwons (  )  const [virtual]

Clone the const matrix object (if supported).

The behavior of this method is the same as for the non-const version above except it returns a smart pointer to a const matrix object.

Reimplemented in AbstractLinAlgPack::MatrixSymOpNonsing.

Definition at line 45 of file AbstractLinAlgPack_MatrixOpNonsing.cpp.

const MatrixOp::MatNorm AbstractLinAlgPack::MatrixOpNonsing::calc_cond_num ( EMatNormType  requested_norm_type = MAT_NORM_1,
bool  allow_replacement = false 
) const

Compute an estimate of the condition number of this matrix.

Parameters:
requested_norm_type [in] Determines the requested type of norm for the condition number.
allow_replacement [in] Determines if the requested norm in specified in norm_type can be replaced with another norm that can be computde by the matrix.
Returns:
If a condition number is computed, then return.value gives the value of the condition number in the norm of type return.type.

Postconditions:

  • If allow_replacement==true, the matrix object must return a computed condition number who's type is given in return.type.
  • If allow_replacement==false and the underlying matrix object can not compute condition number for the norm requested in norm_type, then a MethodNotImplemented exception will be thrown. If the matrix object can an estimate of the condition number for this norm, then return.type will be equal to requested_norm_type.

The default implementation of this method uses Algorithm 2.5 in "Applied Numerical Linear Algebra" by James Demmel (1997) to estimate ||inv(M)||1 or ||inv(M)||inf. The algorithm uses some of the refinements in the referenced algorithm by Highman. This algorithm only requires solves and transposed solves so every nonsingular matrix object can implement this method. The default arguments for this function will compute an estimate of the condition number and will not thrown an exception. The default implementation will throw an exception for any other norm type than requested_norm_type = MAT_NORM_1 or requested_norm_type = MAT_NORM_INF.

Definition at line 51 of file AbstractLinAlgPack_MatrixOpNonsing.cpp.

MatrixOpNonsing::mat_mut_ptr_t AbstractLinAlgPack::MatrixOpNonsing::clone (  )  [virtual]

Returns this->clone_mwons().

Reimplemented from AbstractLinAlgPack::MatrixOp.

Reimplemented in AbstractLinAlgPack::MatrixSymOpNonsing.

Definition at line 108 of file AbstractLinAlgPack_MatrixOpNonsing.cpp.

MatrixOpNonsing::mat_ptr_t AbstractLinAlgPack::MatrixOpNonsing::clone (  )  const [virtual]

Returns this->clone_mwons().

Reimplemented from AbstractLinAlgPack::MatrixOp.

Reimplemented in AbstractLinAlgPack::MatrixSymOpNonsing.

Definition at line 114 of file AbstractLinAlgPack_MatrixOpNonsing.cpp.

MatrixOpNonsing::mat_mns_mut_ptr_t AbstractLinAlgPack::MatrixOpNonsing::clone_mns (  )  [virtual]

Returns this->clone_mwons().

Reimplemented from AbstractLinAlgPack::MatrixNonsing.

Reimplemented in AbstractLinAlgPack::MatrixSymOpNonsing.

Definition at line 122 of file AbstractLinAlgPack_MatrixOpNonsing.cpp.

MatrixOpNonsing::mat_mns_ptr_t AbstractLinAlgPack::MatrixOpNonsing::clone_mns (  )  const [virtual]

Returns this->clone_mwons().

Reimplemented from AbstractLinAlgPack::MatrixNonsing.

Reimplemented in AbstractLinAlgPack::MatrixSymOpNonsing.

Definition at line 128 of file AbstractLinAlgPack_MatrixOpNonsing.cpp.

MatrixOpNonsing& AbstractLinAlgPack::MatrixOpNonsing::operator= ( const MatrixOpNonsing M  )  [inline]

Calls operator=(MatrixOp&).

Definition at line 139 of file AbstractLinAlgPack_MatrixOpNonsing.hpp.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends
Generated on Wed Apr 13 10:09:21 2011 for AbstractLinAlgPack: C++ Interfaces For Vectors, Matrices And Related Linear Algebra Objects by  doxygen 1.6.3