Resolucion de sistemas lineales
 All Classes Files Functions Variables Typedefs Macros Pages
MatrizBandComp.hpp
Go to the documentation of this file.
1 // Clase para el trabajar con matrices bandadas de punto flotante //
3 // //
4 // Análisis y Diseño y Programación: //
5 // //
6 // Nombre: Antonio Carrillo Ledesma //
7 // E-mail: acl@www.mmc.geofisica.unam.mx //
8 // Página: http://www.mmc.geofisica.unam.mx/acl //
9 // //
10 // //
11 // Este programa es software libre. Puede redistribuirlo y/o modificarlo //
12 // bajo los términos de la Licencia Pública General de GNU según es //
13 // publicada por la Free Software Foundation, bien de la versión 2 de //
14 // dicha Licencia o bien (según su elección) de cualquier versión //
15 // posterior. //
16 // //
17 // Este programa se distribuye con la esperanza de que sea útil, pero SIN //
18 // NINGUNA GARANTÍA, incluso sin la garantía MERCANTIL implícita o sin //
19 // garantizar la CONVENIENCIA PARA UN PROPÓSITO PARTICULAR. Véase la //
20 // Licencia Pública General de GNU para más detalles. //
21 // //
22 // Debería haber recibido una copia de la Licencia Pública General junto //
23 // con este programa. Si no ha sido así, escriba a la Free Software //
24 // Foundation, Inc., en 675 Mass Ave, Cambridge, MA 02139, EEUU. //
25 // //
26 // //
28 
29 
30 
31 #ifndef __MatrizBandComp__
32 #define __MatrizBandComp__
33 
34 
35 
36 #include "MatrizBandDisp.hpp"
37 
38 
44 
51 {
52 private:
53 
55 
58  void solicitaMemoria(const int ren, const int col, const int ban);
59 
60 
62 
63  void compactaMatriz(int ren);
64 
65 
67  ldouble **M;
69  int *J;
71  int *C_IndDat;
73  bool Compactada;
75  int C_NumRen;
77  int Ultimo;
78 
79 
80 public:
81 
83 
86  MatrizBandComp(const int ren, const int col, const int ban) : MatrizBandDisp()
87  {
88  solicitaMemoria(ren, col, ban);
89  asignaNombre("SinNombre");
90  }
91 
93 
97  MatrizBandComp(const int ren, const int col, const int ban, const char *nmb) : MatrizBandDisp()
98  {
99  solicitaMemoria(ren, col, ban);
100  asignaNombre(nmb);
101  }
102 
105  {
106  liberaMemoria();
107  }
108 
109 
111  void liberaMemoria(void);
112 
114 
115  void inicializa(ldouble val)
116  {
117  printf("\nFuncion no implementada en esta clase\n");
118  }
119 
121 
124  void asigna(const int ren, const int col, const ldouble val);
125 
127 
130  ldouble retorna(const int ren, const int col);
131 
133 
135  int retornaNumeroColumnasBanda(int ren);
136 
138 
141  int retornaNumeroColumna(int ren, int ind);
142 
144 
147  inline double retornaValorColumna(int ren, int ind)
148  {
149  return (M[ren][ind]);
150  }
151 
153 
154  void multiplica(ldouble esc);
155 
157 
160 
162 
164  void multiplica(Vector *b, Vector *r);
165 
167  void visualizaMatricesInternas(void);
168 
169 
170 };
171 
172 
177 #endif
MatrizBandComp(const int ren, const int col, const int ban, const char *nmb)
Constructor de la clase.
Definition: MatrizBandComp.hpp:97
Clase base para trabajar con matrices bandadas y dispersas.
Definition: MatrizBandDisp.hpp:44
Clase para el trabajar con vectores de punto flotante.
Definition: Vector.hpp:47
void inicializa(ldouble val)
Inicializa la matriz al valor indicado.
Definition: MatrizBandComp.hpp:115
double ldouble
Define ldouble como double.
Definition: Definiciones.hpp:50
MatrizBandComp(const int ren, const int col, const int ban)
Constructor de la clase.
Definition: MatrizBandComp.hpp:86
Definition: MatrizBandComp.hpp:50
double retornaValorColumna(int ren, int ind)
Retorna el valor de la columna cuando se para en el renglon e indice de la banda. ...
Definition: MatrizBandComp.hpp:147
~MatrizBandComp()
Destructor de la clase.
Definition: MatrizBandComp.hpp:104
void multiplica(ldouble esc)
Multiplica la matriz por el escalar pasado como parametro.
Definition: MatrizBandComp.cpp:270
ldouble retorna(const int ren, const int col)
Retorna el valor del renglon y columna solicitado.
Definition: MatrizBandComp.cpp:196
void asigna(const int ren, const int col, const ldouble val)
Asigna el valor indicado en el renglo y columna solicitado.
Definition: MatrizBandComp.cpp:115
int retornaNumeroColumna(int ren, int ind)
Retorna el número de columna cuando se para en el renglon e indice de la banda.
Definition: MatrizBandComp.cpp:251
void asignaNombre(const char *nmb)
Asigna nombre a la matriz.
Definition: Matriz_Base.cpp:42
int retornaNumeroColumnasBanda(int ren)
Retorna el número de columnas de la banda para el renglon indicado.
Definition: MatrizBandComp.cpp:225
void visualizaMatricesInternas(void)
Visualiza las matrices internas usadas para soportar a las matrices bandadas.
Definition: MatrizBandComp.cpp:362
void liberaMemoria(void)
Libera la memoria solicitada para la matriz.
Definition: MatrizBandComp.cpp:84