Sunteți pe pagina 1din 19

Eliminación gaussiana y otros algoritmos

Departamento de Matemáticas, CCIR/ITESM

26 de mayo de 2010

Índice
2.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2.3. Forma escalonada por renglones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.4. Pivotes de una matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.5. Algoritmo de eliminación gaussiana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.6. Eliminación Gaussiana: ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.7. Análisis de los conjuntos solución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.8. Fórmula para todas las soluciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.9. Algoritmo de Gauss-Jordan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.10. Algoritmo de Gauss-Jordan: ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.11. Método Montante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.12. Método de Montante: ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.13. Diferencias operativas de los métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.14. Complejidad de un algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.15. Complejidad del algoritmo de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.16. Complejidad del algoritmo de Gauss-Jordan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.17. Complejidad del algoritmo de Montante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.18. Comparativa de los algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.19. Algoritmos y computadoras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.20. Y los determinantes del Método de Montante? . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.21. Pero, qué método me conviene seguir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.1. Introducción
En esta lectura veremos procedimientos sistemáticos para resolver un sistema de ecuaciones lineales. Estos
algoritmos trabajan directamente sobre la matriz aumentada del sistema llevándola a la matriz de un sistema
triangular que es equivalente al sistema inicial. La equivalencia del sistema triangular final con el inicial se
argumenta debido a que el algoritmo sólo utiliza los tres tipos de operaciones vistos en la lectura anterior y cuya
aplicación individual siempre preserva la equivalencia. Los procedimientos que revisaremos son: el algoritmo
de Eliminación Gaussiana, el algoritmo de Gauss-Jordan y el método Montante. Finalmente, se realizará una
revisión sobre el trabajo computacional realizado por estas estrategias.

2.2. Objetivos
Será importante que Usted

Entienda los conceptos: matriz escalonada y escalonada reducida.


Entienda y mecanice los procedimientos de

• Eliminación gaussiana,
• Eliminación de Gauss-Jordan, y
• El método de Montante.

Conozca las diferencias en el proceder entre los algoritmos vistos.

Comprenda las reglas para analizar las soluciones a un sistema de ecuaciones.

Comprenda el concepto de complejidad de un algoritmo.

Conozca las diferencias en los costos de cómputo de los algoritmos vistos.

2.3. Forma escalonada por renglones


Los algoritmos que veremos trabajan sobre la matriz aumentada y realizan sobre de ella operaciones elemen-
tales de renglón como fueron definidas en la lectura anterior. Esta matriz irá transformándose paulatinamente
a una matriz que posee ciertas propiedades. Lo que haremos primeramente es definir éstas.

Definición 2.1
Una matriz se dice matriz escalonada si cumple:

1. En caso de tener renglones de ceros, todos ellos están en la parte inferior de la matriz.

2. El elemento delantero de cada renglón no cero (después del primer renglón) se encuentra a la derecha
del elemento delantero del renglón anterior.

Y se llama matriz escalonada reducida si es escalonada y además cumple:

3. El elemento delantero de cualquier renglón no cero es 1.

4. Todos los elementos arriba y abajo de un 1 delantero son cero.

Ejemplo 2.1
Indique porqué las siguientes matrices no son escalonadas:
 
    2 3 −1    
2 3 −1 2 3 −1  0 0 0 0 0 0 3
0 2 
 0 0 0 ,  0 5 2 , 
 0
,  0 1 −3  ,  0 1 −3 
3 2 
0 0 1 0 2 1 0 0 −3 5 1 −3
0 0 0

Solución
En el primer ejemplo, tiene un renglón de ceros y no aparece hasta el final; no se cumple la condición 1. En
el segundo ejemplo, cuando comparamos la posición del primer elemento no cero del segundo renglón (5) con
la posición del primer elemento no cero del tercer renglón (2) vemos que el 2 no está a la derecha del 5; no se
cumple la condición 2. En el tercer ejemplo, el renglón de cero aparece hasta abajo, pero cuando se comparan
los elementos delanteros de los renglones 2 y 3 el inferior no está a la derecha del elemento delantero superior:
se cumple la condición 1 pero no la 2. En el cuarto ejemplo, falla de nuevo la condición 1. En el último ejemplo,
recuerde sólo hay escalonada de derecha a izquierda; el elemento delantero del renglón 2 no está a la derecha
de delantero del renglón 1 
Ejemplo 2.2
Indique porqué las siguientes matrices sı́ son escalonadas:
 
  2 3 −1      
2 3 −1  0 0 2 3 1 2 0 0 0 0
1 2 
 0 5 2  , 
 0
,  0 0 −3  ,  0 0 0 ,  0 0 0 
0 0 
0 0 1 0 0 0 0 0 0 0 0 0
0 0 0

2
Solución
Observe que las matrices listadas cumplen las condiciones 1 y 2 
Ejemplo 2.3
Indique porqué las siguientes matrices son escalonadas pero no reducidas:
 
    1 0 1    
1 3 −1 1 2 −1  0 1 1 3 0 1 −3
 0 1 0 
1 0 ,  0 1 2  , 
 0
,  0 0 1 ,  0 0 1 
0 1 
0 0 −2 0 0 1 0 0 0 0 0 0
0 0 0

Solución
En el primer ejemplo, está fallando la condición 3: el elemento delantero del renglón 3 debe ser 1. En el
segundo ejemplo, la condición 3 se cumple pero la condición 4 falla: arriba de los 1 delanteros debe haber sólo
ceros. En los ejemplos 3, 4 y 5, note que la condición 4 dice que todos los elementos superiores a los elementos
delanteros deben ser cero. En estos ejemplos no se cumple tan condición 
Ejemplo 2.4
Verifique que las siguientes matrices sı́ son escalonadas reducidas:
 
  1 0 −3      
1 0 0  0 0 1 0 1 3 −4 0 0 0
 0 1 1 

1 0  , 
 0 ,  0 0 1 ,  0 0 0 ,  0 0 0 
0 0 
0 0 1 0 0 0 0 0 0 0 0 0
0 0 0

