Página principal | Lista de namespace | Lista de componentes | Lista de archivos | Miembros del Namespace  | Miembros de las clases | Archivos de los miembros

Referencia del Namespace Mx

Matriz chirrisquitica de adolfo@di-mare.com. Más...


Clases

class  Mx::Matrix< E >
 Esta es una clase matriz muy chirrisquitica que puede cambiar dinámicamente de tamaño. Más...
class  Mx::Sparse_Matrix< E >
 Esta es una clase matriz muy chirrisquitica almacenada como una matriz rala. Más...

Funciones

template<class Mat>
bool isSquare (const Mat &M)
 Retorna "true" si la matriz M[][] es una matriz cuadrada.
template<class Mat>
bool isDiagonal (const Mat &M)
 Retorna "true" si la matriz M[][] es una matriz diagonal.
template<class Mat>
bool isScalar (const Mat &M)
 Retorna "true" si la matriz M[][] es escalar.
template<class Mat>
bool isUnit (const Mat &M)
 Retorna "true" si la matriz M[][] es unitaria.
template<class Mat>
bool isNull (const Mat &M)
 Retorna "true" si la matriz M[][] es nula.
template<class Mat>
bool isSymmetric (const Mat &M)
 Retorna "true" si la matriz M[][] es simétrica.
template<class Mat>
bool isUpperTiangular (const Mat &M)
 Retorna "true" si la matriz M[][] es triangular superior.
template<class Mat>
bool isLowerTiangular (const Mat &M)
 Retorna "true" si la matriz M[][] es triangular inferior.
template<class T>
bool check_ok (const Matrix< T > &M)
 Verifica la invariante de la clase.
template<class E>
std::ostream & operator<< (std::ostream &COUT, const Matrix< E > &M)
 Graba en el flujo COUT el valor de M[][].
template<class E>
std::istream & operator>> (std::istream &CIN, Matrix< E > &M)
 Obtiene del flujo CIN el valor para M[][].
template<class T>
bool check_ok (const Sparse_Matrix< T > &M)
 Verifica la invariante de la clase.
template<class E>
std::ostream & operator<< (std::ostream &COUT, const Sparse_Matrix< E > &M)
 Graba en el flujo COUT el valor de M[][].
template<class E>
std::istream & operator>> (std::istream &CIN, Sparse_Matrix< E > &M)
 Obtiene del flujo CIN el valor para M[][].


Descripción detallada

Matriz chirrisquitica de adolfo@di-mare.com.

Documentación de las funciones

template<class Mat>
bool isSquare const Mat &  M  ) 
 

Retorna "true" si la matriz M[][] es una matriz cuadrada.

Definición en la línea 19 del archivo Matrix_Lib.h.

template<class Mat>
bool isDiagonal const Mat &  M  ) 
 

Retorna "true" si la matriz M[][] es una matriz diagonal.

Definición en la línea 25 del archivo Matrix_Lib.h.

template<class Mat>
bool isScalar const Mat &  M  ) 
 

Retorna "true" si la matriz M[][] es escalar.

Definición en la línea 45 del archivo Matrix_Lib.h.

template<class Mat>
bool isUnit const Mat &  M  )  [inline]
 

Retorna "true" si la matriz M[][] es unitaria.

Definición en la línea 61 del archivo Matrix_Lib.h.

template<class Mat>
bool isNull const Mat &  M  ) 
 

Retorna "true" si la matriz M[][] es nula.

Definición en la línea 69 del archivo Matrix_Lib.h.

template<class Mat>
bool isSymmetric const Mat &  M  ) 
 

Retorna "true" si la matriz M[][] es simétrica.

Definición en la línea 84 del archivo Matrix_Lib.h.

template<class Mat>
bool isUpperTiangular const Mat &  M  ) 
 

Retorna "true" si la matriz M[][] es triangular superior.

Definición en la línea 101 del archivo Matrix_Lib.h.

template<class Mat>
bool isLowerTiangular const Mat &  M  ) 
 

Retorna "true" si la matriz M[][] es triangular inferior.

Definición en la línea 120 del archivo Matrix_Lib.h.

template<class T>
bool check_ok const Matrix< T > &  M  ) 
 

Verifica la invariante de la clase.

  • Es posible que la matriz tenga dimensiones nulas, lo que implica que todos los punteros a los vectors paralelos deben ser nulos. Este hecho se marca dándolo el valor 0 (cero) al campo m_val.
  • Las matrices quedan almacenadas en un vector de tamaño [M x N].
  • En todos los algoritmos, "m" o "m_rows" es la cantidad de filas == rows()
  • En todos los algoritmos, "n" o "m_cols" es la cantidad de columnas == cols()

Rep Modelo de la clase
+---+                                         /         \
| 2 |  M(i,j) ==> m_val[ (i * m_cols) + j ]   | 0 1 2 3 |   m_rows == 2
+---+  (almacenamiento por filas)             | 4 5 6 7 |   m_cols == 4
| 4 |                                         \         /
+---+   +---+---+---+---+---+---+---+---+
| *-|-->| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
+---+   +---+---+---+---+---+---+---+---+
Rep Modelo de la clase
+---+
| 4 |  M(i,j) ==> m_val[ i + (j * m_rows) ]   / a e \
+---+  (almacenamiento por columnas)          | b f |   m_rows == 4
| 2 |                                         | c g |   m_cols == 2
+---+   +---+---+---+---+---+---+---+---+     \ d h /
| *-|-->| a | b | c | d | e | f | g | h |
+---+   +---+---+---+---+---+---+---+---+
Comentarios:
Libera al programador de implementar el método Ok()

