Resolucion de sistemas lineales
 All Classes Files Functions Variables Typedefs Macros Pages
ResuelveInversa.hpp
Go to the documentation of this file.
1 // Clase para resolver un sistema lineal mediante el uso de la matriz inversa //
3 // Revisión: 1 de Junio del 2006 //
4 // //
5 // //
6 // Análisis y Diseño y Programación: //
7 // //
8 // Nombre: Antonio Carrillo Ledesma //
9 // E-mail: acl@www.mmc.igeofcu.unam.mx //
10 // Página: http://www.mmc.igeofcu.unam.mx/acl //
11 // //
12 // //
13 // Este programa es software libre. Puede redistribuirlo y/o modificarlo //
14 // bajo los términos de la Licencia Pública General de GNU según es //
15 // publicada por la Free Software Foundation, bien de la versión 2 de //
16 // dicha Licencia o bien (según su elección) de cualquier versión //
17 // posterior. //
18 // //
19 // Este programa se distribuye con la esperanza de que sea útil, pero SIN //
20 // NINGUNA GARANTÍA, incluso sin la garantía MERCANTIL implícita o sin //
21 // garantizar la CONVENIENCIA PARA UN PROPÓSITO PARTICULAR. Véase la //
22 // Licencia Pública General de GNU para más detalles. //
23 // //
24 // Debería haber recibido una copia de la Licencia Pública General junto //
25 // con este programa. Si no ha sido así, escriba a la Free Software //
26 // Foundation, Inc., en 675 Mass Ave, Cambridge, MA 02139, EEUU. //
27 // //
28 // //
30 
31 
32 
33 #ifndef __ResuelveInversa__
34 #define __ResuelveInversa__
35 
37 #include "MatrizDensa.hpp"
38 
39 
41 
47 {
48 protected:
49 
53 
54 
55 public:
56 
59  {
60  M = NULL;
61  Inv = NULL;
62  X = NULL;
63  B = NULL;
64  MetodoModificaMatriz = true;
67  MatrizInvertida = false;
68  }
69 
71 
73  {
74  M = A;
75  Inv = NULL;
76  X = NULL;
77  B = NULL;
78  MetodoModificaMatriz = true;
81  MatrizInvertida = false;
82  }
83 
85 
89  {
90  M = A;
91  Inv = NULL;
92  X = x;
93  B = b;
94  MetodoModificaMatriz = true;
97  MatrizInvertida = false;
98  }
99 
102  {
103  delete Inv;
104  Inv = NULL;
105  }
106 
108  void resuelve(void)
109  {
110  if (!MatrizInvertida)
111  {
112  Inv = new MatrizDensa(M->renglones(),M->columnas(),"Matriz Inversa");
113  invierte(M,Inv);
114  }
115  Inv->multiplica(B,X);
116  }
117 
119 
121  void resuelve(Vector *x, Vector *b)
122  {
123  X = x;
124  B = b;
125  resuelve();
126  }
127 
128 
130 
132  void invierte(Matriz *A, Matriz *inv);
133 
134 };
135 
136 #endif
~ResuelveInversa(void)
Destructor de la clase.
Definition: ResuelveInversa.hpp:101
int renglones(void)
Retorna el número de renglones de la matriz.
Definition: Matriz_Base.hpp:103
void invierte(Matriz *A, Matriz *inv)
Calcula la inversa de una matriz usando el método de eliminación Gaussiana.
Definition: ResuelveInversa.cpp:38
Clase para el trabajar con vectores de punto flotante.
Definition: Vector.hpp:47
Clase base para el trabajar con matrices de punto flotante.
Definition: Matriz.hpp:44
Clase para resolución del sistema lineal.
Definition: ResuelveSistemaLineal.hpp:66
Clase para el trabajar con matrices densas de punto flotante.
Definition: MatrizDensa.hpp:44
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
int MetodoNumerico
Método Numerico.
Definition: ResuelveSistemaLineal.hpp:75
Clase para resolución del sistema lineal mediante el uso de la matriz inversa.
Definition: ResuelveInversa.hpp:46
ResuelveInversa(void)
Constructor de la clase.
Definition: ResuelveInversa.hpp:58
int RequiereMatriz
Requiere matriz del tipo Bandada, Dispersa, Densa.
Definition: ResuelveSistemaLineal.hpp:77
ResuelveInversa(Matriz *A, Vector *x, Vector *b)
Constructor de la clase.
Definition: ResuelveInversa.hpp:88
void resuelve(void)
Resuelve el sistema lineal.
Definition: ResuelveInversa.hpp:108
#define REQUIERE_MAT_DENS
Definition: ResuelveSistemaLineal.hpp:57
void resuelve(Vector *x, Vector *b)
Resuelve el sistema lineal.
Definition: ResuelveInversa.hpp:121
ResuelveInversa(Matriz *A)
Constructor de la clase.
Definition: ResuelveInversa.hpp:72
Matriz * M
Matriz.
Definition: ResuelveSistemaLineal.hpp:84
bool MatrizInvertida
Matriz factorizada.
Definition: ResuelveInversa.hpp:51
bool MetodoModificaMatriz
Indica si el método numérico modifica la matriz.
Definition: ResuelveSistemaLineal.hpp:71
MatrizDensa * Inv
Definition: ResuelveInversa.hpp:52
#define INVERSA
Definition: ResuelveSistemaLineal.hpp:45
Vector * X
Vector solución
Definition: ResuelveSistemaLineal.hpp:80
void multiplica(ldouble esc)
Multiplica la matriz por el escalar pasado como parametro.
Definition: MatrizDensa.cpp:129