Solución
Observe que en el ejemplo 2, el elemento (2,3) no es delantero por ello no se impone la condición que el elemento
superior sea cero. La matriz es efectivamente escalonada reducida 

2.4. Pivotes de una matriz


Cuando una matriz está en su forma escalonada, los primeros elementos diferentes de cero de cada renglón
reciben el nombre de elementos pivote o simplemente pivotes. Note que por ser el pivote el primer elemento
no cero del renglón, no hay forma que un renglón tenga más de un pivote: puede no tener pivote en caso de
que sea un renglón de ceros, pero no puede tener dos o más. Note también que por estar escalonada la matriz,
no hay forma que dos pivotes queden en la misma columna: puede una columna no tener pivote, pero si tiene
pivote no puede tener dos o más. De este hecho, concluimos que una matriz m × n no puede tener mas de m
pivotes porque tiene a los más uno por cada renglón. Y por otro lado, no puede tener más de n pivotes pues a
lo más tiene un pivote por cada columna. Es decir, el número de pivotes debe ser menor o igual que el mı́nimo
número entre m y n.

2.5. Algoritmo de eliminación gaussiana


El Algoritmo de Gauss o de Eliminación gaussiana consta de los siguientes pasos:

1. Determine la primer columna (a la izquierda) no cero.

2. Si el primer elemento de la columna es cero, intercámbielo por un renglón que no tenga cero.

3. Obtenga ceros abajo del elemento delantero sumando múltiplos adecuados a los renglones debajo de él.

4. Cubra el renglón y la columna de trabajo y repita el proceso comenzando en el paso 1. Al término del
ciclo entre el paso 1 al 4 (es decir cuando se han barrido todos los renglones), la matriz deberá tener
forma de escalón.

5. Comenzando con el último renglón no cero avance hacia arriba para que en cada renglón tenga un 1
delantero y arriba de él queden sólo ceros. Para ello deberá sumar múltiplos adecuados del renglón a los
renglones correspondientes.

3
Es importante observar que en el método de eliminación Gaussiana:

Los pasos del 1 a 4 aplicados repetidamente escalonan la matriz; el paso 5 aplicado repetidamente reduce
la matriz.

En el paso 2, si el elemento no es cero no se realiza intercambio.

En el paso 3, los elementos que se hacen cero son sólo los inferiores al pivote.

2.6. Eliminación Gaussiana: ejemplo

Ejemplo 2.5
Aplique el algoritmo de Gauss a la matriz:
 
3 6 −9 3
 2 4 −8 0 
−2 −3 4 −1

Solución
En nuestro caso la primer columna tiene elementos diferentes de cero, continua entonces en el paso 2. Siendo el
elemento (1, 1) diferente de cero se continua con el paso 3. El elemento (1, 1) será usado como pivote para hacer
ceros debajo de él; para ello debemos sumar múltiplos adecuados del renglón pivote a los renglones inferiores:
   
3 6 −9 3 3 6 −9 3
R2 ←R2 −(2/3) R1
 2 4 −8 0  −−−−−−−−−−−−→  0 0 −2 −2  (1)
R3 ←R3 −(−2/3) R1
−2 −3 4 −1 0 1 −2 1

El algoritmo procede tapando el renglón de trabajo, en este caso el primero. Al repetir el paso 1, el algoritmo
busca la primer columna diferente de cero; en este caso se mueve a la segunda columna y continua con el
paso 2. En vista que elemento (2, 2) es cero debemos buscar en la parte inferior de la columna 2 un elemento
diferente de cero y realizar un intercambio de renglones:
   
3 6 −9 3 3 6 −9 3
R2 ↔R3
 0 0 −2 −2  − −−−−→  0 1 −2 1  (2)
0 1 −2 1 0 0 −2 −2

Continuamos ahora con el paso 3. En este caso los elementos por debajo del elemento (2, 2) son cero, y el
algoritmo procede a la siguiente columa. El algortimo termina en sus pasos 1 al 4. Procede al paso 5.
La matriz es ahora escalonada, el siguiente paso es hacer 1 cada pivote y posteriormente hacer cero arriba
de cada uno de ellos. Hagamos 1 el elemento (3, 3):
   
3 6 −9 3 3 6 −9 3
R3 ←1/(−2) R3
 0 1 −2 1  −−−−−−−−−→  0 1 −2 1  (3)
0 0 −2 −2 0 0 1 1

Debemos hacer cero por arriba del elemento pivote (3, 3):
   
3 6 −9 3 3 6 0 12
R1 ←R1 −(−9) R3
 0 1 −2 1  − −−−−−−−−−−→  0 1 0 3  (4)
R2 ←R2 −(−2) R3
0 0 1 1 0 0 1 1

4
Procedamos con el siguiente elemento pivote (2, 2); el elemento ya es 1 y ahora debemos proceder a hacer
cero por arriba de él:    
3 6 0 12 3 0 0 −6
R1 ←R1 −6 R2
 0 1 0 3 − −−−−−−−−→  0 1 0 3  (5)
0 0 1 1 0 0 1 1
El algoritmo concluye haciendo 1 el pivote del primer renglón:
   
3 0 0 −6 1 0 0 −2
R1 ←1/3 R1
 0 1 0 3  −−−−−−−→  0 1 0 3  (6)
0 0 1 1 0 0 1 1

2.7. Análisis de los conjuntos solución


Una vez escalonando o reduciendo la matriz aumentada de un sistema, hay que saber con precisión qué se
puede decir sobre el conjunto de soluciones. Sólo hay tres posibles resultados en el análisis:

El sistema no tiene solución: sistema inconsistente.

El sistema tiene una única solución.

El sistema tiene infinitas soluciones.

Regla de Inconsistencia

El sistema es inconsistente si aparece un pivote en la columna de términos constantes.

Ejemplo 2.6
Son inconsistentes los sistemas cuya matriz aumentada se convierte mediante operaciones elementales en:
   
1 0 0 0 1 0 0 0  
 0 1 2 0  , 0 1 0 0 , 1 1 1 2 
 

 0 0 0 1   0 0 1 0  0 0 0 3
0 0 0 0 0 0 0 1

