Resolucion de sistemas lineales
All Classes Files Functions Variables Typedefs Macros Pages
ResuelveSistemaLineal.hpp
Go to the documentation of this file.
1 // Clase para resolver un sistema lineal //
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 __ResuelveSistemaLineal__
34 #define __ResuelveSistemaLineal__
35 
36 
37 #include <stdlib.h>
38 #include <stdio.h>
39 #include "Matriz.hpp"
40 
41 // M�todo num�rico
42 #define CGM 0
43 #define FACT_LU 1
44 #define GAUSSSEIDEL 2
45 #define INVERSA 3
46 #define JACOBI 4
47 #define TRIDIAGONAL 5
48 #define FACT_CHOLESKI 6
49 
50 
51 // Nombre del m�todo
52 static const char Nmb[][50]= {"CGM","Factorizaci�n LU","Gauss-Seidel","Inversa","Jacobi","Tridiagonal","Choleski"};
53 
54 // Requiere matriz del tipo Bandada, Dispersa, Densa
55 #define REQUIERE_MAT_BAND 0
56 #define REQUIERE_MAT_DISP 1
57 #define REQUIERE_MAT_DENS 2
58 
59 
61 
67 {
68 protected:
69 
78 
85 
87 
88  void error(const char *txt)
89  {
90  printf("\nError resolver el sistema Lineal: %s\n\n",txt);
91  exit(1);
92  }
93 
94 
95 public:
96 
98 
101  void inicializa(Matriz *m, Vector *b, Vector *x)
102  {
103  M = m;
104  X = x;
105  B = b;
106  }
107 
110  {
111  NumIteraciones = 0;
112  }
113 
115  virtual void resuelve(void) = 0;
116 
118 
120  virtual void resuelve(Vector *b, Vector *x) = 0;
121 
122 
124 
126  {
127  return NumIteraciones;
128  }
129 
131 
133  {
134  return MetodoModificaMatriz;
135  }
136 
138 
140  {
141  return MetodoNumerico;
142  }
143 
145 
147  {
148  return RequiereMatriz;
149  }
150 
152  void informacionMetodo(void)
153  {
154  if (MetodoModificaMatriz) printf("\nM�todo %s para resolver el sistema lineal\n",Nmb[MetodoNumerico]);
155  else printf("\nM�todo %s, iteraciones para resolver el sistema lineal %d\n",Nmb[MetodoNumerico],NumIteraciones);
156  }
157 
158 
159 };
160 
161 #endif
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
virtual void resuelve(void)=0
Resuelve el sistema lineal.
Clase para resoluci�n del sistema lineal.
Definition: ResuelveSistemaLineal.hpp:66
void error(const char *txt)
Visualiza el error indicado y termina el programa.
Definition: ResuelveSistemaLineal.hpp:88
int retornaNumeroIteraciones(void)
Retorna el n�mero de iteraciones en la resoluci�n del sistema lineal.
Definition: ResuelveSistemaLineal.hpp:125
Vector * B
Vactor lado derecho.
Definition: ResuelveSistemaLineal.hpp:82
int MetodoNumerico
M�todo Numerico.
Definition: ResuelveSistemaLineal.hpp:75
int retornaMetodoNumerico(void)
Retorna el m�todo num�rico.
Definition: ResuelveSistemaLineal.hpp:139
int RequiereMatriz
Requiere matriz del tipo Bandada, Dispersa, Densa.
Definition: ResuelveSistemaLineal.hpp:77
void inicializa(Matriz *m, Vector *b, Vector *x)
Resuelve el sistema lineal.
Definition: ResuelveSistemaLineal.hpp:101
int retornaRequiereMatriz(void)
Retorna el tipo de matriz que requiere el m�todo.
Definition: ResuelveSistemaLineal.hpp:146
Matriz * M
Matriz.
Definition: ResuelveSistemaLineal.hpp:84
bool MetodoModificaMatriz
Indica si el m�todo num�rico modifica la matriz.
Definition: ResuelveSistemaLineal.hpp:71
ResuelveSistemaLineal(void)
Constructor de la clase.
Definition: ResuelveSistemaLineal.hpp:109
void informacionMetodo(void)
Visualiza la informaci�n del m�todo.
Definition: ResuelveSistemaLineal.hpp:152
bool elMetodoModificaMatriz(void)
Indica si el m�todo num�rico modifica la matriz.
Definition: ResuelveSistemaLineal.hpp:132
int NumIteraciones
Numero de iteraciones en la resoluci�n del sistema lineal.
Definition: ResuelveSistemaLineal.hpp:73
Vector * X
Vector soluci�n
Definition: ResuelveSistemaLineal.hpp:80