Вы находитесь на странице: 1из 17

INSTITUTO POLITÉCNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERÍA QUÍMICA E


INDUSTRIAS EXTRACTIVAS

MÉTODOS NUMÉRICOS

MÉTODOS ITERATIVOS
(Métodos de Jacobi y Gauss-Seidel)

Tutor:

Sandoval Ramos Alejandro

Integrantes:

Ramírez García Gibrán Ezequiel

Sánchez Godínez Joel Adán

Paz García Ignacio Andrés

Fernández Vera Guadalupe

Martínez Girón Christian Andrey

México

Ciudad de México

3/12/18

1
Índice
Introducción.......................................................................................................................................3

Método Jacobi....................................................................................................................................3

Método Gauss-Seidel.........................................................................................................................4

Objetivo..............................................................................................................................................5

Marco teórico.....................................................................................................................................6

Solución del problema........................................................................................................................7

ALGORITMO.......................................................................................................................................8

CODIGO..............................................................................................................................................9

Bibliografía:......................................................................................................................................14

2
Introducción
Un método iterativo es un método que progresivamente va calculando aproximaciones a la
solución de un problema. En Matemáticas, en un método iterativo se repite un mismo
proceso de mejora sobre una solución aproximada: se espera que lo obtenido sea una
solución más aproximada que la inicial. El proceso se repite sobre esta nueva solución hasta
que el resultado más reciente satisfaga ciertos requisitos. A diferencia de los métodos
directos, en los cuales se debe terminar el proceso para tener la respuesta, en los métodos
iterativos se puede suspender el proceso al término de una iteración y se obtiene una
aproximación a la solución.

Método Jacobi
El método Jacobi es el método iterativo para resolver sistemas de ecuaciones lineales más
simple y se aplica sólo a sistemas cuadrados, es decir a sistemas con tantas incógnitas como
ecuaciones.

Primero se determina la ecuación de recurrencia. Para ello se ordenan las ecuaciones y las
incógnitas. De la ecuación i se despeja la incógnita i. En notación matricial se escribe como:

x=Bx+c

Donde x es el vector de incógnitas.

Después se toma una aproximación para las soluciones y a esta se le designa como x0
.Por último se itera en el ciclo que cambia la aproximación.

Uno de los principales problemas de los métodos iterativos es la garantía de que el método
va a converger, es decir, va a producir una sucesión de aproximaciones cada vez
efectivamente más próximas a la solución. En el caso del método de Jacobi no existe una
condición exacta para la convergencia. Lo mejor es una condición que garantiza la
convergencia, pero en caso de no cumplirse puede o no haberla es la siguiente:

3
Si la matriz de coeficientes original del sistema de ecuaciones es diagonalmente dominante,
el método de Jacobi seguro converge.

En ciertas ocasiones al aplicar Jacobi la matriz no es diagonalmente dominante y por tanto


no existirá garantía de convergencia. Sin embargo, en algunos casos será posible reordenar
las incógnitas en otra manera de forma que la nueva matriz de coeficientes sea
diagonalmente dominante. Esto se puede detectar revisando todos los posibles
ordenamientos de las incógnitas y ver cómo es la matriz resultante. Claro que esto conlleva
un bueno número de pruebas pues el número posible de ordenamientos en n variables es (n
− 1)! pero cuando n es reducido es sencillo.

Método Gauss-Seidel
El método de Gauss-Seidel es muy semejante 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. Por ejemplo, en el método de Jacobi se obtiene en el primer
cálculo x i+1 , pero este valor de x no se utiliza sino hasta la siguiente iteración. En el
método de Gauss-Seidel en lugar de eso se utiliza de x i+1 en lugar de xi en forma
inmediata para calcular el valor de y i+1 de igual manera procede con las siguientes
variables; siempre se utilizan las variables recién calculadas.

El problema a solucionar fue seleccionado de la materia de “Balance de materia y energía”


teniendo este, ecuaciones lineales para solución, siendo el siguiente:

Para hacer el balance de materia en un mezclador se realizó un análisis y se llegó a las


siguientes ecuaciones lineales donde M 1, M2, y M3 son las masas de las 3 corrientes que se
mezclan y los coeficientes son las fracciones en peso de cada componente en cada una de
las corrientes.

0.9 M1 - 0.1 M2 - 0.2 M3 = 7.85

0.1 M1 + 0.8 M2 - 0.3 M3 = 10

0.3 M1 - 0.2 M2 +0.7 M3 = 30


4
5
Objetivo
Usar los métodos iterativos de Jacobi así como el de Gauss-Seidel para la resolución de
problemas aplicados en la ingeniería los cuales puedan formas un sistema de ecuaciones
lineales, usando como herramienta el programa MatLab.

Identificar las ventajas y desventajas de los dos métodos y cuál sería el más exacto al
momento de la solución de problemas.

Aprender a utilizar medios de programación para el empleo de estos métodos así como la
elaboración de sus respectivos programas.

6
Marco teórico.
Para tomar en cuenta un problema y resolverlo por estos métodos iterativos debemos tomar
en cuenta varios factores los cuales son:

1- Debes haber el mismo número de ecuaciones como de incógnitas en el problema.


2- Deben se ecuaciones lineales.
3- Para una mayor exactitud en resultados la matriz que formada debe ser
diagonalmente dominante.

Teniendo en cuenta estos factores se procede a seleccionar dicho problema a resolver,


siendo el siguiente:

Para hacer el balance de materia en un mezclador se realizó un análisis y se llegó a las


siguientes ecuaciones lineales donde M 1, M2, y M3 son las masas de las 3 corrientes que se
mezclan y los coeficientes son las fracciones en peso de cada componente en cada una de
las corrientes.

0.9 M1 - 0.1 M2 - 0.2 M3 = 7.85

0.1 M1 + 0.8 M2 - 0.3 M3 = 10

0.3 M1 - 0.2 M2 +0.7 M3 = 30

Este es el problema seleccionado para resolver mediante los métodos iterativos de Jacobi y
Gauss-Seidel, usando un programa elaborado en una herramienta computacional como lo es
MATLAB.

Como se usara MATLAB para la resolución de este problema se empleara un programa el


cual contendrá comandos tales como “while”,”for” e “if”, los cuales ayudara para las
condiciones del problema como la tolerancia permitida, el número de iteraciones y en caso
de no cumplirlas regresar a un punto determinado para que estas se modifiquen y cumplan
con dichos requerimientos.

7
Solución del problema
Teniendo en cuenta el problema

Para hacer el balance de materia en un mezclador se realizó un análisis y se llegó a las


siguientes ecuaciones lineales donde M 1, M2, y M3 son las masas de las 3 corrientes que se
mezclan y los coeficientes son las fracciones en peso de cada componente en cada una de
las corrientes.

0.9 M1 - 0.1 M2 - 0.2 M3 = 7.85

0.1 M1 + 0.8 M2 - 0.3 M3 = 10

0.3 M1 - 0.2 M2 +0.7 M3 = 30

Su solución por el método de Jacobi será el siguiente.

1- Debemos realizar la matriz de las ecuaciones lineales.

[ ][ ] [ ]
0.9 −0.1 −0.2 M 1 7.85
0.1 0.8 −0.3 M 2 = 10
0.3 −0.2 0.7 M 3 30

Debemos determinar si la matriz es diagonalmente dominante, en este caso lo es, de ser el


caso contrario habría que hacerla diagonalmente dominante o lo más cercano a ser
diagonalmente dominante.

2- Ahora tenemos dos matrices la matriz A y matriz B siendo de esta forma:

[ ] [ ]
0.9 −0.1 −0.2 7.85
0.1 0.8 −0.3 matriz A 10 matriz B
0.3 −0.2 0.7 30

Esto nos servirá para que al momento de insertarlas en el programa sea fácil diferenciarlas

3- Para insertar las matrices se hará de la siguiente manera:


[ 0.9 −0.1 −0.2; 0.1 0.8 −0.3 ; 0.3 −0.2 0.7 ] matriz A
[ 7.85 10 30 ] matriz B
4- Una vez metidas las matrices se meterán los valores iniciales en este caso no se
cuentan con tales por lo que podemos decir que nuestros valores iniciales serán 0 de
igual manera se meterán en forma matricial.
8
[0 0 0];

5- Se continúa con el número de iteraciones, este número dependerá del error permitido
por lo que su número de iteraciones cambiara dependiendo de nuestro erro
permisible. Aunque de cierta manera no se sabe hasta que iteración se tendrá dicho
error este puede ser manejado a placer del usuario en este caso proponemos que
nuestro número de iteración sea hasta 15.
6- Para finalizar debemos declarar nuestro error permitido el cual variara puede ser
establecido por el problema o por el usuario mismo, en este problema no se dice nada
del error por lo que proponemos que sea menos a 1x10 -4.
7- Con estos datos ya insertado en el programa se continúa a correr dicho programa
para obtener su solución.
8- Para Gauss-Seidel será el mismo procedimiento ya que en el programa se dará la
opción de cual método usar para solucionar el problema

ALGORITMO
DATOS: Número de ecuaciones 3, matriz A=

[ 0.9 −0.1 −0.2; 0.1 0.8 −0.3 ; 0.3 −0.2 0.7 ] , matriz B= [ 7.85 10 30 ] ,

Numero de iteraciones=15, error=1x10-4.