Regla de Consistencia

Es consistente cualquier sistema en cuya matriz escalonada no aparece ningún pivote en la columna
de términos constantes.

Ejemplo 2.7
Son consistentes los sistemas cuya matriz aumentada se convierte mediante operaciones elementales en:
 
  1 0 3 1
1 1 1 3  0 1
 
 0 2 2 2 , 2 1 , 1 1 1 2 
 0 0 1 1  0 1 1 1
0 0 3 1
0 0 0 0

Regla de la Solución Única

Siendo un sistema consistente, el sistema tiene solución única si en la matriz escalonada la columna
de cada variable hay un pivote.

5
Ejemplo 2.8
Tienen solución única lo sistemas cuya matriz aumentada se convierte mediante operaciones elementales en:
 
  1 0 3 1
1 1 1 3
 0 2 2 2 , 0 1 2 1  
 
 0 0 1 1 
0 0 3 1
0 0 0 0

Regla para Soluciones Infinitas

Si un sistema es consistente, el sistema tiene soluciones infinitas si en la matriz escalonada hay una
columna de una variable sin pivote.

Ejemplo 2.9
Tienen soluciones infinitas lo sistemas cuya matriz aumentada se convierte mediante operaciones elementales
en:  
  1 0 3 1
  1 1 1 3
1 1 1 3  0 1 2 1 
, 0 2 2 2 ,  0 0 0 0 

0 2 2 2
0 0 0 0
0 0 0 0
Nota Importante

Observe que de los ejemplos anteriores que los renglones de ceros pueden ocurrir en cualquiera de
los casos: puede haber renglones de ceros en la matriz y el sistema ser inconsistente, consistente
con solución única o consistente con infinitas soluciones. Es decir, los renglones de ceros no dan en
general información sobre cómo es el conjunto solución.

Pueden ocurrir o no cuando el sistema sea inconsistente:


 
1 1 2 0  
 0 1 6 2 0
1 3 0  

 0 , 0 1 1 0 
0 0 1 
0 0 0 1
0 0 0 0

Pueden ocurrir o no cuando el sistema tenga solución única:


 
1 0 1 4  
 0 1 2 −1  1 0 1 4
  ,  0 1 2 −1 
 0 0 1 1 
0 0 1 1
0 0 0 0

Pueden ocurrir o no cuando el sistema tenga infinitas soluciones:


 
1 0 1 4  
 0 1 2 −1  , 1 0 1 4

0 1 2 −1
0 0 0 0

Ejemplo 2.10
Se tiene un sistema de ecuaciones que tiene una matriz aumentada 8 × 5 y al reducirla tiene un total de 5
pivotes, entonces ..

6
A es inconsistente.

B hay soluciones infinitas.

C tiene solución única.

D si la última columna hay pivote, inconsistente. Si no, única.

E si la última columna hay pivote, inconsistente. Si no, infinitas.

Solución
Puesto que la matriz escalonada de tiene 5 pivotes y la matriz tiene 5 columnas, entonces toda columna tiene
pivote. En particular, la última columna tendrá pivote. Como la matriz es aumentada, entonces la columna
correspondiente a las constantes tendrá pivote. Por lo tanto, el sistema original será inconsistente. La opción
que describe la situación es A 

Ejemplo 2.11
Se tiene un sistema de ecuaciones que tiene una matriz aumentada 5 × 5 y al reducirla tiene un total de 4
pivotes, entonces ..

A es inconsistente.

B tiene solución única.

C hay soluciones infinitas.

D si en la última columna hay pivote, inconsistente. Si no, única.

E si la última columna hay pivote, inconsistente. Si no, infinitas.

Solución
Puesto que la matriz reducida es 5 × 5 y tiene 4 pivotes, la última columna tiene la posibilidad de tener pivote.
En cuyo caso, el sistema será inconsistente. También se tiene la posibilidad de que la última columna no tenga
pivote. En cuyo caso, el sistema será consistente y los cuatro pivotes estarán en las primeras columnas. Y por
tanto, en este caso la columna de cada variable tendrá pivote y por consiguiente cada variable será fija. Y por
lo tanto, en este caso habrá solución única. La respuesta que describe mejor la situación es la D 
Ejemplo 2.12
Se tiene un sistema homogéneo de ecuaciones que tiene una matriz aumentada 5 × 6 y al reducirla tiene un
total de 5 pivotes, entonces ..

A tiene solución única.

B si la última columna hay pivote, inconsistente. Si no única.

C es inconsistente.

D hay soluciones infinitas.

E si la última columna hay pivote, inconsistente. Si no infinitas.

7
Solución
Puesto que el sistema es homogéneo, en la columna de las constantes habrá sólo ceros. Por la naturaleza de las
operaciones elementales, en la matriz reducida sólo habrá ceros en tal columna. Por tanto, no habrá pivotes
en la columna de las constantes. Por tanto, el sistema será consistente y los 5 pivotes estarán en las primeras
columnas y por tanto, en la columna de cada variable habrá pivote. Por tanto, el sistema será consistente con
solución única 

2.8. Fórmula para todas las soluciones


Veamos ahora una estrategia para obtener la fórmula de donde se obtienen todas las soluciones a un siste-
mas de ecuaciones lineales cuando el sistema tiene infinitas soluciones. Ilustraremos esto mediante un par de
ejemplos.

Ejemplo 2.13
Manejando el orden x, y, z, w escriba en forma vectorial la solución general al sistema:

4w + 2x + 6y + 2z = 2
w + 3 x + 9 y + 4 z = −14
4 w + 3 x + 9 y + 3 z = −3
3 w + 4 x + 12 y + 4 z = −11

Reporte las coordenadas del vector que multiplica a la variable libre en la solución resultante.

Solución (Y método general)


Paso 1: Apliquemos Gauss a la matriz aumentada
Formamos la matriz aumentada con el orden que sugiere el problema (x, y, z, w):

0 −3
   
2 6 2 4 2 1 3 0
 3 9
 4 1 −14   0
→ 0 1 0 −2 

 3 9 3 4 −3   0 0 0 1 3 
