Está en la página 1de 5

Sistemas de ecuaciones lineales

Guía de actividad
Objetivo de la Actividad Identificar e implementar estructuras de control en Python
Fecha de la actividad
Introducción:

La noción de resolver sistemas de ecuaciones lineales es familiar desde el bachillerato. Al tener


problemas como: 200 personas de la clase se fueron de vacaciones, algunos se fueron en
camionetas que pueden llevar 8 personas y otros en buses que pueden llevar 25 cada uno.
¿Cuántos vehículos y de qué tipo se usaron si había 15 vehículos en total? x es el número de
camionetas & y es el número de buses.

8𝑥 + 25𝑦 = 200
{
𝑥 + 𝑦 = 15

Tenemos un sistema de 2 ecuaciones, para resolverlo a mano se eliminan las incógnitas una
por una resolviendo una ecuación para una de ellas en términos de las otras (y = 15 - x).
Eventualmente, tendremos una sola ecuación con una incógnita. La solución luego se sustituye
en la ecuación anterior para encontrar la siguiente incógnita y así sucesivamente.

Este sistema se puede escribir en forma de matrices:

8 25 𝑥 200
[ ][ ] = [ ]
1 1 𝑦 15

Que tiene la forma Ax = b donde A es una matriz nxn de coeficientes constantes, x es vector de
incógnitas y b es el vector de soluciones de tamaño n.

Figura 1. Las soluciones de un sistema de ecuaciones se pueden entender como el punto de


intercepción de las ecuaciones.
Las aplicaciones en ingeniería suelen requerir un número considerable de incógnitas y
ecuaciones, por lo que es necesario recurrir a métodos computacionales que permitan
simplificar el proceso. En el curso haremos referencia a dos métodos ampliamente usados:
Método de sustitución de Gauss y Gauss-Jordan.

Para ambos casos comenzaremos con un sistema de ecuaciones, utilizaremos el caso de 3


incógnitas y 3 ecuaciones:

𝑎1,1 𝑎1,2 𝑎1,3 𝑥 𝑏1


𝑎
[ 2,1 𝑎2,2 𝑎2,3 ] [𝑦] = [𝑏2 ]
𝑎3,1 𝑎3,2 𝑎3,3 𝑧 𝑏3

Luego creamos una matriz aumentada:

𝑎1,1 𝑎1,2 𝑎1,3 𝑏1


𝐴𝑢 = (𝑎2,1 𝑎2,2 𝑎2,3 |𝑏2 )
𝑎3,1 𝑎3,2 𝑎3,3 𝑏3

Método de eliminación gaussiana y sustitución hacia atrás:

Como su nombre lo indica, este método de solución implica un procedimiento de dos partes:

Eliminación:

Para este algoritmo se tienen 3 reglas:


1. Se pueden intercambiar dos filas.
2. Se pueden multiplicar los elementos de una fila por un escalar distinto de cero
3. Se puede sumar un múltiplo escalar de los elementos de una fila a los elementos de
otra fila.

Para el primer paso, la primera fila se llama fila pivote. La fila pivote en sí permanece sin
cambios, pero se usa para cambiar las filas debajo de ella. Dado que a11 es el elemento que se
usa para poner a cero los otros elementos debajo de él, se le llama elemento pivote. Actúa
como el pivote (un punto estacionario), alrededor del cual se transforman los otros elementos.
La columna en la que se encuentra el elemento pivote, es decir, la columna en la que se lleva a
cabo la puesta a cero, se denomina columna pivote.

Primero eliminamos las entradas debajo de la diagonal en la primera columna, agregando una
versión escalada de la primera fila a las otras filas. Luego se aplica el mismo procedimiento
para la segunda fila, y así sucesivamente. El resultado es una matriz triangular superior.

En el primer paso, la segunda fila se resta por el cociente entre el primer elemento de la
segunda fila y el pivote para que 𝑎2,1 sea 0.
𝑎1,1 𝑎1,2 𝑎1,3
𝑏1
𝑎 𝑎 𝑎 𝑎
𝐴𝑢 = 𝑎2,1 − ( 2,1 𝑎1,1 ) 𝑎2,2 − ( 2,1 𝑎1,2 ) 𝑎2,3 − ( 2,1 𝑎1,3 )||𝑏2 − ( 2,1 𝑏1 )
𝑎1,1 𝑎1,1 𝑎1,1 𝑎1,1
𝑎3,1 𝑎3,2 𝑎3,3 𝑏3
( )
Así:

𝑎1,1 𝑎1,2 𝑎1,3


𝑏1
𝑎2,1 𝑎 𝑎
𝐴𝑢 = 0 𝑎2,2 − ( 𝑎1,2 ) 𝑎2,3 − ( 2,1 𝑎1,3 )||𝑏2 − ( 2,1 𝑏1 )
𝑎1,1 𝑎1,1 𝑎1,1
𝑎3,1 𝑎3,2 𝑎3,3 𝑏3
( )

Luego la tercera fila se multiplica de nuevo por otro escalar y se resta de la tercera fila para
que 𝑎3,1 sea 0.

𝑎1,1 𝑎1,2 𝑎1,3 𝑏1


𝑎 𝑎2,1 𝑎2,1
0 𝑎2,2 − ( 2,1 𝑎1,2 ) 𝑎2,3 − ( 𝑎 )
𝐴𝑢 = 𝑎1,1 𝑎1,1 1,3 | 𝑏2 − (𝑎1,1 𝑏1 )
|
𝑎3,1 𝑎3,1 𝑎 𝑎
𝑎3,1 − ( 𝑎 ) 𝑎3,2 − ( 𝑎 ) 𝑎3,3 − ( 3,1 𝑎1,3 ) 𝑏3 − ( 3,1 𝑎1,2 )
( 𝑎1,1 1,1 𝑎1,1 1,2 𝑎1,1 𝑎1,1 )

Al final se tendrá una matriz aumentada de la forma

𝑎1,1 ′ 𝑎1,2 ′ 𝑎1,3 ′ 𝑏1 ′


𝐴𝑢 = ( 0 𝑎2,2 ′ 𝑎2,3 ′|𝑏2 ′)
0 0 𝑎3,3 ′ 𝑏3 ′
El algoritmo tendrá la forma:

(0) Asigne n = cantidad de incógnitas.


(1) Haga un bucle desde k = 0 hasta n; donde k especifica la fila pivote (y la columna pivote).
(2) Asignar pivote = a [k, k].
(3) Haga bucle desde i = (k + 1) hasta n + 1; donde i especifica la fila que se está transformando.
(4) Calcular el multiplicador m = a[i,k] /pivote.
(5) Haga bucle desde j = k hasta n + 2; donde j especifica la columna en la que cada elemento
individual es modificado.
(6) Calcular a[i,j] = a[i,j] - m * a[k,j]

Sustitución:

Este paso permitirá encontrar los valores de las incógnitas. El algoritmo implica sustituir los
valores conocidos y restarlos.

Algoritmo
(1) Calcule x[n] = b[n] / a [n, n].
(2) Haga un bucle hacia atrás con i desde n – 1 hasta 0.
(3) Calcule x[i] = 1/a [i, i] * (b[i] – ∑𝑗=𝑖+1(a[i, j] ∗ x[j]) )
𝑗=𝑛
Método de eliminación de Gauss-Jordan:

Este método permite encontrar una matriz diagonal (todos los elementos, excepto los de la
diagonal son cero). Es decir, en vez de encontrar una matriz triangular superior, se obtiene
una matriz identidad.

Algoritmo

(1) Se construye la matriz aumentada de la forma Au = [A b], concatenando la Matriz A con el


vector b.
(2) Se inicia un procedimiento iterativo que recorre cada uno de los pivotes de la matriz Au. Por
cada iteración 𝑘 se selecciona el pivote 𝑎𝑘𝑘 y se convierte en 1 multiplicando toda la fila del
1
pivote por . Luego que se realiza la normalización del pivote, se inicia dentro de cada
𝑎𝑘𝑘
iteración 𝑘 otro proceso iterativo que recorra cada una de las filas pertenecientes a la misma
columna del pivote, donde se calcula el factor multiplicador (𝑚𝑢𝑙𝑡𝑖  =  𝑎𝑘𝑘 ) y se calcula el termino
reductor 𝑎𝑖𝑗 = 𝑎𝑖𝑗 − 𝑚𝑢𝑙𝑡𝑖 ⋅ 𝑎𝑘𝑗 .
(3) Se retorna la última columna de la matriz aumentada.

Ejercicios:
Nota:
1. Realice los siguientes ejercicios en Python. El archivo ( .py) debe estar nombrado con el
siguiente formato: Apellido_Codigo.py. (Recuerde no incluir tildes o caracteres
especiales tipo ñ o similares)
2. Cada ejercicio debe estar debidamente comentado (#) y seccionado (sintaxis de
Pycharm ‘##’)
3. Fecha máxima de entrega: 4 abril 2022 23:59.

1. Realice una función en Python que devuelva el vector de solución x, usando el método
de Gauss. Pruebe la función con una matriz A de 3x3 y un vector b de 3x1. Compare la
solución encontrada con las funciones de la librería numpy del paquete linalg.

2. Realice una función en Python que devuelva el vector de solución x usando el método
de Gauss-Jordan. La función debe devolver igualmente la matriz inversa A-1. Compare
la solución encontrada con las funciones de la librería numpy del paquete linalg.

3. Para el sistema matricial de la forma Ax=b, explique cada uno de los casos en los cuales
el sistema tiene una única solución, infinitas soluciones o no tiene solución. Refiérase a
la matriz aumentada para explicar cada caso.

4. El círculo que pasa por los puntos (-2, 0), (-7, 1) y (5, -1) está dado por la ecuación
𝑥2 + 𝑦2 + 𝑎𝑥 + 𝑏𝑦 + 𝑐 = 0. Utilice las funciones desarrolladas en los puntos 1 y 2 para hallar
los coeficientes a, b y c. Compare la solución encontrada con las funciones de la librería
numpy del paquete linalg. Realice una gráfica del círculo encontrado para 50 puntos de
la circunferencia del círculo.

La ecuación del círculo está dada por: (x-p0)^2 + (y-p1)^2 = r^2


(círculo de radio r, centrado en el punto p0,p1)

- La ecuación anterior es equivalente a:


x^2 + y^2 + ax + by + c = 0

- Los puntos p0 y p1 son:


p0 = -(a/2), p1 = -(b/2)

- El radio r es:
r = sqrt(p0^2 + p1^2 - c)
- Las coordenadas del círculo se pueden obtener con
-> x = p0 + r*cos(theta)
-> y = p1 + r*sen(theta)
Donde theta es un vector entre 0 y 2 * pi

5. Un polinomio de orden 4 está dado por la ecuación 𝑃(𝑥) = 𝑐4𝑥4 + 𝑐3𝑥3 + 𝑐2𝑥2 + 𝑐1𝑥 + 𝑐0,
donde 𝑐4, 𝑐3, 𝑐2, 𝑐1, 𝑐0 corresponden a coeficientes constantes. Encuentre la ecuación
𝑃(𝑥) del polinomio de orden 4 que pasa por los puntos (-2.68, 0), (-3.25, 1.15), (-4.45, -
1.56), (-6.25, -2.84) y (-8.15, 0.23). Utilice las funciones desarrolladas en los puntos 1 y 2
para hallar los coeficientes requeridos. Compare la solución encontrada con las
funciones de la librería numpy del paquete linalg. Realice una gráfica del polinomio
encontrado para 𝑥 = −8.15 ∶ 0.1 ∶ −2.68

También podría gustarte