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