4 12 4 3 −11 0 0 0 0 0

Al aplicar las reglas de análisis, observamos que el sistema es consistente (al no haber pivote en la columna
de las constantes) y con soluciones infinitas (al ser y una variable libre, recuerde que las variables fijas son
aquellas en cuya columna hay pivote)

Paso 2: Convierta cada renglón no cero en ecuación


El renglón 1 de la reducida que:
x + 3 y = −3
El renglón 2 queda:
z = −2
y el renglón 3 queda:
w=3

8
Paso 3: De cada ecuación, despeje la variable delantera.

x + 3 y = −3 → x = −3 − 3 y
z = −2 → z = −2
w = 3 → w = 3

Paso 4: Se complementan las ecuaciones introduciendo ecuaciones donde cada variable libre
es igual a sı́ misma.

x = −3 − 3 y
y = y
z = −2
w = 3

Paso 5: Se reescribe en forma vectorial las soluciones


   
x −3 − 3 y
 y   y 
 z =
   
−2 
w 3

Paso 6: Se separa el segundo miembro de acuerdo a las constantes y a las variables libres
     
x −3 −3
 y   0 
+y  1 
 
 =
 z   −2   0 
w 3 0
Lo anterior es la fórmula general para todas las soluciones del sistema original; el concepto de variable libre
indica que se puede tomar cualquier valor y que con él se produce una solución. También, aunque esto no es tan
evidente, que cualquier otra solución puede obtenerse de esta fórmula para valores adecuados de las variables
libres 

Ejemplo 2.14
Determine la solución general en forma vectorial para el sistema:

6w − 2x + 3y + 3z = 3
5w + 2x + y − 2z = 2
w − 4x + 2y + 5z = 1
13 w − 8 x + 8 y + 11 z = 7

Solución
Sigamos la metodologı́a descrita en el ejemplo anterior:

9
Aplicamos Gauss a la matriz aumentada (orden: x, y, z, w):
   
−2 3 3 6 3 1 0 −9/8 9/8 3/8
 2 1 −2 5 2   0 1 1/4 11/4 5/4 
 → 
 −4 2 5 1 1   0 0 0 0 0 
−8 8 11 13 7 0 0 0 0 0
Convertimos cada renglón diferentes de cero de la matriz reducida a una ecuación:
x − 9/8 z + 9/8 w = 3/8
y + 1/4 z + 11/4 w = 5/4
Ahora, despejamos las variables fijas (x y y):
x = 3/8 + 9/8 z − 9/8 w
y = 5/4 − 1/4 z − 11/4 w
Complementamos las ecuaciones con ecuaciones donde cada variable libre está igualada a sı́ misma:
x = 3/8 + 9/8 z − 9/8 w
y = 5/4 − 1/4 z − 11/4 w
z = z
w = w
Ahora, le damos a lo anterior la forma de una igualdad entre vectores:
   
x 3/8 + 9/8 z − 9/8 w
 y   5/4 − 1/4 z − 11/4w 
 z =
   
z 
w w
Finalmente, separamos el lado izquierdo de acuerdo a las variables libres:
       
x 3/8 9/8 −9/8
 y   5/4   −1/4   −11/4 
 z = 0 +z  1 +w 
       
0 
w 0 0 1

2.9. Algoritmo de Gauss-Jordan


El Algoritmo de Gauss-Jordan consta de los siguientes pasos:
1. Determine la primer columna (a la izquierda) no cero.
2. Si el primer elemento de la columna es cero, intercámbielo por un renglón que no tenga cero. Multiplicando
apropiadamente el renglón, hágalo 1. Este primer 1 será llamado 1 pivote.
3. Obtenga ceros arriba y abajo del 1 pivote sumando múltiplos adecuados a los renglones debajo de renglón
pivote en la matriz completa.
4. Cubra la columna y el renglón de trabajo y repita el proceso comenzando en el paso 1 con la columna
siguiente.
Es importante observar que en el método de Gauss-Jordan:
En la idea general, la matriz se va escalonando y reduciendo a la vez.
En el paso 2, si el elemento no es cero no se realiza intercambio.
En el paso 3, los elementos que se hacen cero no solo son los inferiores al pivote (Eliminación Gaussiana)
sino también los superiores.

10
2.10. Algoritmo de Gauss-Jordan: ejemplo

Ejemplo 2.15
Aplique el algoritmo de Gauss-Jordan a la matriz:
 
3 6 −9 3
 2 4 −8 0 
−2 −3 4 −1

Solución
En el paso 1 se ubica la primer columna diferente de cero: es la primer columna. En el paso 2 se revisa si el
primer elemento es diferente de cero el cual es nuestro caso. Procedemos ahora con el paso 3. Contrario al
algoritmo de Gauss, el algoritmo de Gauss-Jordan primero crea los 1’s pivote:
   
3 6 −9 3 1 2 −3 1
R1 ←1/3 R1
 2 4 −8 0  −−−−−−−→  2 4 −8 0  (7)
−2 −3 4 −1 −2 −3 4 −1

Posteriormente hace cero debajo de él:


   
1 2 −3 1 1 2 −3 1
R2 ←R2 −2 R1
 2 4 −8 0  −−−−−−−−−−−→  0 0 −2 −2  (8)
R3 ←R3 −(−2) R1
−2 −3 4 −1 0 1 −2 1

Cubrimos ahora la primer columna y el primer renglón y repetimos el procedimiento. En el paso 1 identificamos
la primer columna diferente de cero de la parte no cubierta. La primer columna cumple. Apliquemos el paso
2 ahora. En este caso el elemento (2, 2) es cero y se deberá buscar un elemento inferior que sea diferente de
cero:    
1 2 −3 1 1 2 −3 1
R2 ↔R3
 0 0 −2 −2  − −−−−→  0 1 −2 1  (9)
0 1 −2 1 0 0 −2 −2
El elemento pivote (2, 2) ya es 1; el algoritmo procede ahora a hacer ceros arriba y debajo de él:
   
1 2 −3 1 1 0 1 −1
R ←R1 −2 R2
 0 1 −2 1  −−1−−−−−−−→  0 1 −2 1  (10)
