Matriz chirrisquitica de adolf. o@di -mare .comMás...
Clases | |
class | Matrix |
Esta es una clase matriz muy chirrisquitica que puede cambiar dinámicamente de tamaño. Más... | |
class | Sparse_Matrix |
Esta es una clase matriz muy chirrisquitica almacenada como una matriz rala. Más... | |
class | Matrix_List_ColVal |
Clase privada para implementar la lista de valores de cada fila. Más... | |
class | Matrix_List |
Esta es una clase matriz muy chirrisquitica almacenada como una matriz rala implementada con listas. Más... | |
class | Matrix_Map |
Esta es una clase matriz muy chirrisquitica almacenada como una matriz rala implementada con Map. Más... | |
class | Matrix_Sparse |
Esta es una clase matriz muy chirrisquitica almacenada como una matriz rala. Más... | |
Funciones | |
template<class T > | |
bool | check_ok (const Matrix< T > &M) |
Verifica la invariante de la clase. Más... | |
template<class E > | |
std::ostream & | operator<< (std::ostream &COUT, const Matrix< E > &M) |
Graba en el flujo COUT el valor de M [][]. Más... | |
template<class E > | |
std::istream & | operator>> (std::istream &CIN, Matrix< E > &M) |
Obtiene del flujo CIN el valor para M [][]. Más... | |
template<class MAT > | |
bool | isSquare (const MAT &M) |
Retorna "true" si la matriz M [][] es una matriz cuadrada. Más... | |
template<class MAT > | |
bool | isDiagonal (const MAT &M) |
Retorna "true" si la matriz M [][] es una matriz diagonal. Más... | |
template<class MAT > | |
bool | isScalar (const MAT &M) |
Retorna "true" si la matriz M [][] es escalar. Más... | |
template<class MAT > | |
bool | isUnit (const MAT &M) |
Retorna "true" si la matriz M [][] es unitaria. Más... | |
template<class MAT > | |
void | setUnit (MAT &M, unsigned n) |
Convierte a M [][] en una matriz identidad de tamaño n x n . Más... | |
template<class MAT > | |
bool | isNull (const MAT &M) |
Retorna "true" si la matriz M [][] es nula. Más... | |
template<class MAT > | |
bool | isSymmetric (const MAT &M) |
Retorna "true" si la matriz M [][] es simétrica. Más... | |
template<class MAT > | |
bool | isUpperTriangular (const MAT &M) |
Retorna "true" si la matriz M [][] es triangular superior. Más... | |
template<class MAT > | |
bool | isLowerTriangular (const MAT &M) |
Retorna "true" si la matriz M [][] es triangular inferior. Más... | |
template<class T > | |
bool | check_ok (const Sparse_Matrix< T > &M) |
Verifica la invariante de la clase. Más... | |
template<class E > | |
std::ostream & | operator<< (std::ostream &COUT, const Sparse_Matrix< E > &M) |
Graba en el flujo COUT el valor de M [][]. Más... | |
template<class E > | |
std::istream & | operator>> (std::istream &CIN, Sparse_Matrix< E > &M) |
Obtiene del flujo CIN el valor para M [][]. Más... | |
template<class T > | |
bool | check_ok (const Matrix_List< T > &M) |
Verifica la invariante de la clase. Más... | |
template<class E > | |
std::ostream & | operator<< (std::ostream &COUT, const Matrix_List< E > &M) |
Graba en el flujo COUT el valor de M [][]. Más... | |
template<class E > | |
std::istream & | operator>> (std::istream &CIN, Matrix_List< E > &M) |
Obtiene del flujo CIN el valor para M [][]. Más... | |
template<class T > | |
bool | check_ok (const Matrix_Map< T > &M) |
Verifica la invariante de la clase. Más... | |
template<class E > | |
std::ostream & | operator<< (std::ostream &COUT, const Matrix_Map< E > &M) |
Graba en el flujo COUT el valor de M [][]. Más... | |
template<class E > | |
std::istream & | operator>> (std::istream &CIN, Matrix_Map< E > &M) |
Obtiene del flujo CIN el valor para M [][]. Más... | |
template<class T > | |
bool | check_ok (const Matrix_Sparse< T > &M) |
Verifica la invariante de la clase. Más... | |
template<class E > | |
std::ostream & | operator<< (std::ostream &COUT, const Matrix_Sparse< E > &M) |
Graba en el flujo COUT el valor de M [][]. Más... | |
template<class E > | |
std::istream & | operator>> (std::istream &CIN, Matrix_Sparse< E > &M) |
Obtiene del flujo CIN el valor para M [][]. Más... | |
Matriz chirrisquitica de adolf. o@di -mare .com
bool Mx::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 \c 0 (cero) al campo \c 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 == \c rows() - En todos los algoritmos, "n" o "m_cols" es la cantidad de columnas == \c cols() \par <em>Rep</em> Modelo de la clase
\par <em>Rep</em> Modelo de la clase
Ok()
(M.m_rows == 0) <==> (M.m_cols == 0)
(M.m_rows == 0) <==> (M.m_val == 0)
check_ok( m_val[k] )
std::ostream& Mx::operator<< | ( | std::ostream & | COUT, |
const Matrix< E > & | M | ||
) |
std::istream& Mx::operator>> | ( | std::istream & | CIN, |
Matrix< E > & | M | ||
) |
bool Mx::isSquare | ( | const MAT & | M | ) |
Retorna "true"
si la matriz M
[][] es una matriz cuadrada.
Definición en la línea 34 del archivo Matrix_Lib.h.
bool Mx::isDiagonal | ( | const MAT & | M | ) |
Retorna "true"
si la matriz M
[][] es una matriz diagonal.
Definición en la línea 45 del archivo Matrix_Lib.h.
bool Mx::isScalar | ( | const MAT & | M | ) |
Retorna "true"
si la matriz M
[][] es escalar.
Definición en la línea 70 del archivo Matrix_Lib.h.
|
inline |
Retorna "true"
si la matriz M
[][] es unitaria.
Definición en la línea 91 del archivo Matrix_Lib.h.
void Mx::setUnit | ( | MAT & | M, |
unsigned | n | ||
) |
Convierte a M
[][] en una matriz identidad de tamaño n
x n
.
Definición en la línea 104 del archivo Matrix_Lib.h.
bool Mx::isNull | ( | const MAT & | M | ) |
Retorna "true"
si la matriz M
[][] es nula.
Definición en la línea 123 del archivo Matrix_Lib.h.
bool Mx::isSymmetric | ( | const MAT & | M | ) |
Retorna "true"
si la matriz M
[][] es simétrica.
Definición en la línea 143 del archivo Matrix_Lib.h.
bool Mx::isUpperTriangular | ( | const MAT & | M | ) |
Retorna "true"
si la matriz M
[][] es triangular superior.
Definición en la línea 165 del archivo Matrix_Lib.h.
bool Mx::isLowerTriangular | ( | const MAT & | M | ) |
Retorna "true"
si la matriz M
[][] es triangular inferior.
Definición en la línea 189 del archivo Matrix_Lib.h.
bool Mx::check_ok | ( | const Sparse_Matrix< T > & | M | ) |
Verifica la invariante de la clase.
- El campo \c m_same indica cuál es el valor que se repite más en toda la matriz. - Usualmente \c same es el neutro aditivo \c value_type(). - No existe un constructor explícito para darle a \c m_same su valor inicial, que es siempre inicializado en \c value_type(). Para cambiarlo es necesario invocar el método \c setgetDefault(). - Los vectores \c m_I[], \c m_J[] y \c m_val[] son vectores paralelos, todos de longitud \c Sparse_Matrix::m_capacity. - La cantidad máxima de valores diferente que pueden ser almacenados en la matriz es \c 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 \c const del \c operator()(i,j). O sea, que es ese método el encargado de agregar valores en \c m_val[], pues el operador homónimo \c const operator()(i,j) nunca agrega nada y, como es \c const, en general retorna una referencia constante a \c 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 \c 0 (cero) al campo \c m_capacity. - En todos los algoritmos, "m" o "m_rows" es la cantidad de filas == \c rows() - En todos los algoritmos, "n" o "m_cols" es la cantidad de columnas == \c cols() \par <em>Rep</em> Modelo de la clase
Ok()
(m_capacity == 0) <==> (m_I == 0)
(m_capacity == 0) <==> (m_J == 0)
(m_capacity == 0) <==> (m_val == 0)
(m_rows == 0) ==> (m_capacity == 0)
(m_cols == 0) ==> (m_capacity == 0)
(m_capacity != 0) <==> (m_I != 0)
(m_capacity != 0) <==> (m_J != 0)
(m_capacity != 0) <==> (m_val != 0)
(m_rows == 0) <==> (m_cols == 0)
( m_size <= m_capacity )
check_ok (m_same)
( (0<=m_I[k]) && (m_I[k] < m_rows) ) k = [0..m_size-1]
( (0<=m_J[k]) && (m_J[k] < m_cols) ) k = [0..m_size-1]
check_ok( m_val[k] )
Definición en la línea 149 del archivo Sparse_Matrix.h.
std::ostream& Mx::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.
std::istream& Mx::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.
bool Mx::check_ok | ( | const Matrix_List< T > & | M | ) |
Verifica la invariante de la clase.
- El campo \c m_same indica cuál es el valor que se repite más en toda la matriz. - Usualmente \c m_same es el neutro aditivo \c value_type(). - No existe un constructor explícito para darle a \c m_same su valor inicial, que es siempre inicializado en \c value_type(). Para cambiarlo es necesario invocar el método \c setgetDefault(). - El vector \c m_VL[] contiene las listas de valores almacenados en la matriz. Cualquiera de estas listas puede estar vacía; aún todas pueden ser listas vacías. - La cantidad de columnas de la matriz es el valor fijo es \c m_cols. - El largo de las listas de valores cambia cuando se hace referencia a un valor M(i,j) mediante la versión que no es \c const del \c operator()(i,j). O sea, que es ese método el encargado de agregar valores en \c m_VL[], pues el operador homónimo \c const operator()(i,j) nunca agrega nada y, como es \c const, en general retorna una referencia constante a \c m_same. - Es posible que la matriz tenga dimensiones nulas, lo que implica que el vector \c m_VL[] está vacío. - No hace falta alacenar la cantidad de valores de la matriz porque se siempre es \c m_VL.size(). el valor \c 0 (cero) al campo \c m_capacity. \par <em>Rep</em> Modelo de la clase
Ok()
(m_cols == 0) <==> (m_VL.empty())
check_ok( M.m_same )
check_ok( M(i,j) )
Definición en la línea 162 del archivo Matrix_List.h.
std::ostream& Mx::operator<< | ( | std::ostream & | COUT, |
const Matrix_List< E > & | M | ||
) |
Graba en el flujo COUT
el valor de M
[][].
Definición en la línea 613 del archivo Matrix_List.h.
std::istream& Mx::operator>> | ( | std::istream & | CIN, |
Matrix_List< E > & | M | ||
) |
Obtiene del flujo CIN
el valor para M
[][].
Definición en la línea 626 del archivo Matrix_List.h.
bool Mx::check_ok | ( | const Matrix_Map< T > & | M | ) |
Verifica la invariante de la clase.
- El campo \c m_same indica cuál es el valor que se repite más en toda la matriz. - Usualmente \c m_same es el neutro aditivo \c value_type(). - No existe un constructor explícito para darle a \c m_same su valor inicial, que es siempre inicializado en \c value_type(). Para cambiarlo es necesario invocar el método \c setgetDefault(). - El vector \c m_dicc contiene las listas de valores almacenados en la matriz. Cualquiera de estas listas puede estar vacía; aún todas pueden ser listas vacías. - La cantidad de columnas de la matriz es el valor fijo es \c m_cols. - El largo de las listas de valores cambia cuando se hace referencia a un valor M(i,j) mediante la versión que no es \c const del \c operator()(i,j). O sea, que es ese método el encargado de agregar valores en \c m_dicc, pues el operador homónimo \c const operator()(i,j) nunca agrega nada y, como es \c const, en general retorna una referencia constante a \c m_same. - Es posible que la matriz tenga dimensiones nulas, lo que implica que el vector \c m_dicc está vacío. - No hace falta alacenar la cantidad de valores de la matriz porque se siempre es \c m_VL.size(). el valor \c 0 (cero) al campo \c m_capacity. \par <em>Rep</em> Modelo de la clase
- http://www.di-mare.com/adolfo/binder/c03.htm#k1-Rep \remark Libera al programador de implementar el método \c Ok() - http://www.di-mare.com/adolfo/binder/c04.htm#sc11
(m_cols == 0) <==> (m_dicc.empty())
check_ok( M.m_same )
check_ok( M(i,j) )
Definición en la línea 164 del archivo Matrix_Map.h.
std::ostream& Mx::operator<< | ( | std::ostream & | COUT, |
const Matrix_Map< E > & | M | ||
) |
Graba en el flujo COUT
el valor de M
[][].
Definición en la línea 593 del archivo Matrix_Map.h.
std::istream& Mx::operator>> | ( | std::istream & | CIN, |
Matrix_Map< E > & | M | ||
) |
Obtiene del flujo CIN
el valor para M
[][].
Definición en la línea 606 del archivo Matrix_Map.h.
bool Mx::check_ok | ( | const Matrix_Sparse< T > & | M | ) |
Verifica la invariante de la clase.
- El campo \c m_same indica cuál es el valor que se repite más en toda la matriz. - Usualmente \c same es el neutro aditivo \c value_type(). - No existe un constructor explícito para darle a \c m_same su valor inicial, que es siempre inicializado en \c value_type(). Para cambiarlo es necesario invocar el método \c setgetDefault(). - Los vectores \c m_I[], \c m_J[] y \c m_val[] son vectores paralelos, todos de longitud \c Matrix_Sparse::m_capacity. - La cantidad máxima de valores diferente que pueden ser almacenados en la matriz es \c Matrix_Sparse::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 \c const del \c operator()(i,j). O sea, que es ese método el encargado de agregar valores en \c m_val[], pues el operador homónimo \c const operator()(i,j) nunca agrega nada y, como es \c const, en general retorna una referencia constante a \c 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 \c 0 (cero) al campo \c m_capacity. - En todos los algoritmos, "m" o "m_rows" es la cantidad de filas == \c rows() - En todos los algoritmos, "n" o "m_cols" es la cantidad de columnas == \c cols() \par <em>Rep</em> Modelo de la clase
Ok()
(m_capacity == 0) <==> (m_I == 0)
(m_capacity == 0) <==> (m_J == 0)
(m_capacity == 0) <==> (m_val == 0)
(m_rows == 0) ==> (m_capacity == 0)
(m_cols == 0) ==> (m_capacity == 0)
(m_capacity != 0) <==> (m_I != 0)
(m_capacity != 0) <==> (m_J != 0)
(m_capacity != 0) <==> (m_val != 0)
(m_rows == 0) <==> (m_cols == 0)
( m_size <= m_capacity )
check_ok (m_same)
( (0<=m_I[k]) && (m_I[k] < m_rows) ) k = [0..m_size-1]
( (0<=m_J[k]) && (m_J[k] < m_cols) ) k = [0..m_size-1]
check_ok( m_val[k] )
Definición en la línea 149 del archivo Matrix_Sparse.h.
std::ostream& Mx::operator<< | ( | std::ostream & | COUT, |
const Matrix_Sparse< E > & | M | ||
) |
Graba en el flujo COUT
el valor de M
[][].
Definición en la línea 797 del archivo Matrix_Sparse.h.
std::istream& Mx::operator>> | ( | std::istream & | CIN, |
Matrix_Sparse< E > & | M | ||
) |
Obtiene del flujo CIN
el valor para M
[][].
Definición en la línea 810 del archivo Matrix_Sparse.h.