Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Informe TrabajoUnidad3 JuanJoseMejiaGonzalez
Informe TrabajoUnidad3 JuanJoseMejiaGonzalez
juan.mejiag1@udea.edu.co
Resumen.
En este artículo se presenta el diseño y desarrollo de un algoritmo que permite hallarla solución de cualquier
sistema de ecuaciones lineal utilizando dos métodos numéricos, la eliminación Gauss-Jordan y el método
iterativo de Jacobi. El algoritmo se desarrolló en lenguaje Python utilizando diversas librerías que permitirían
minimizar la extensión del código y facilitar el proceso. El objetivo se centró en probar los dos métodos y
analizar los pros y contras de cada uno para establecer que método es más recomendable utilizar dado un
caso en particular. 5 ejemplos son mostrados, ilustrando diferentes casos. Este trabajo muestra que el método
iterativo es mas eficiente, pero requiere que la matriz de sistema sea estrictamente diagonalmente dominante,
mientras que el método directo de Gauss-Jordan tarda mas en mostrar la solución y puede consumir mucha
memoria, pero sirve para todos los casos de sistemas de ecuaciones lineales de cualquier orden.
1 Introducción
Dentro de los métodos actuales se pueden encontrar dos principales tipos de métodos: los
métodos directos y los métodos iterativos. Los primeros hacen alusión a las soluciones de tipo
matricial y reducción de ecuaciones, mientras que los segundos se refieren a métodos que
realizan aproximaciones a partir de una aproximación inicial. El desarrollo de métodos para
encontrar solución a sistemas lineales es muy importante puesto que se presenta en gran
cantidad de problemas de la ingeniería y la ciencia.
2 Metodología
Un sistema de ecuaciones se resuelve por el método de Gauss cuando se obtienen sus soluciones mediante la
reducción del sistema dado a otro equivalente en el que cada ecuación tiene una incógnita menos que la anterior.
2
El método de Gauss transforma la matriz de coeficientes en una matriz triangular superior. El método de Gauss-
Jordan continúa el proceso de transformación hasta obtener una matriz diagonal.
Para realizar la reducción de filas en una matriz, se usa una secuencia de operaciones de fila elementales para
modificar la matriz hasta que la esquina inferior izquierda de la matriz se llene con ceros, tanto como sea
posible. Hay tres tipos de operaciones de fila elementales:
Usando estas operaciones, una matriz siempre se puede transformar en una matriz triangular superior, y de
hecho una que está en forma escalonada por filas.
Por otro lado, en el caso del método iterativo de Jacobi, la base del método consiste en construir una sucesión
convergente definida iterativamente. El límite de esta sucesión es precisamente la solución del sistema. A
efectos prácticos si el algoritmo se detiene después de un número finito de pasos se llega a una aproximación al
valor de x de la solución del sistema. En este trabajo, se establece 500 como el número máximo de iteraciones y
se le da al usuario la posibilidad de ingresar una tolerancia, precisamente para que cuando la distancia entre el
valor actual y el anterior sea menor a la tolerancia, se pare el método.
A=D+ R
donde D es una matriz diagonal y R , es la suma de una matriz triangular inferior L y una matriz triangular
superior U . Partiendo de Ax=B , podemos reescribir dicha ecuación como:
x=D −1 ( b−Rx )
Si aii ≠ 0 para cada i. Por la regla iterativa, la definición del Método de Jacobi puede ser expresado de la forma:
x k+1=D −1 ( b−R x k )
2.1 Código
Para la implementación del código, se usó el lenguaje de programación Python debido a sus potentes módulos.
primero se importan los módulos que se usarán, estos se muestran en la ilustración 1
4. Definir la matriz A
En caso de que se desee ingresar los coeficientes manualmente, la función matriz_usuario devolverá la
matriz A necesaria para los dos métodos.
3 Resultados
Se emplearon 4 ejemplos en los que se trató de encerrar la mayoría de las posibilidades en los
sistemas de ecuaciones lineales, desde sistema no dominante, a usar dos ejemplos aleatorios.
3.1. Ejemplo 1
Para el primer ejemplo, se seleccionó un sistema de ecuaciones lineales de dimensión 5, como se muestra en la
ilustración 3. Este sistema no es diagonalmente dominante. Para este primer ejemplo se emplearon ambos
métodos. Los resultados del método directo se muestran en la ilustración 3, mientras que los del método
iterativo se muestran en la ilustración 4.
4
3.2. Ejemplo 2
Para el segundo ejemplo, se generó una matriz cuadrada de dimensión 8, la cual se generó aleatoriamente por el
programa, al igual que el vector solución “b”. Se hizo uso del método directo Gauss-Jordan para su solución.
6
3.3. Ejemplo 3
7
En este ejemplo, se generó la matriz, el vector solución y la semilla de forma aleatoria para un sistema de
ecuaciones de orden 8. Esta vez, la matriz es diagonalmente dominante y se hace uso del método iterativo de
Jacobi.
3.4. Ejemplo 4
Para el ejemplo 4 se generó un sistema de ecuaciones lineales de orden 100 usando el método directo. El tiempo
que requirió la solución se muestra en la ilustración 12.
3.5. Ejemplo 5
Para el ejemplo 5 se generó un sistema de ecuaciones lineales de orden 100 usando el método iterativo. El
tiempo que requirió la solución se muestra en la ilustración 14.
4 Conclusiones y análisis
Como se ve en la ilustración 4, el método directo arroja una solución idéntica a la solución de la librería numpy,
mientras que el método iterativo Gauss-Jordan no logra converger luego de 500 iteraciones. De hecho, cada
iteración se aleja más de la respuesta propuesta por la librería numpy. Se debe principalmente a que la matriz
ingresada para este ejemplo no es diagonalmente dominante, por lo tanto, no se pudo garantizar la convergencia
del método.
Los métodos directos son los más confiables a la hora de buscar una solución precisa de un sistema lineal de
cualquier tipo. Sin embargo pueden llegar a presentar desventajas en problemas de uso de memoria y eficiencia
en matrices de gran tamaño, como pudo observarse en el ejemplo 5, que para solucionar un sistema de
ecuaciones de gran tamaño (orden 100), se demoró 4.5 veces más que el método iterativo.
Por otro lado, en el caso del método iterativo, aunque más rápido y eficiente, solo se garantiza su convergencia
cuando la matriz es estrictamente diagonalmente dominante. Como pudo verse en el ejemplo 2, el método no
logro encontrar una solución para un sistema que no era diagonalmente dominante.
Referencias
1. Método de Jacobi - Wikipedia, la enciclopedia libre. (2021). Retrieved 25 April 2021, from
https://es.wikipedia.org/wiki/M%C3%A9todo_de_Jacobi
2. Gaussian elimination - Wikipedia. (2021). Retrieved 25 April 2021, from
https://en.wikipedia.org/wiki/Gaussian_elimination