0 0 −2 −2 0 0 −2 −2

Cubrimos ahora la segunda columna y el segundo renglón de la matriz. Y procedemos de nuevo con el paso 1.
La columna de la matriz descubierta se reduce a un sólo elemento y que no es cero. Procedemos con el paso 2.
El pivote es ahora el elemento (3, 3); primero se crea el 1 pivote:
   
1 0 1 −1 1 0 1 −1
R3 ←1/(−2) R3
 0 1 −2 1  −−−−−−−−−→  0 1 −2 1  (11)
0 0 −2 −2 0 0 1 1

Posteriormente, se hacen ceros arriba y debajo de él:


   
1 0 1 −1 1 0 0 −2
R ←R1 −1 R3
 0 1 −2 1  −−−1−−−− −−−−→  0 1 0 3  (12)
R2 ←R2 −(−2) R3
0 0 1 1 0 0 1 1

11
2.11. Método Montante
El Algoritmo Montante es una estrategia desarrollada en los 70s por el profesor Mario René Montante en
aquel entonces profesor de FIME de la UANL, México. El método trabaja bajo el supuesto principal que la
matriz es sólo de números enteros y que no se realizarı́a ninguna división entre enteros salvo al final. Esto
minimiza el total de errores por redondeo. El método procede de una forma semejante al de Gauss-Jordan sin
hacer uno los pivotes y forzando a que los elementos que se harán cero sean múltiplos del pivote. El método
consta de los siguientes pasos:

1. Determine la primer columna (a la izquierda) no cero.


2. Si el primer elemento de la columna es cero, intercámbielo por un renglón que no tenga cero. Este se
llamará elemento pivote x.
3. Obtenga ceros arriba y abajo del pivote x primeramente multiplicando cada renglón por x y posterior-
mente sumando múltiplos del renglón pivote. En términos de operaciones elementales lo que se realiza
es que para cada renglón i diferente del renglón pivote hacer
Ri ← xRi
Ri ← Ri − ai,m Rm

4. Repita el proceso comenzando en el paso 1 para el renglón siguiente.

El principal comentario es que en el paso 3 la instrucción Ri ← xRi tiene la intención de hacer que el elemento
a hacer 0 se haga un múltiplo del elemento pivote de forma tal que no se requiere ninguna división en la
instrucción de eliminación.

2.12. Método de Montante: ejemplo

Ejemplo 2.16
Aplique el algoritmo de Montante a la matriz:
 
3 6 −9 3
 2 4 −8 0 
−2 −3 4 −1
Solución
Debemos multiplicar el renglón 2 y 3 por el elemento (1, 1):
   
3 6 −9 3 3 6 −9 3
R ←3 R2
 2 4 −8 0  −−2−−−−→  6 12 −24 0  (13)
R3 ←3 R3
−2 −3 4 −1 −6 −9 12 −3

Ahora la cancelación procede utilizando el renglón 1 con los elementos (2, 1) y (3, 1) anteriores a la multipli-
cación:    
3 6 −9 3 3 6 −9 3
R2 ←R2 −(2) R1
 6 12 −24 0  −−−−−−−−−−−→  0 0 −6 −6  (14)
R3 ←R3 −(−2) R1
−6 −9 12 −3 0 3 −6 3
Ahora deberemos intercambiar los renglones 2 y 3 para tener un pivote en (2, 2):
   
3 6 −9 3 3 6 −9 3
R2 ↔R3
 0 0 −6 −6  − −−−−→  0 3 −6 3  (15)
0 3 −6 3 0 0 −6 −6

12
Para eliminar el elemento arriba del pivote (2, 2) el algoritmo procede multiplicando el renglón 1 por el pivote
(2, 2):    
3 6 −9 3 9 18 −27 9
R ←3 R1
 0 3 −6 3  −−1−−−−→  0 3 −6 3  (16)
0 0 −6 −6 0 0 −6 −6
La cancelación arriba del pivote (2, 2) procede restando al renglón 1 el renglón pivote por el contenido previo
del elemento (1, 2):    
9 18 −27 9 9 0 9 −9
R1 ←R1 −(6) R2
 0 3 −6 3  −−−−−−−−−−→  0 3 −6 3  (17)
0 0 −6 −6 0 0 −6 −6
Ahora el pivote es el elemento (3, 3) y debemos hacer cero arriba de él. Para ello el algoritmo procede multi-
plicando los renglónes donde se hará la cancelación por el elemento pivote:
   
9 0 9 −9 −54 0 −54 54
R ←−6 R1
 0 3 −6 3  −−1−−−−−→  0 −18 36 −18  (18)
R2 ←−6 R2
0 0 −6 −6 0 0 −6 −6

La cancelación procede restando los múltiplos del renglón 3 usando los elementos anteriores a la multiplicación:
   
−54 0 −54 54 −54 0 0 108
R1 ←R1 −(9) R3
 0 −18 36 −18  −−−−−−−−−−−→  0 −18 0 −54  (19)
R2 ←R2 −(−6) R3
0 0 −6 −6 0 0 −6 −6

Las únicas divisiones proceden al final:

  R1 ← 1/(−54) R1  
−54 0 0 108 R2 ← 1/(−18) R2 1 0 0 −2
 0 −18 0 −54  −−−−−−−−−−−−−−−→  0 1 0 3  (20)
R3 ←1/(−6) R3
0 0 −6 −6 0 0 1 1

2.13. Diferencias operativas de los métodos


Veamos ahora un ejemplo donde se manifiesta las diferencias de operación entre los métodos

Ejemplo 2.17
Para la matriz:  
23 13 1
0 11 −3
indique cuál serı́a el siguiente paso de acuerdo a:

a) Eliminación Gaussiana

b) Método de Gauss-Jordan

c) Método de Montante

entre las opciones:

1) R1 ← 11 R1
1
2) R1 ← 23 R1
13
3) R1 ← R1 − 11 R2

13
1
4) R2 ← 11 R2