- Invariante: (M.m_rows == 0) <==> (M.m_cols == 0)

- Invariante: (M.m_rows == 0) <==> (M.m_val == 0)

- Invariante: check_ok( m_val[k] )

Definición en la línea 144 del archivo Matrix.h.

template<class E>
std::ostream& operator<< std::ostream &  COUT,
const Matrix< E > &  M
 

Graba en el flujo COUT el valor de M[][].

Definición en la línea 566 del archivo Matrix.h.

template<class E>
std::istream& operator>> std::istream &  CIN,
Matrix< E > &  M
 

Obtiene del flujo CIN el valor para M[][].

Definición en la línea 579 del archivo Matrix.h.

template<class T>
bool check_ok const Sparse_Matrix< T > &  M  ) 
 

Verifica la invariante de la clase.

  • El campo m_same indica cuál es el valor que se repite más en toda la matriz.
  • Usualmente same es el neutro aditivo value_type(0).
  • No existe un constructor explícito para darle a m_same su valor inicial, que es siempre inicializado en value_type(0). Para cambiarlo es necesario invocar el método setgetDefault().
  • Los vectores m_I[], m_J[] y m_val[] son vectores paralelos, todos de longitud Sparse_Matrix::m_capacity.
  • La cantidad máxima de valores diferente que pueden ser almacenados en la matriz es Sparse_Matrix::m_capacity.
  • El largo de estos vectores aumenta cuando se hace referencia a un valor M(i,j) mediante la versión que no es const del operator()(i,j). O sea, que es ese método el encargado de agregar valores en m_val[], pues el operador homónimo const operator()(i,j) nunca agrega nada y, como es const, en general retorna una referencia constante a m_same.
  • Es posible que la matriz tenga dimensiones nulas, lo que implica que todos los punteros a los vectors paralelos deben ser nulos. Este hecho se marca dándolo el valor 0 (cero) al campo m_capacity.
  • En todos los algoritmos, "m" o "m_rows" es la cantidad de filas == rows()
  • En todos los algoritmos, "n" o "m_cols" es la cantidad de columnas == cols()

Rep Modelo de la clase
         ____________________________________
        /          m_capacity                \
        +---+---+---+---+---+---+-..-+---+---+       0 1 2 3 4 5 6
 m_I--->| 1 | 3 | 3 |'-'| ...       ...  |'-'|   0 / - - - - - - - \
        +---+---+---+---+ ...       ...  +---+   1 | - a - - - - - |
 m_J--->| 1 | 2 | 1 |'-'| ...       ...  |'-'|   2 | - - - - - - - |
        +---+---+---+---+ ...       ...  +---+   3 | - c b - - - - |
m_val-->|'a'|'b'|'c'|'-'| ...       ...  |'-'|   4 \ - - - - - - - /
        +---+---+---+---+---+---+-..-+---+---+
          0   1   2   |
        m_size--------+ == 3    m_same == '-'   m_rows == 5  m_cols == 7
Comentarios:
Libera al programador de implementar el método Ok()

- Invariante: (m_capacity == 0) <==> (m_I == 0)

- Invariante: (m_capacity == 0) <==> (m_J == 0)

- Invariante: (m_capacity == 0) <==> (m_val == 0)

- Invariante: (m_rows == 0) ==> (m_capacity == 0)

- Invariante: (m_cols == 0) ==> (m_capacity == 0)

- Invariante: (m_capacity != 0) <==> (m_I != 0)

- Invariante: (m_capacity != 0) <==> (m_J != 0)

- Invariante: (m_capacity != 0) <==> (m_val != 0)

- Invariante: (m_rows == 0) <==> (m_cols == 0)

- Invariante: ( m_size <= m_capacity )

- Invariante: check_ok (m_same)

- Invariante: ( (0<=m_I[k]) && (m_I[k] < m_rows) ) k = [0..m_size-1]

- Invariante: ( (0<=m_J[k]) && (m_J[k] < m_cols) ) k = [0..m_size-1]

- Invariante: check_ok( m_val[k] )

Definición en la línea 149 del archivo Sparse_Matrix.h.

template<class E>
std::ostream& operator<< std::ostream &  COUT,
const Sparse_Matrix< E > &  M
 

Graba en el flujo COUT el valor de M[][].

Definición en la línea 797 del archivo Sparse_Matrix.h.

template<class E>
std::istream& operator>> std::istream &  CIN,
Sparse_Matrix< E > &  M
 

Obtiene del flujo CIN el valor para M[][].

Definición en la línea 810 del archivo Sparse_Matrix.h.


Generado el Wed Nov 14 13:47:10 2007 para Uso de Mx::Matrix: por  doxygen 1.3.9.1