Metodo de Gauss Seidel-exposicion

15
INTRODUCCIÓN En el presente documento se explica detalladamente El Método de Gauss-Seidel. Este es uno de los métodos mas interesantes siendo una herramienta importante del análisis numérico y particualmente útil ya que nos permite encontrar la solución de un sistema de “n” ecuaciones con “n” incógnitas. Normalmente este tema tiene procesos largos y por ello son ideales para programar por computadora a través de programas como Mat. LAB y visual Basic y no solamente para hacerlos sobre el papel. Programar estos temas permite incluso obtener una mejor comprensión de la teoría aquí presentada.

Transcript of Metodo de Gauss Seidel-exposicion

Page 1: Metodo de Gauss Seidel-exposicion

INTRODUCCIÓN

En el presente documento se explica detalladamente El Método de Gauss-Seidel.

Este es uno de los métodos mas interesantes siendo una herramienta importante del análisis numérico y particualmente útil ya que nos permite encontrar la solución de un sistema de “n” ecuaciones con “n” incógnitas.

Normalmente este tema tiene procesos largos y por ello son ideales para programar por computadora a través de programas como Mat. LAB y visual Basic y no solamente para hacerlos sobre el papel. Programar estos temas permite incluso obtener una mejor comprensión de la teoría aquí presentada.

Page 2: Metodo de Gauss Seidel-exposicion

OBJETIVOS

OBJETIVO GENERAL

Comprender las diferentes formas de solucionar sistemas de ecuaciones lineales por medio del método de descomposición de Gauss-Seidel.

OBJETIVOS ESPECÍFICOS

tener una idea clara y comprensible del método de descomposición de Gauss-Seidel.

Mostrar cómo aplicar el método ya mencionado para

facilitar la solución de sistemas de ecuaciones

Elaborando ejercicios con los conocimientos

obtenidos respecto al tema .

Page 3: Metodo de Gauss Seidel-exposicion

Método de gauss Seidelen análisis numérico el método de gauss-Seidel es un método iterativo utilizado para resolver sistemas de ecuaciones lineales este método es similar al método de Jacobi.

Mientras que en el de Jacobi se utiliza el valor de las incógnitas para determinar una nueva aproximación, en el de Gauss-Seidel se va utilizando los valores de las incógnitas recién calculados en la misma iteración, y no en la siguiente.

Es un método iterativo, lo que significa que se parte de una aproximación inicial y se repite el proceso hasta llegar a una solución con un margen de error tan pequeño como se quiera.

Bien proseguiré con la explicación del método y luego aclararé los detalles necesarios para determinar la eficacia del mismo.

Teniendo el siguiente sistema de ecuaciones:

Despejamos x1 de la ecuación 1, x2 de la ecuación 2,…, xn de la ecuación n, quedando:

Desde la formula anterior resultan las fórmulas que se deberán ir aplicando en las diferentes iteraciones.

Para comenzar a aplicar el método debemos asignar un valor arbitrario a las variables x2,…xn con el fin de obtener x1.

Page 4: Metodo de Gauss Seidel-exposicion

Lo más conveniente en este caso es que comiencen en cero, lo cual nos facilitaría el trabajo ya que se reduce el cálculo de las primeras soluciones, entonces de esto resulta que:

 Ahora despejamos x2 de la ecuación 2 y reemplazamos a x1 por el valor obtenido en la ecuación anterior. De esto nos queda:

Una vez que tenemos x2, despejamos x3 de la ecuación 3 y así sucesivamente con la n ecuaciones, cada vez asignando el valor de las x1, x2,… xn-1 obtenido en el paso anterior.

Cuando hemos despejado las xn, tenemos lo que se conoce como primera solución o solución de la primera iteración:

Con los nuevos valores de x1, x2,…,xn aplicamos los mismos pasos anteriores pero con los nuevos valores de las xn, de esta manera conseguimos una segunda solución:

Al tener esta segunda solución estamos en condiciones de calcular el error que se calcula como sigue:

EJEMPLO 1 DEL MÉTODO DE GAUSS-SEIDEL

Page 5: Metodo de Gauss Seidel-exposicion