1- Para Jacobi.
2- Determinar si la matriz es diagonalmente dominante en caso de no arreglarla de tal
como sea o se acerque a ser diagonalmente dominante.
3- Insertar comandos de “clear all” y “clc” para borrar variables que hayan tenido un valor
y limpiar la ventada de comando.
4- Insertar un menú para elegir el método por el cual resolver el problema. Utilizando el
comando “switch” se pasara al caso 1 o caso 2 dependiendo el método elegido.
5- Pedir al usuario meter los datos iniciales, matriz A y B, iteraciones, valores iniciales y
error, mediante el uso de “input”.
6- Asignar a n=length(A) lo cual es que n ocupara el tamaño de la matriz (A), X=X0, k=0,
E=1.
7- Ingresar ciclo “While” este se desarrollara mientras el error sea mayo al error permitido
(E=1), hacer que k=k+1 e imprimir este dato ya que es el número de iteración.
8- Ingresar ciclo “for” con i=1:n, suma=0
9- Ingresar otro ciclo “for” para j=1:n, dentro de este ingresa “if” en caso de que j≠i suma
= suma+A(i,j)*X0(j), cerrar ciclos “end”.
10-Hacer que X(i) = (b(i)-suma)/A(i,i); e imprimir. Terminar primer ciclo “for”
9
11- Hacer tolerancia Tolerancia = norm(X0-X); y xo=x.
12-Ingresar “if” para k≥m, ingresar “break” en caso de que se cumpla “if” romper ciclo
“while”, y terminarlo.
13-Para Gauss-Seidel Paso 2 a 8.
14-Ingresar ciclo “for” para j=1:n, dentro de este ingresa “if” en caso de que j≠i suma =
suma+A(i,j)*X(j), cerrar ciclos “end”.
15-Paso 10 a 12.

10
11
CODIGO
clear all
clc
fprintf('\n Programa que resuelve sistemas de ecuaciones lineales por metodos
iterativos')
fprintf('\n Por favor seleccione por que metodo se desea solucionar el problema en
el menu ')
Op = menu('Elija el Metodo:', 'Jacobi', 'Gauss-Seidel');
switch Op
case 1
fprintf('\n Método Jacobi \n')
A = input('Introducir la matriz A (Coeficientes): ');
b = input('introduce la matriz b (vector columna): ');
X0 = input('¿Cuales son los valores iniciales del problema?: ');
m = input('¿Que numero de iteraciones desea?: ');
E = input('¿Que tolerancia desea ocupar (error permitido)?: ');

n = length(A);
X = X0;
k = 0;
Error = 1;

while Error > E


k = k+1;
fprintf ('%d', k)
for i=1:n
suma = 0;
for j=1:n
if i~=j
suma = suma+A(i,j)*X0(j);
end
end
X(i) = (b(i)-suma)/A(i,i);
fprintf('%10.5f', X(i))
end
Error = norm(X0-X);
fprintf('%10.5f\n', Error)
X0=X;
if k>=m
break
end
end
case 2
fprintf('\n Metodo Gauss-Seidel \n')
A = input('Introducir la matriz A (Coeficientes): ');
b = input('introduce la matriz b (vector columna): ');
X0 = input('¿Cuales son los valores iniciales del problema?: ');
m = input('¿Que numero de iteraciones desea?: ');
E = input('¿Que tolerancia desea ocupar (error permitido)?: ');

n = length(A);
X = X0;
k = 0;
Error = 1;

12
while Error > E
k = k+1;
fprintf ('%d', k)
for i=1:n
suma = 0;
for j=1:n
if i~=j
suma = suma+A(i,j)*X(j);
end
end
X(i) = (b(i)-suma)/A(i,i);
fprintf('%10.5f', X(i))
end
Error = norm(X0-X);
fprintf('%10.5f\n', Error)
X0=X;
if k>=m
break
end
end
end

13
14
Concl

15
Los métodos iterativos tanto Jacobi como Gauss-Seidel son bastante eficientes y rápidos
para la resolución de problemas los cuales lleves ecuaciones lineales en ellos, aunque de
cierta manera el método de Gauss-Seidel viene siendo el más efectivo y rápido ya que con
este método a diferencia de Jacobi se necesita de menos iteraciones para llegar al resultado
además de que se utilizan los mismo datos no necesita de algo más, haciendo un ahorro de
iteraciones desde el 10 hasta el 30%, como se pudo ver en el programa con jacobi se
necesitaron de 12 iteraciones en cambio Gauss-Seidel solo 9.

El defecto que tiene estos métodos es que se necesita que las ecuaciones sean lineales, es
decir, que si se tienen ecuaciones distintas de las lineales (exponenciales, logarítmicas, etc.)
este método no aplica a menos que transformes dichas ecuaciones a lineales, de igual
manera una desventaja que tiene también es que si la matriz obtenida a partir de las
ecuaciones no es diagonalmente dominante el resultado podría no ser el exacto o incluso no
convergerían los dato haciendo que nunca se llegue a dicho resultado.

16
Bibliografía:
Nieves A. & Domínguez F. (2006). Métodos Iterativos. En Métodos Numéricos Aplicados a
la Ingeniería (pp.206-216). México: CECSA.

José G.. (2006). FUNDAMENTOS SOBRE CONVERGENCIA EN MODELOS ITERATIVOS PARA


SISTEMAS DE ECUACIONES LINEALES. Noviembre 27, 2018, de Scielo Sitio web:
http://www.scielo.org.bo/scielo.php?script=sci_arttext&pid=S2071-081X2006000100004

Cortés J. & Gonzáles M. & Pinilla V.. (2011). Solución de sistemas de ecuaciones lineales:
Métodos de Jacobi y Gauss-Seidel. Noviembre 27, 2018, de UNAM Sitio web:
http://www.ingenieria.unam.mx/~pinilla/2011/Tema2/03Jacobi.pdf

17

Вам также может понравиться