Este documento describe los métodos directos para resolver sistemas de ecuaciones lineales, incluyendo el método de Gauss-Jordan. Explica cómo transformar la matriz aumentada del sistema mediante operaciones lineales para reducirla a la forma de la matriz identidad, lo que permite obtener el vector solución. También presenta un ejemplo numérico resuelto paso a paso usando el método de Gauss-Jordan.
DIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJO
8.gaussjordan
1. 57
4 MÉTODOS DIRECTOS PARA RESOLVER SISTEMAS DE
ECUACIONES LINEALES
En este capítulo se estudia el componente algorítmico y computacional de los métodos directos
para resolver sistemas de ecuaciones lineales.
Ejemplo. Un comerciante compra tres productos: A, B, C, pero en las facturas únicamente
consta la cantidad comprada y el valor total de la compra. Se necesita determinar el precio
unitario de cada producto. Para esto dispone de tres facturas con los siguientes datos:
Factura Cantidad de A Cantidad de B Cantidad de C Valor pagado
1 4 2 5 $18.00
2 2 5 8 $27.30
3 2 4 3 $16.20
Análisis
Sean x1,x 2 ,x 3 variables que representan al precio unitario de cada producto. Entonces, se
puede escribir:
4x1 + 2x 2 + 5x 3 =18.00
2x1 + 5x 2 + 8x 3 =
27.30
2x1 + 4x 2 + 3x 3 =
16.20
El modelo matemático resultante es un sistema lineal de tres ecuaciones con tres variables.
En general, se desea resolver un sistema de n ecuaciones lineales con n variables
a1,1x1 + a1,2 x1 + ... + a1,n xn =
b1
a2,1x1 + a2,2 x1 + ... + a2,n xn =b2
...
an,1x1 + an,2 x1 + ... + an,n xn =
bn
En donde
ai,j ∈ ℜ : Coeficientes
bi ∈ ℜ : Constantes
xi ∈ ℜ : Variables cuyo valor debe determinarse
En notación matricial:
a1,1 a1,2 ... a1,n x1 b1
a a2,2 ... a2,n x 2 b2
2,1 =
... ... ... ...
an,1
an,1 ... an,n xn bn
Simbólicamente
AX = B
Siendo
a1,1 a1,2 ... a1,n b1 x1
a a2,2 ... a2,n b x
= ; B =
2,1 2 2
A = ; X
... ... ... ...
an,1
an,1 ... an,n
bn xn
2. 58
4.1 Determinantes y sistemas de ecuaciones lineales
-1
Sea A la matriz de coeficientes del sistema AX = B. Sea A su inversa y |A| su determinante.
La relación entre |A| y la existencia de la solución X se establece con la siguiente definición:
[adj(A)]t
A −1 = ,
|A|
t
En donde [adj(A)] es la transpuesta de la adjunta de la matriz A.
Si |A| ≠ 0 , entonces A −1 existe, y se puede escribir:
AX = B ⇒ A −1AX = A −1B ⇒ IX = A −1B ⇒ X = A −1B
En donde I es la matriz identidad. En resumen, si |A| ≠ 0 entonces X existe y además es único.
4.2 Método de Gauss - Jordan
La estrategia de este método consiste en transformar la matriz A del sistema AX = B y reducirla
a la matriz identidad I. Según el enunciado anterior, esto es posible si | A | ≠ 0. Aplicando
simultáneamente las mismas transformaciones al vector B, este se convertirá en el vector
solución A −1B .
En caso de que esta solución exista, el procedimiento debe transformar las ecuaciones mediante
operaciones lineales que no modifiquen la solución del sistema original, estas pueden ser:
a) Intercambiar ecuaciones
b) Multiplicar ecuaciones por alguna constante no nula
c) Sumar alguna ecuación a otra ecuación
Ejemplo. Con el Método de Gauss-Jordan resuelva el siguiente sistema de ecuaciones lineales
correspondiente al problema planteado al inicio del capítulo
4x1 + 2x 2 + 5x 3 =
18.00
2x1 + 5x 2 + 8x 3 =
27.30
2x1 + 4x 2 + 3x 3 =
16.20
Solución: Se define la matriz aumentada A | B para transformar simultáneamente A y B:
4 2 5 18.00
A | B = 2 5 8 27.30
2 4 3 16.20
Las transformaciones sucesivas de la matriz aumentada se describen en los siguientes pasos:
Dividir fila 1 para 4
1.0000 0.5000 1.2500 4.5000
2.0000 5.0000 8.0000 27.3000
2.0000 4.0000 3.0000 16.2000
3. 59
Restar de cada fila, la fila 1 multiplicada por el elemento de la columna 1
1.0000 0.5000 1.2500 4.5000
0 4.0000 5.5000 18.3000
0 3.0000 0.5000 7.2000
Dividir fila 2 para 4
1.0000 0.5000 1.2500 4.5000
0 1.0000 1.3750 4.5750
0 3.0000 0.5000 7.2000
Restar de cada fila, la fila 2 multiplicada por el elemento de la columna 2
1.0000 0 0.5625 2.2125
0 1.0000 1.3750 4.5750
0 0 -3.6250 -6.5250
Dividir fila 3 para -3.625
1.0000 0 0.5625 2.2125
0 1.0000 1.3750 4.5750
0 0 1.0000 1.8000
Restar de cada fila, la fila 3 multiplicada por el elemento de la columna 3
1.0000 0 0 1.2000
0 1.0000 0 2.1000
0 0 1.0000 1.8000
La matriz de los coeficientes ha sido transformada a la matriz identidad.
Simultáneamente, las mismas transformaciones han convertido a la última columna en el vector
solución:
1.2
X = 2.1
1.8
Como antes, la solución debe verificarse en el sistema
5. 61
>> a(1,3:4)=a(1,3:4)-a(1,3)*a(3,3:4) Reducir fila 1
a=
1.0000 0 0 1.2000
0 1.0000 1.3750 4.5750
0 0 1.0000 1.8000
>> a(2,3:4)=a(2,3:4)-a(2,3)*a(3,3:4) Reducir fila 2
a=
1.0000 0 0 1.2000
0 1.0000 0 2.1000
0 0 1.0000 1.8000
>> x=a(1:3,4) Vector solución
x=
1.2000
2.1000
1.8000
>> a*x Verificar la solución
ans =
18.0000
27.3000
16.2000
4.2.1 Formulación del método de Gauss-Jordan
Para establecer la descripción algorítmica, conviene definir la matriz aumentada A con el vector
B pues deben realizarse simultáneamente las mismas operaciones:
a1,1 a1,2 ... a1,n a1,n+1
a
2,1 a 2,2 ... a 2,n a 2,n+ 1
A |B =
... ... ... ... ...
an,1 an,2 ... an,n an,n+ 1
En donde se ha agregado la columna n+1 con el vector de las constantes:
ai,n+1 = bi, i = 1, 2, 3, ..., n (columna n+1 de la matriz aumentada)
El objetivo es transformar esta matriz y llevarla a la forma de la matriz identidad I:
a1,1 a1,2 ... a1,n a1,n+1 1 0 ... 0 a1,n+ 1
a
2,1 a 2,2 ... a2,n a2,n+1 0 1 ... 0 a2,n+ 1
A |B = →...→
... ... ... ... ... ... ... ... ... ...
an,1 an,2
... an,n an,n+ 1
0 0
... 1 an,n+ 1
Si es posible realizar esta transformación, entonces los valores que quedan en la última columna
constituirán el vector solución X
Las transformaciones deben ser realizadas en forma sistemática en n etapas, obteniendo
sucesivamente en cada etapa, cada columna de la matriz identidad, de izquierda a derecha.
En cada etapa, primero se hará que el elemento en la diagonal tome el valor 1. Luego se hará
que los demás elementos de la columna tomen el valor 0.
6. 62
1 0 ... 0 a1,n+ 1
0 1 ... 0 a2,n+ 1
... ... ... ... ...
0 0
... 1 an,n+ 1
Etapa 1
Etapa n
Etapa 2
Etapa 1
Normalizar la fila 1: (colocar 1 en el lugar del elemento a 1,1
a1,j ← a1,j / a1,1 j=1, 2, ..., n+1; supones que a1,1 ≠ 0
Reducir las otras filas: (colocar 0 en los otros elementos de la columna 1)
ai,j ← ai,j − ai,1a1,j , j=1, 2, ..., n+1; i=2, 3, ..., n
a1,1 a1,2 ... a1,n a1,n+ 1 1 a1,2 ... a1,n a1,n+ 1
A |B a2,1 a2,2 ... a2,n a2,n+ 1
→
0 a2,2 ... a2,n a2,n+ 1
... ... ... ... ... ...
an,1
an,1 ... an,n an,n+ 1
0
an,1 ... an,n an,n+ 1
Valores
transformados
Etapa 2
Normalizar la fila 2: (colocar 1 en el lugar del elemento a2,2
a2,j ← a2,j / a2,2 j=2, 3, ..., n+1; a 2,2 ≠ 0
Reducir las otras filas: (colocar 0 en los otros elementos de la columna 2
ai,j ← ai,j − ai,2 a2,j , j=2, 3, ..., n+1; i=1, 3, ..., n
Valores
1 a1,2 ... a1,n a1,n+ 1 1 0 ... a1,n a1,n+ 1 transformados
0 a2,2 ... a2,n a2,n+1 0 1 ... a2,n a2,n+1
→
... ... ... ... ... ...
0 an,1 ... an,n an,n+ 1
0
0 ... an,n an,n+ 1
La última columna contendrá e; vector solución
La formulación obtenida de estas dos etapas se puede generalizar y construir el agoritmo:
7. 63
ALGORITMO BÁSICO DE GAUSS-JORDAN
a: matriz aumentada del sistema de n ecuaciones lineales
Para e = 1, 2, . . ., n
Para j=e, e+1, ..., n+1
a e,j ← a e,j / a e,e Normalizar la fila e ( a e,e ≠ 0 )
Fin
Para i=1, 2, …, i -1, i +1,… n
Para j=e, e+1, ..., n+1
ai,j ← ai,j − ai,e a e,j Reducir las otras filas
Fin
Fin
Fin
Para i=1,2,...,n
xi ← ai,n+ 1 La última columna contendrá la solución
Fin
4.2.2 Eficiencia del método de Gauss-Jordan
El método de Gauss-Jordan es un método directo. Los métodos directos pueden estar afectados
por el error de redondeo, es decir los errores en la representación de los números que se
producen en las operaciones aritméticas. Para cuantificar la magnitud del error de redondeo se
define la función de eficiencia del método.
Sea n el tamaño del problema y T(n) la cantidad de operaciones aritméticas que se realizan
2
En la normalización: T(n) = O(n ) (Dos ciclos anidados)
3
En la reducción: T(n) = O(n ) (Tres ciclos anidados)
3
Por lo tanto, este método es de tercer orden: T(n) = O(n )
Mediante un conteo recorriendo los ciclos del algoritmo, se puede determinar la función de
eficiencia para este método directo:
e i j
1 n-1 n+1
2 n-1 n
. . .
. . .
. . .
n-1 n-1 3
n n-1 2
3 2
T(n) = (n-1)(2 + 3 + n + (n+1)) = (n-1) (3 + n ) (n/2) = n /2 + 2n /2 + 3n/2
8. 64
4.2.3 Instrumentación computacional
En esta primera versión del algoritmo se supondrá que el determinante de la matriz es diferente
de cero y que no se requiere intercambiar filas.
La codificación en MATLAB sigue directamente la formulación matemática descrita
anteriormente. Se usa notación compacta para manejo de matrices
function x=gaussjordan(a,b)
n=length(b);
a=[a,b]; %matriz aumentada
for e=1:n
a(e,e:n+1)=a(e,e:n+1)/a(e,e); %normalizar fila e
for i=1:n
if i~=e
a(i,e:n+1)=a(i,e:n+1)-a(i,e)*a(e,e:n+1); %reducir otras filas
end
end
end
x=a(1:n,n+1); %vector solución
Ejemplo. Desde la ventana de comandos de MATLAB, use la función Gauss-Jordan para
resolver el sistema:
2 3 7 x1 3
−2 5
6 x2 =
5
8 9
x 3 8
4
Escriba en la ventana de comandos de MATLAB
>> a=[2, 3, 7; -2, 5, 6; 8, 9, 4]; Matriz de coeficientes
>> b=[3; 5; 8]; Vector de constantes
>> x=gaussjordan(a,b) Llamada a la función
x=
-0.0556 Solución proporcionada por MATLAB
0.9150
0.0523
>> a*x Verificar la solución
ans =
3.0000 La solución satisface al sistema
5.0000
8.0000
Cuando se dispone de la instrumentación computacional de un algoritmo, se puede obtener
experimentalmente su eficiencia registrando, para diferentes valores de n, el tiempo de ejecución
del algoritmo. Este tiempo depende de la velocidad del procesador del dispositivo computacional,
pero es proporcional a T(n).
MATLAB dispone de las funciones tic, toc para registrar tiempo de ejecución, mientras que para
las pruebas se pueden generar matrices y vectores con números aleatorios. Se presentan
algunos resultados con obtenidos con un procesador intel core i5 y la versión 7.01 de MATLAB:
n=100, t=0.0781 seg.
n=200, t=0.3859 seg.
n=300, t=1.0336 seg.
n=400, t=2.0758 seg.
Se observa que T(n) tiene crecimiento tipo potencial
9. 65
4.2.4 Obtención de la inversa de una matriz
Para encontrar la matriz inversa se puede usar el método de Gauss-Jordan.
Sea A una matriz cuadrada cuyo determinante es diferente de cero.
Sean t 1 ,t 2 , . . . ,t m−1 ,t m las transformaciones lineales del método de Gauss-Jordan que
transforman la matriz A en la matriz identidad I incluyendo intercambios de filas
t m t m-1 . . . t 2 t 1 A = I
Entonces se puede escribir
t m t m-1 . . . t 2 t 1 A −1 A = A −1 I ⇒ t m t m-1 . . . t 2 t 1 I = A −1
Lo cual significa que las mismas transformaciones que convierten A en la matriz I, convertirán
la matriz I en la matriz A −1 .
−1
Para aplicar este algoritmo, suponiendo que se desea conocer la matriz A , se debe aumentar
la matriz anterior con la matriz I: A | B | I
Las transformaciones aplicadas simultáneamente proporcionarán finalmente el vector solución X
y la matriz identidad A −1
Ejemplo. Con el Método de Gauss-Jordan resuelva el sistema de ecuaciones siguiente y
simultáneamente obtenga la matriz inversa:
4x1 + 2x 2 + 5x 3 =
18.00
2x1 + 5x 2 + 8x 3 =
27.30
2x1 + 4x 2 + 3x 3 =
16.20
Solución. La matriz aumentada es:
4 2 5 18.00 1 0 0
A | B = 2 5 8
27.30 0 1 1
2 4 3
16.20 0 0 1
Cálculos
Normalizar fila 1 y reducir filas 2 y 3
1.0000 0.5000 1.2500 4.5000 0.2500 0 0
0 4.0000 5.5000 18.3000 -0.5000 1.0000 0
0 3.0000 0.5000 7.2000 -0.5000 0 1.0000