• No se han encontrado resultados

Metodo de Gauss Seidel-exposicion

N/A
N/A
Protected

Academic year: 2021

Share "Metodo de Gauss Seidel-exposicion"

Copied!
14
0
0

Texto completo

(1)

INTRODUCCIÓN

INTRODUCCIÓN

En

En el

el pr

pres

esen

ente

te do

docum

cumen

ento

to se

se ex

expl

plic

ica

a de

deta

tallllad

adam

amen

ente

te El

El

Método

Método de Gauss-

de Gauss-Seidel

Seidel..

Este es u

Este es uno de los m

no de los métod

étodos mas inte

os mas interesan

resantes sien

tes siendo

do una

una

h

he

errrra

am

miie

en

ntta

a iim

mp

po

orrtta

an

ntte

e

d

de

el

l a

an

álliissiis

s n

nu

um

érriicco

o yy

p

pa

arrttiiccu

ua

alm

lme

en

ntte

e ú

úttiil

l yya

a q

qu

ue

e n

no

os

s p

pe

errm

miitte

e e

en

ncco

on

nttrra

ar

r lla

a

sso

ollu

ucciió

ón

n d

de

e u

un

n ssiisstte

em

ma

a d

de

e ““n

n”

” e

eccu

ua

acciio

on

ne

es

s cco

on

n ““n

n””

incógnitas.

incógnitas.

Norm

Normalme

almente

nte este

este tem

tema

a tie

tiene

ne proc

procesos

esos larg

largos

os y

y por

por ell

ello

o

son ideales para programar por

son ideales para programar por computadora

computadora a través de

a través de

prog

programa

ramas com

s como M

o Mat.

at. LAB

LAB y v

y visual

isual Basi

Basic

c y n

y no s

o solam

olamente

ente

pa

para

ra ha

hace

cerl

rlos

os so

sob

bre

re e

el

l pa

pap

pel

el.

. Pr

Prog

ogra

ram

mar

ar es

esto

tos

s te

tem

mas

as

permite incluso obtener una mejor comprensión de la

permite incluso obtener una mejor comprensión de la teoría

teoría

aquí

(2)

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

(3)

Método de gauss Seidel

en 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.

(4)

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:

(5)

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:

(6)

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:

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

(7)

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

seidel

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

(8)

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.

(9)

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]; } } } } i=0; for(it=0;it<100;it++)

(10)

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

(11)

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

(12)

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.

(13)

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

(14)

Referencias

Documento similar

En el método de la rigidez para el análisis estructural será la matriz de coeficientes de un sistema de ecuaciones lineales en el que el vector de términos independientes recoge

• Puede Resolver sistemas de ecuaciones NO

- Observar que las partículas gruesas se depositarán en la base y sucesivamente las partículas más finas se depositarán por encima; las partículas de arena

La estimación de volumen de madera es posible realizarlo a través de método directo donde se cortan los árboles y con el método indirecto donde se estima a partir de ecuaciones

3.3.3 Funciones de vulnerabilidad simulada para edificios de hormigón armado en España.. Para la evaluación de la vulnerabilidad sísmica de las estructuras de hormigón armado,

Para terminar esta comunicación, nos gustaría destacar la gran acogida que han tenido las experiencias llevadas a cabo, y en lo que respecta al profesor, como hemos indicado al

Uno de los métodos más utilizados para resolver numéricamente problemas de ecuaciones diferenciales ordinarias con condiciones iniciales es el método de Runge- Kutta de cuarto

En cuanto a las ecuaciones diferenciales lineales nos ocuparemos de aquéllas que tienen coeficientes constantes, para pasar después al método de los coefi- cientes indeterminados a