Vous êtes sur la page 1sur 14

INTRODUCCIN

En el presente documento se explica detalladamente El Mtodo de Gauss-Seidel.

Este es uno de los mtodos mas interesantes siendo una herramienta importante del anlisis numrico y particualmente til ya que nos permite encontrar la solucin de un sistema de n ecuaciones con n incgnitas.

Normalmente este tema tiene procesos largos y por ello son ideales para programar por computadora a travs de programas como Mat. LAB y visual Basic y no solamente para hacerlos sobre el papel. Programar estos temas permite incluso obtener una mejor comprensin de la teora aqu presentada.

OBJETIVOS

OBJETIVO GENERAL
Comprender

las diferentes formas de solucionar sistemas de ecuaciones lineales por medio del mtodo de descomposicin de Gauss-Seidel.

OBJETIVOS ESPECFICOS tener una idea clara y comprensible del mtodo de descomposicin de Gauss-Seidel.

Mostrar cmo aplicar el mtodo ya mencionado para

facilitar

la

solucin

de

sistemas con los

de

ecuaciones

Elaborando

ejercicios

conocimientos

obtenidos respecto al tema .

Mtodo de gauss Seidel


en anlisis numrico el mtodo de gauss-Seidel es un mtodo iterativo utilizado para resolver sistemas de ecuaciones lineales este mtodo es similar al mtodo de Jacobi. Mientras que en el de Jacobi se utiliza el valor de las incgnitas para determinar una nueva aproximacin, en el de Gauss-Seidel se va utilizando los valores de las incgnitas recin calculados en la misma iteracin, y no en la siguiente. Es un mtodo iterativo, lo que significa que se parte de una aproximacin inicial y se repite el proceso hasta llegar a una solucin con un margen de error tan pequeo como se quiera. Bien proseguir con la explicacin del mtodo y luego aclarar los detalles necesarios para determinar la eficacia del mismo. Teniendo el siguiente sistema de ecuaciones:

Despejamos x1 de la ecuacin 1, x2 de la ecuacin 2,, xn de la ecuacin n, quedando:

Desde la formula anterior resultan las frmulas que se debern ir aplicando en las diferentes iteraciones. Para comenzar a aplicar el mtodo debemos asignar un valor arbitrario a las variables x2,xn con el fin de obtener x1.

Lo ms conveniente en este caso es que comiencen en cero, lo cual nos facilitara el trabajo ya que se reduce el clculo de las primeras soluciones, entonces de esto resulta que:

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

Una vez que tenemos x2, despejamos x3 de la ecuacin 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 solucin o solucin de la primera iteracin:

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 solucin:

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

EJEMPLO 1 DEL MTODO DE GAUSS-SEIDEL

PROBLEMA:

Usar el mtodo de Gauss-Seidel para aproximar la

solucin del sistema:

Hasta que: SOLUCIN:


Primero se despejan las incgnitas x1, x2 y x3 de las ecuaciones 1, 2 y 3 respectivamente. Se tiene:

Estas son el juego de frmulas iterativas que se estar utilizando.

Se comienza el proceso iterativo.


sustituyendo los valores de x2 = x3 = 0 en la primera ecuacin, para calcular el valor de x1:

Ahora se sustituye para obtener x2:

y x3 = 0 en la segunda ecuacin

Ahora se sustituye ecuacin para obtener x3:

en la tercera

As se tiene la primera aproximacin a la solucin del sistema:

Puesto que todava no se puede calcular ningn error aproximado, se repite el proceso pero ahora con los ltimos datos obtenidos para las incgnitas:

Sustituyendo

en la ecuacin 1 se obtiene

Sustituyendo

en la ecuacin 2 se obtiene

Finalmente, sustituyendo ecuacin 3 se obtiene

y .

en la

Es as como se tiene la segunda lista de valores de aproximacin a la solucin del sistema:

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

Ya que no se ha logrado el objetivo se debe repetir el mismo proceso con los ltimos valores obtenidos omitiendo los pasos intermedios,

Ntese 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 solucin aproximada es:

Programa para resolver el mtodo de gauss seidel


Ahora mostrar un ejemplo, mediante el uso de un programa hecho en Visual Basic para aplicar el mtodo. El programa podr ser descargado desde aqui. Para que todos los puedan ver y tratar de entender el funcionamiento del mtodo.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:

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

Hago clic en el botn verificar convergencia y si el programa me dice que se verifica, indico cuantas iteraciones quiero realizar y pulso en el botn Calcular solucin. De esta forma el programa me arroja la solucin 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 notacin cientfica, ya que es un error muy pequeo. Tambin el programa tiene la opcin de guardar todas las iteraciones que hizo, hasta llegar a la ltima.

Codificacin 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]; } } } } 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 resultados i++; }

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++; } }

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];

CONCLUSIN
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 mtodos, pero depender del

gusto de cada persona elegir uno en especfico pues cada mtodo tiene sus ventajas y sus desventajas. Algunos mtodos son ms exactos, otros ms fciles de programar, otros ms cortos, etc. Para ser capaces de elegir un mtodo apropiado, lo primero que se necesita es comprender cmo se desarrolla cada uno de estos procesos. El aprendizaje adquirido en esta investigacin 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.

Universidad Tcnica de Manab Facultad de Ciencias Matemticas Fsicas y Qumicas Proyecto de Mtodos Numricos Tema: Mtodo de Gauss-Seidel 4 C Rizzo Ponce Jonathan Alfonso Catedrtico: Ing. Hernn Nieto Septiembre 2010-Febrero 2011

Vous aimerez peut-être aussi