Respuesta:
Recuerde que el algoritmo de eliminación gaussiana primeramente escalona la matriz y luego reduce. En este
caso la matriz ya está escalonada: por tanto, eliminación gaussiana prepara la reducción haciendo 1 el ele-
mento pivote inferior. Por tanto, eliminación gaussiana debe hacer 1 el elemento (2, 2), lo cual coincide con la
opción 4. En el caso del Gauss-Jordan, se realiza la reducción preparando el pivote de arriba para abajo. Por
tanto, Gauss-Jordan debe hacer uno el elemento (1, 1), lo que coincide con la opción 2. El método Montante
va escalonando y reduciendo la matriz de arriba hacia abajo evitanto las divisiones. Estando escalonada la
matriz, Montante trabajarı́a con el elemento (2, 2) para hacer cero en la parte superior. En este caso particular,
Montante harı́a que el elemento (1, 2) fuera múltiplo del pivote (2, 2). Ası́ Montante, debe multiplicar el renglón
1 por el elemento pivote (2, 2). Esto corresponde a la opción 1. Resumiendo: Eliminación Gaussiana → 4,
Gauss-Jordan → 2, Montante → 1 

2.14. Complejidad de un algoritmo


Existen dos medidas importantes de una estrategia de solución o algoritmo en la resolución de un problema.
El concepto de algoritmo es el de un procedimento sistemático y muy bien especı́ficado para realizar una tarea
determinada. La primer medida de un algoritmo es su certeza, es decir, la total confianza de que cuando el
algoritmo es aplicado en un cierto problema, encontrará la solución correcta o bien indicará que el problema no
tiene solución. La otra medida es la complejidad de un algoritmo, es decir, la cantidad de trabajo involucrado
por aquella persona o sistema de cómputo que lleva a cabo cada uno de los pasos. En los algoritmos donde se
buscan soluciones numéricas el principal indicador de la medida de trabajo o complejidad es el conteo total
de las operaciones aritméticas realizadas desde el inicio del programa hasta la obtención de la solución. Las
operaciones que se contabilizan son las operaciones de suma, multiplicación, sustracción, y división. Puesto
que para las computadoras recientes el tiempo invertido por su procesador en una suma es el mismo que el
realizado por una multiplicación, resta, o división, en el conteo de operaciones no se especifica si fueron unas u
otras. La palabra FLOP (FLoating point OPeration) refiere a una operación entre números reales y abarca
suma, resta, multiplicación, o división.
El análisis que realizaremos de la complejidad de los algoritmos vistos será contando el número total
de FLOPs que se invierte cuando se aplica a un sistema lineal de n ecuaciones con n incógnitas general.
Despreciaremos en nuestro análisis el esfuezo computacional de preguntar si un número es diferente de cero,
ası́ como los posibles intercambios entre los renglones para darle la forma escalonada. Sobre este último punto,
la mayorı́a de las implementaciones computacionales de los algoritmos poseen trucos de programación para
evitar el movimiento de números en la memoria de la computadora utilizando apuntadores y vectores de
ı́ndices. Un hecho que asumiremos es que nunca nos encontraremos con una columna de ceros. De encontrarse
tal columna el trabajo computacional se reducirı́a porque la matriz con la cual se opera tiene menos números,
y esto no es un caso general. Este tipo de suposiciones se conoce como el análisis del peor de los casos. En
los siguientes análisis, haremos el truco de introducir la variable m que irá bajando sobre los renglones de la
matriz.

2.15. Complejidad del algoritmo de Gauss


Supongamos que estamos aplicamos el algoritmo de eliminación gaussiana a un sistema n por n y que
estamos trabajando ya con el renglón m. Consideraremos primero el trabajo realizado por los pasos 1 al 4 y
posteriormente el trabajo realizado en el paso 5. Es importante notar que el proceso de Gauss avanza dejando

14
la matriz escalonada hasta la columna de trabajo:

a1,1 a1,2 · · · a1,m−1 a1,m ···


 
 0 a2,2 · · · a2,m−1 a2,m ··· 
 .. .. .. .. .. ..
 
.

 . . . . . 
 
 0
 0 · · · am−1,m−1 am−1,m ··· 

 0
 0 ··· 0 am,m ··· 

 . .. .. .. .. ..
 ..

. . . . . 
0 0 ··· 0 an,m ···

1 Ciclo del paso 1 al 4


Al asumir que am,m es diferente de cero, pasamos al paso 3. En el paso 3 hay que hacer cero debajo del
elemento (m, m), para cada uno de los m − n renglones inferiores Ri ; para ello habrá que

calcular el factor f = ai,m /am,m por el cual debe multiplicarse el renglón Rm , lo cual implica
realizar una división, y posteriormente
realizar la operación:
Ri ← Ri − f Rm .
En este caso, en el renglón i hay ceros hasta antes de la columna m, en el elemento (i, m) quedará un
cero (el factor f fue calculado para ello), ası́ que los únicos elementos que deberán calcularse son los
elementos del renglón i desde la columna (m + 1) y hasta terminar, es decir, hasta la columna n + 1,
es decir, un total de (n + 1) − (m + 1) + 1 = n − m + 1 elementos, y para cada uno de ellos habrá que
hacer am+1,j ← am+1,j − f × am,j , es decir para cada uno de ellos habrá que hacer 2 FLOPs, siendo
un total de n − m + 1 elementos, el número total de FLOPs que habrá que realizar para hacer la
operación Ri ← Ri − f Rm es, incluyendo la división para calcular f , 2(n − m + 1) + 1 = 2n − 2m + 3.

Como esto habrá que aplicarlo a todos los renglones por debajo del renglón m y hasta el n, entonces
para realizar un ciclo desde el paso 1 hasta el paso 4 deben hacerse (n − m) (2 n − 2m + 3) FLOPS. El
ciclo del paso 1 al paso 4 y su repetición irá avanzando m desde 1 hasta n − 1. Por consiguiente el total
de FLOPs será:
n−1
X 2 1 7
(n − m) (2 n − 2 m + 3) = n3 + n2 − n.
3 2 6
m=1

