Resolucion de sistemas lineales
 All Classes Files Functions Variables Typedefs Macros Pages
ResuelveFactorizacionCholeskiBandDisp.hpp
Go to the documentation of this file.
1 // Clase para resolver un sistema lineal usando factorizacion Choleski //
3 // //
4 // Análisis y Diseño y Programación: //
5 // //
6 // Nombre: Antonio Carrillo Ledesma //
7 // E-mail: acl@www.mmc.igeofcu.unam.mx //
8 // Página: http://www.mmc.igeofcu.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 __ResuelveFactorizacionCholeskiBandDisp__
32 #define __ResuelveFactorizacionCholeskiBandDisp__
33 
34 
36 #include "MatrizBandDisp.hpp"
37 #include "MatrizBand.hpp"
38 #include "MatrizDispersa.hpp"
39 
40 
42 
48 {
49 
50 private:
51 
53  bool liberaMatriz;
54 
55 public:
56 
57 
60  {
61  M = NULL;
63  liberaMatriz = false;
64  }
65 
67 
69  {
70  M = A;
72  liberaMatriz = false;
73  }
74 
76 
80  {
81  M = A;
83  liberaMatriz = false;
84  }
85 
87 
91  {
92  M = new MatrizDispersa(A->renglones(),A->columnas(),(A->tamanoBanda()*2+1));
93  A->copia(M);
95  liberaMatriz = true;
96  }
97 
99  {
100  if (liberaMatriz)
101  {
102  M->liberaMemoria();
103  delete M;
104  }
105  M = NULL;
106  }
107 
109  void factoriza(void);
110 
112  void resuelve(void);
113 
115 
117  void resuelve(Vector *x, Vector *b)
118  {
119  X = x;
120  B = b;
121  resuelve();
122  }
123 
124 };
125 
126 #endif
int renglones(void)
Retorna el número de renglones de la matriz.
Definition: Matriz_Base.hpp:103
void factoriza(void)
Factoriza la matriz A en L y U dejandolas en la misma matriz.
Definition: ResuelveFactorizacionCholeskiBandDisp.cpp:35
ResuelveFactorizacionCholeskiBandDisp(MatrizBand *A, Vector *x, Vector *b)
Constructor de la clase.
Definition: ResuelveFactorizacionCholeskiBandDisp.hpp:90
void resuelve(void)
Resuelve el sistema lineal.
Definition: ResuelveFactorizacionCholeskiBandDisp.cpp:125
void resuelve(Vector *x, Vector *b)
Resuelve el sistema lineal.
Definition: ResuelveFactorizacionCholeskiBandDisp.hpp:117
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
virtual void copia(Matriz *a)
Copia el contenido de la matriz a la matriz pasada como parámetro.
Definition: Matriz.cpp:371
ResuelveFactorizacionCholeskiBandDisp(MatrizBandDisp *A)
Constructor de la clase.
Definition: ResuelveFactorizacionCholeskiBandDisp.hpp:68
Definition: MatrizBand.hpp:47
int columnas(void)
Retorna el número de columnas de la matriz.
Definition: Matriz_Base.hpp:110
Vector * B
Vactor lado derecho.
Definition: ResuelveSistemaLineal.hpp:82
#define REQUIERE_MAT_BAND
Definition: ResuelveSistemaLineal.hpp:55
#define REQUIERE_MAT_DISP
Definition: ResuelveSistemaLineal.hpp:56
int RequiereMatriz
Requiere matriz del tipo Bandada, Dispersa, Densa.
Definition: ResuelveSistemaLineal.hpp:77
int tamanoBanda(void)
Retorna el tamaño de la banda.
Definition: MatrizBandDisp.hpp:65
~ResuelveFactorizacionCholeskiBandDisp()
Definition: ResuelveFactorizacionCholeskiBandDisp.hpp:98
Matriz * M
Matriz.
Definition: ResuelveSistemaLineal.hpp:84
ResuelveFactorizacionCholeskiBandDisp(void)
Constructor de la clase.
Definition: ResuelveFactorizacionCholeskiBandDisp.hpp:59
Definition: MatrizDispersa.hpp:47
ResuelveFactorizacionCholeskiBandDisp(MatrizBandDisp *A, Vector *x, Vector *b)
Constructor de la clase.
Definition: ResuelveFactorizacionCholeskiBandDisp.hpp:79
Clase para resolución del sistema lineal usando factorizacion Choleski.
Definition: ResuelveFactorizacionCholeski.hpp:44
virtual void liberaMemoria(void)=0
Libera la memoria solicitada para la matriz.
Vector * X
Vector solución
Definition: ResuelveSistemaLineal.hpp:80
Clase para resolución del sistema lineal usando factorizacion Choleski.
Definition: ResuelveFactorizacionCholeskiBandDisp.hpp:47