PROBLEMA: Usar el método de Gauss-Seidel para aproximar la

solución del sistema:

Hasta que:

SOLUCIÓN:

Primero se despejan las incógnitas x1, x2 y x3 de las ecuaciones 1, 2

y 3 respectivamente. Se tiene:

Estas son el juego de fórmulas iterativas que se estará utilizando.

Se comienza el proceso iterativo.

sustituyendo los valores de x2 = x3 = 0 en la primera ecuación,

para calcular el valor de x1:

Ahora se sustituye y x3 = 0 en la segunda ecuación

para obtener x2:

Ahora se sustituye y en la tercera

ecuación para obtener x3:

Así se tiene la primera aproximación a la solución del sistema:

Page 6: Metodo de Gauss Seidel-exposicion

Puesto que todavía no se puede calcular ningún error

aproximado, se repite el proceso pero ahora con los últimos

datos obtenidos para las incógnitas:

Sustituyendo y en la ecuación 1 se

obtiene

Sustituyendo y en la ecuación 2 se obtiene

Finalmente, sustituyendo y en la

ecuación 3 se obtiene .

Es así como se tiene la segunda lista de valores de

aproximación a la solución del sistema:

Ahora se pueden calcular los errores absolutos para cada una de las

incógnitas:

Page 7: Metodo de Gauss Seidel-exposicion

Ya que no se ha logrado el objetivo se debe repetir el mismo proceso

con los últimos valores obtenidos omitiendo los pasos intermedios,

Nótese que aunque el error aproximado ya cumple con ser menor

al 1%, esto se debe cumplir para los tres errores aproximados:

En este caso se tienen los siguientes errores aproximados:

Se puede observar que ahora se ha cumplido el objetivo para cada

uno de los errores aproximados. Por lo tanto, se concluye que la

solución aproximada es:

Programa para resolver el método de gauss seidelAhora mostraré un ejemplo, mediante el uso de un programa hecho en Visual Basic para aplicar el método. El programa podrá ser descargado desde aqui. Para que todos los puedan ver y tratar de entender el funcionamiento del método.Al iniciar el programa índico que la matriz de coeficientes es de 3 filas y 3 columnas (la matriz siempre tiene que ser cuadrada). Entonces supongamos los siguientes coeficientes:

Page 8: Metodo de Gauss Seidel-exposicion

 

Luego cargo la matriz “b” que es la que contiene el valor de los resultados de las ecuaciones:

Hago clic en el botón verificar convergencia y si el programa me dice que se verifica, indico cuantas iteraciones quiero realizar y pulso en el botón “Calcular solución”.

De esta forma el programa me arroja la solución del sistema (el valor de x1, x2,…xn) y me muestra el error, denominado por el programa como “Norma Infinito”.

Se puede apreciar que la norma infinito no las muestra en notación científica, ya que es un error muy pequeño.

También el programa tiene la opción de guardar todas las iteraciones que hizo, hasta llegar a la última.

Page 9: Metodo de Gauss Seidel-exposicion

Codificación del programa

#include <stdio.h>#include <math.h>#include <iostream.h>#include <conio.h>#define L 10#define P L

float A[L][P],MATRIZ[L][P],VECTOR[L],X[L],CX[L],C[L],RESULTADOS[L],tabla[1000];float a, b, c, d, e, f;int it,ini,n,x,y,z,cont=0;

void Gauss_Seidel(int n){

for(x=0;x<n;x++){

CX[x]=0;X[x]=0;

}for(y=0;y<n;y++){

for(x=0;x<n;x++) //Ingreso de la matriz A{

cout<<"A["<<y<<"]["<<x<<"] = ";cin>>e;A[y][x]=e;MATRIZ[y][x]=e; //esta es la matriz q no varia

}cout<<"Y la constante C["<<y<<"] = ";cin>>f;C[y]=f;VECTOR[y]=f; //este es el vector que no se modifica

}int sum=0,cont=0,reglon=0;for(int i=0;i<n;i++) //se suma la diagonal principal

sum=sum+abs(A[i][i]);