El ciclo en el paso 5 inicia en el último renglón, hace 1 el elemento pivote y luego a cada renglón superior el
resta el renglón inferior multiplicado por la constante adecuada. Ası́, si asumimos que se está trabajando en el
renglón m la matriz se verı́a:

a1,1 a1,2 · · · a1,m 0 · · · 0 a1,n+1


 
 0 a2,2 · · · a2,m 0 · · · 0 a2,n+1 
 .. .. .. .. .. .. .. ..
 
.

 . . . . . . . 
 
 0
 0 · · · am,m 0 · · · 0 am,n+1  
 0
 0 ··· 0 1 · · · 0 am+1,n+1  
 . . . . . . . .
. . . . . . . .

 . . . . . . . . 
0 0 ··· 0 0 ··· 1 an,n+1

Es decir, que

en el renglón m sólo existirán dos elementos diferentes de cero; el elemento (m, m) y el elemento
(m, n + 1).

15
2 Ciclo del paso 5.
Las operaciones implicadas en el paso 5 serán
1
Rm ← am,m Rm
Por la observación anterior, para esto se requiere sólo una división; la del término constante entre el
elemento pivote, la del pivote entre si mismo ya sabemos que dará 1 y no se realizará, simplemente
en la posición (m, m) pondremos un 1
Rj ← Rj − aj,m Rm
Por la misma observación anterior, esta operación sólo requiere una multiplicación y una resta, estas
operaciones sólo tienen que ver con los términos constantes. Los nuevos elementos aj,m serán cero.
Como hay m − 1 renglones superiores, el total de operaciones en un ciclo del paso 5 será:

2 (m − 1) + 1 = 2 m − 1

Por consiguiente el total de FLOPs en el paso 5 será:


1
X
(2 m − 1) = n2
m=n

Por consiguiente, en general cuando se aplica en algoritmo de eliminación gaussiana a un sistema n × n el


número de FLOPs es:
2 3 3 2 7
n + n − n (21)
3 2 6

2.16. Complejidad del algoritmo de Gauss-Jordan


Supongamos que estamos aplicando el algoritmo a una matriz aumentada n por n + 1 y que estamos
trabajando con el renglón m. El algoritmo avanza del primer renglón hasta el último. Es importante notar que
el proceso de Gauss-Jordan avanza dejando la matriz reducida hasta el renglón de trabajo Rm :

1 0 ··· 0 a1,m ···


 
 0 1 ··· 0 a2,m ··· 
.. .. . . .. .. ..
 
.
 
 . . . . . 
 

 0 0 ··· 1 am−1,m · · · 


 0 0 ··· 0 am,m · · · 

 .. .. . . .. .. .. 
 . . . . . . 
0 0 ··· 0 an,m ···

Supongamos que estamos ubicados en el renglón m, lo que debemos hacer es hacer un uno pivote en la posición
(m, m) y posteriormente hacer ceros por arriba y por debajo de él.

1. Paso 2.
Lo que debe hacerse es dividir el renglón entre el elemento pivote: en dicho renglón, antes de la columna
m hay ceros, en el elemento (m, m) quedará un 1, ası́ que los únicos elementos a calcular en el renglón
m son apartir de la columna m + 1 y hasta la columna n + 1. Ası́ deberán hacerse

(n + 1) − (m + 1) + 1 = n − m + 1

divisiones.

16
2. Paso 3.
Para cada renglón i diferente de m debemos realizar

Ri ← Ri − ai,m Rm .

Cómo el renglón m tiene ceros antes de la columna m y en ai,m quedará un cero, los únicos elementos
que se calcularán son ai,j ← ai,j − ai,m am,j , desde j = m + 1 y hasta j = n + 1, es decir un total de
(n + 1) − (m + 1) + 1 = n − m + 1. Como para cada uno de ellos se realizan dos operaciones entonces el
total de FLOPs para hacer un cero en un renglón arriba o abajo de (m, m) se requieren 2 (n − m + 1)
Como hay en total n renglones , el número total de FLOPs en el paso 3 será: (n − 1) 2 (n − m + 1) Por
consiguiente, en una iteración del paso 2 seguido del paso 3 se harán n − m + 1 + (n − 1) 2 (n − m + 1)

Como el algoritmo de Gauss-Jordan itera los pasos 2 y 3 recorriendo todos los renglones, el número total de
FLOPs será:
n
X 1 1
(n − m + 1 + (n − 1) 2 (n − m + 1)) = n3 + n2 − n
2 2
m=1
Ası́, la complejidad del algoritmo de Gauss-Jordan es:

1 1
n3 + n2 − n (22)
2 2

2.17. Complejidad del algoritmo de Montante


Supongamos que aplicamos el algoritmo a una matriz aumentada n por n + 1. El algoritmo avanza del
primer renglón hasta el último. Es importante notar que el proceso de Montante avanza dejando la matriz de
la siguiente forma hasta la columna de trabajo:
a1,1 0 · · · 0 a1,m ···
 
 0 a2,2 · · · 0 a2,m ··· 
 .. .. .. .. .. .. 
 
 . . . . . . 
 
 0
 0 · · · am−1,m−1 am−1,m · · ·  
 0
 0 · · · 0 am,m · · · 

 . .. .. .. .. .. 
 .. . . . . . 
0 0 ··· 0 an,m ···
Supongamos que estamos ubicados en el renglón m, lo que debemos hacer es hacer ceros por arriba y por
debajo de él.
Multiplicación de los renglones superiores por am,m .
Esto implica realizar multiplicaciones por un total de:

(m − 1) (n − m + 1) + m − 1

Multiplicación de los renglones inferiores por am,m .


Esto implica realizar multiplicaciones por un total de:

(n − m) (n − m + 1)

A cada renglón diferente de m aplicarle Ri ← Ri − ai,m Rm


Esto da un total de:
(n − 1) 2 (n − m + 1)

17
Sumando los términos anteriores, el total de FLOPs para el trabajo con el renglón m es:

3 n2 − 3 m n + 4 m − 4

Por consiguiente, al repetir estos pasos desde el primer renglón hasta el último darán un total de FLOPs:
n
X  3 1
3 n2 − 3 m n + 4 m − 4 = n3 + n2 − 2 n
2 2
m=1

