Resolucion de sistemas lineales
 All Classes Files Functions Variables Typedefs Macros Pages
ResuelveFactorizacionLUBandDisp.hpp
Go to the documentation of this file.
1 // Clase para resolver un sistema lineal usando factorizacion LU //
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 __ResuelveFactorizacionLUBandDisp__
32 #define __ResuelveFactorizacionLUBandDisp__
33 
34 
36 #include "MatrizBandDisp.hpp"
37 #include "MatrizBand.hpp"
38 #include "MatrizDispersa.hpp"
39 
40 
42 
48 {
49 
50 protected:
51 
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
Clase para resolución del sistema lineal usando factorizacion LU.
Definition: ResuelveFactorizacionLUBandDisp.hpp:47
int renglones(void)
Retorna el número de renglones de la matriz.
Definition: Matriz_Base.hpp:103
ResuelveFactorizacionLUBandDisp(MatrizBandDisp *A, Vector *x, Vector *b)
Constructor de la clase.
Definition: ResuelveFactorizacionLUBandDisp.hpp:79
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 resuelve(Vector *x, Vector *b)
Resuelve el sistema lineal.
Definition: ResuelveFactorizacionLUBandDisp.hpp:117
virtual void copia(Matriz *a)
Copia el contenido de la matriz a la matriz pasada como parámetro.
Definition: Matriz.cpp:371
Definition: MatrizBand.hpp:47
int columnas(void)
Retorna el número de columnas de la matriz.
Definition: Matriz_Base.hpp:110
~ResuelveFactorizacionLUBandDisp()
Definition: ResuelveFactorizacionLUBandDisp.hpp:98
Vector * B
Vactor lado derecho.
Definition: ResuelveSistemaLineal.hpp:82
void resuelve(void)
Resuelve el sistema lineal.
Definition: ResuelveFactorizacionLUBandDisp.cpp:80
#define REQUIERE_MAT_BAND
Definition: ResuelveSistemaLineal.hpp:55
void factoriza(void)
Factoriza la matriz A en L y U dejandolas en la misma matriz.
Definition: ResuelveFactorizacionLUBandDisp.cpp:34
#define REQUIERE_MAT_DISP
Definition: ResuelveSistemaLineal.hpp:56
Clase para resolución del sistema lineal usando factorizacion LU.
Definition: ResuelveFactorizacionLU.hpp:45
int RequiereMatriz
Requiere matriz del tipo Bandada, Dispersa, Densa.
Definition: ResuelveSistemaLineal.hpp:77
ResuelveFactorizacionLUBandDisp(void)
Constructor de la clase.
Definition: ResuelveFactorizacionLUBandDisp.hpp:59
int tamanoBanda(void)
Retorna el tamaño de la banda.
Definition: MatrizBandDisp.hpp:65
ResuelveFactorizacionLUBandDisp(MatrizBandDisp *A)
Constructor de la clase.
Definition: ResuelveFactorizacionLUBandDisp.hpp:68
Matriz * M
Matriz.
Definition: ResuelveSistemaLineal.hpp:84
bool liberaMatriz
Indica si la matriz debera ser borrada.
Definition: ResuelveFactorizacionLUBandDisp.hpp:53
Definition: MatrizDispersa.hpp:47
ResuelveFactorizacionLUBandDisp(MatrizBand *A, Vector *x, Vector *b)
Constructor de la clase.
Definition: ResuelveFactorizacionLUBandDisp.hpp:90
virtual void liberaMemoria(void)=0
Libera la memoria solicitada para la matriz.
Vector * X
Vector solución
Definition: ResuelveSistemaLineal.hpp:80