for(i=0;i<n;i++) //se compara cada reglon con el valor de la diagonal{

for(int j=0;j<n;j++)reglon=reglon+abs(A[i][j]);

if(reglon<=sum) cont++;reglon=0;

}

int temp[L][P],H[P];if(cont!=n) //aqui se realiza el pivoteo{

for(i=0;i<n;i++){

for(int j=i;j<n;j++){

int d,e;d=abs(A[i][i]);e=abs(A[j][i]);if(d<e){

for(int z=0;z<n;z++){

temp[i][z]=A[i][z];A[i][z]=A[j][z];A[j][z]=temp[i][z];

}H[i]=C[i];H[j]=C[j];C[i]=H[j];C[j]=H[i];

}}

}}

Page 10: Metodo de Gauss Seidel-exposicion

i=0;for(it=0;it<100;it++){

for(y=0;y<n;y++){

for(x=0;x<n;x++)CX[y]-=(A[y][x]*X[x])/A[y][y];

CX[y]+=(C[y]/A[y][y]);X[y]=CX[y];tabla[i]=CX[y]; //tabla sirve para imprimir la tabla de resultadosi++;

}}

}

void titulo(int n){

int o=10,i=1;clrscr();for(i=1;i<n+1;i++){

o=o+10;gotoxy(o,3);cout<<"X"<<i;

}gotoxy(15,4);cout<<"--------------------------------------------";

}

void resultados(){

int q=0,i=1,t=3,s=n,r=0;int sw=0,w=0,ite=0,h=0;while((sw==0)&&(w<20)){

h=0;while(h<n){

if(tabla[r]==tabla[r+s]){

cont++;}if(cont==n)

sw=1;r++;s++;h++;

}ite++;w++;

}w=ite-1;for(int j=0;j<w;j++){

t=t+2;if((i%10==0)){

textcolor(LIGHTRED+BLINK);gotoxy(5,t-2);cprintf("\n\n Presione una tecla para ver la siguiente parte de la tabla!!! ");getch();textcolor(GREEN);clrscr();t=5;titulo(n);

}gotoxy(15,t);cout<<i<<"ø";int y=20,z=0;for(int r=0;r<n;r++){

gotoxy(y+z,t);cout<<tabla[q];q++;z=z+10;

}i++;

}

Page 11: Metodo de Gauss Seidel-exposicion

}

void main(){

textcolor(GREEN);clrscr();cout<<" Solucion de ecuaciones simultaneas\n\n\n Metodo de Gauss-Seidel";cout<<"\n\n Cuantas incognitas tendra el sistema: ";scanf("%d",&n);Gauss_Seidel(n);titulo(n);resultados();cout<<"\n\nLos resultado son ";for(x=0;x<n;x++){

RESULTADOS[x]=X[x];cout<<"\nX["<<x<<"]= "<<RESULTADOS[x];

}

CONCLUSIÓN

Luego de haber estudiado a profundidad este tema o herramientas para resolver sistemas de ecuaciones, se concluye que para resolver estos sistemas de ecuaciones lineales existen diferentes métodos, pero dependerá del

Page 12: Metodo de Gauss Seidel-exposicion

gusto de cada persona elegir uno en específico pues cada método tiene sus ventajas y sus desventajas.

Algunos métodos son más exactos, otros más fáciles de programar, otros más cortos, etc. Para ser capaces de elegir un método apropiado, lo primero que se necesita es comprender cómo se desarrolla cada uno de estos procesos.

El aprendizaje adquirido en esta investigación ha sido de gran valor y seguramente servirá de la misma manera a aquellos quienes posteriormente lean estas explicaciones y lo expuesto en este proyecto.

Page 13: Metodo de Gauss Seidel-exposicion

Universidad Técnica de Manabí

Facultad de Ciencias Matemáticas Físicas y Químicas

Proyecto de Métodos Numéricos

Tema: Método de Gauss-Seidel

4º “C”

Rizzo Ponce Jonathan Alfonso

Catedrático: Ing. Hernán Nieto

Septiembre 2010-Febrero 2011

Page 14: Metodo de Gauss Seidel-exposicion