Posteriormente habrá que hacer 1 cada elemento pivote realizando n divisiones adicionales. Ası́, la complejidad
del algoritmo de Montante es:
3 3 1 2
n + n −n (23)
2 2

2.18. Comparativa de los algoritmos


A pesar que la complejidad de los algoritmos indica que el algoritmo de eliminación gaussiana es mejor
por tener la menor complejidad, la versión en computadora paralela (muchos procesadores) del algoritmo de
Gauss-Jordan tiene una menor complejidad que la versión paralela del algoritmo de Eliminación Gaussiana. Al
asignarle a cada procesador la instrucción Ri ← Ri −f ·Rj , eliminación gaussiana los ejecuta de i = j +1, . . . , n
mientras que Gauss-Jordan los ejecuta para i 6= j, aprovechando los procesadores más eficientemente. El
algoritmo de Montante tiene la ventaja que si se utiliza para matrices con coeficientes enteros las únicas
divisiones realizadas serán las últimas, lo cual reduce sustancialmente el error numérico. Una desventaja
importante del algoritmo de Montante es que los coeficientes en la matriz pueden crecer considerablemente.
En resumen, aunque el mejor algoritmo general para resolver un sistema de ecuaciones lineales es el algoritmo
de eliminación gaussiana, puede haber situaciones particulares al problema o al ambiente de computo que
haga que otro algoritmo tenga ventajas sobre él. Por ello es que es conveniente conocer otras alternativas para
resolver problemas y conocer sus ventajas o desventajas.

2.19. Algoritmos y computadoras


Las computadoras operan realizando instrucciones básicas paso a paso. Dichas instrucciones son ejecutadas
en forma sı́ncrona con un reloj interno. En nuestros dı́as (año de 2005), es común escuchar que la velocidad de
una computadora se mida en algunos pocos gigahertz, digamos por ejemplo 1.3 Gigahertz. Ello quiere decir
que el reloj interno de una computadora ejecutará 1.3 × 109 ciclos en un segundo. Lo cual equivale a decir que
aproximadamente dicha computadora ejecutará 1.3 × 109 instrucciones básicas en un segundo.
El tiempo de ejecución de un FLOP en las computadoras puede variar; en algunas computadoras toma el
tiempo de 1, 2 o en algunos casos 3, instrucciones básicas para completar un FLOP. Si seguimos el ejemplo
de la computadora de 1.3 Ghz y suponemos que nuestra hipotética computadora tome 2 instrucciones básicas
para completar un FLOP, podrı́amos decir que cada FLOP tomarı́a 1/(1.3 × 109 )/2 segundos. Para tener
una idea del uso de la complejidad del algoritmo para determinar tiempos de computo, digamos que se desea
utilizar un programa que realiza el algoritmo de Gauss en dicha computadora para resolver un sistema de
100 × 100. Entonces, dicho programa realizará 681550 FLOPs, por consiguiente el tiempo que tomará sólo
en operaciones de punto flotante será 681550/(1.3 × 109 )/2 ≈ 0.000262 segundos. Mientras que para un
sistema 1000 × 1000 será de .256986 segundos y para uno de 10000 × 10000 será de 256.467 segundos. En
ambientes de manufactura donde se utiliza el método del elemento finito para hacer simulaciones, es común
trabajar con matrices de más de 106 × 106 . Resolver un sistema 106 × 106 en tal computadora se requerirı́a,
contando sólo tiempo por operaciones de punto flotante, un poco más de 8 años en ser resuelto. Además,
requerirı́a más de 900 terabytes para ser almacenado. Por ello, es que existen algoritmos especializados que
aprovechan el hecho de que la matriz tiene una forma particular para economizar operaciones y espacio.

18
2.20. Y los determinantes del Método de Montante?
En la definición original del método de Montante como fue propuesto por su creador, se hacı́a referencia
a determinantes de 2 por 2. En la presentación dada en esta lectura hemos omitido tal referencia y hemos
preferido reducir el método a operaciones elementales de renglón las cuales creemos que hacen el método más
claro y que no requieren ningún otro concepto. Para corroborar la equivalencia, vea los siguientes cálculos al
aplicar el método Montante en la matriz dada y compare los contenidos de la matriz intermedia en la posición
(2, 2) o (3, 2) con la matriz inicial. Primeramente obligamos a que sean múltiplos de (1, 1) los contenidos de
(2, 1) y (3, 1):    
a11 a12 · · · a11 a12 ···
R2 ←a11 R2
 a21 a22 · · ·  −−−−−−−→  a11 a21 a11 a22 · · ·  (24)
R3 ←a11 R3
a31 a32 · · · a11 a31 a11 a32 · · ·
Posteriormente, se procede a hacerlos cero utilizando el elemento pivote (1, 1):
 
a11 a12 ···
R2 ←R2 −a21 R1
 a11 a21 a11 a22 · · ·  − −−−−−−−−−→
R3 ←R3 −a31 R3
a11 a31 a11 a32 · · ·   (25)
a11 a12 ···
 0 a11 a22 − a21 a12 · · · 
0 a11 a32 − a31 a12 · · ·

Viendo los contenidos finales de (2, 2) o de (3, 2) la referencia a los determinantes 2 por 2 en la matriz inicial
es obvia, aunque consideramos que también innecesaria.

2.21. Pero, qué método me conviene seguir?


Como se verá más adelante en el curso, debido al significado de cada número en la reducida, la matriz redu-
cida obtenida de una matriz dada es única. Esto significa que cualquier procedimiento basado en operaciones
elementales de renglón debe llevar al mismo resultado. Por tanto, esto nos da la posibilidad de seguir cualquier
estrategia basada en operaciones elementales de renglón para reducir una matriz. Lo que normalmente se hace
es revisar a simple vista en cada momento aquél elemento que conviene que sea pivote de manera que involucre
o menor número de operaciones o bien operaciones menos complejas. Sin duda, el hacer un número razonable
de ejemplos le irá construyendo la intuición del camino personal de reducción de una matriz.

19

S-ar putea să vă placă și