Professional Documents
Culture Documents
ETSII-UPM
Mtodo de Eliminacin de Gauss
Matemticas de la Especialidad (Mecnica-Mquinas)
Madrid, 15 de octubre de 2002
Javier Garca de Jaln
ETSII - Departamento de Matemtica Aplicada
a la Ingeniera Industrial
ETSII-UPM
Introduccin
q La resolucin de sistemas de ecuaciones lineales es uno de los
problemas matemticos ms importantes en Ingeniera
Hasta la llegada de los computadores digitales (segunda mitad del s. XX) la
capacidad de resolver sistemas de ecuaciones estaba muy limitada, no por la
complejidad del problema, sino por el nmero de operaciones aritmticas
Ahora se puede resolver con un PC un sistema 10001000 en menos de 1 seg.
Con programas especiales que aprovechan la estructura de la matriz se pueden
resolver de forma rutinaria con PCs, sistemas de decenas cientos de miles de
ecuaciones lineales
q Muchos mtodos matemticos (clculo de valores y vectores propios,
integracin de ecuaciones diferenciales, optimizacin, ...) se reducen
a la resolucin repetida de sistemas de ecuaciones lineales
q La resolucin de sistemas de ecuaciones lineales tiene adems un
importante valor didctico
para los mtodos numricos en general
para la programacin de ordenadores
2
ETSII-UPM
Sistema de m ecuaciones con n incgnitas
q Se parte de un sistema de m ecuaciones con n incgnitas expresado
en forma matricial
q En lgebra se ha estudiado en qu condiciones este sistema Ax=b:
Tiene solucin nica: no hay variables libres (r=n) y bIm(A)
Tiene infinitas soluciones: hay variables libres (r<n) y bIm(A)
No tiene solucin: bIm(A)
y ahora se trata de ser capaz de encontrar:
La solucin nica cuando existe
La mejor solucin (o una solucin cualquiera) cuando hay infinitas soluciones
Una solucin aproximada ptima, cuando no hay solucin exacta
11 1 12 2 1 1 11 12 1 1 1
21 1 22 2 2 2 21 22 2 2 2
1 2 1 1 2 2
...
...
o bien,
...
...
n n n
n n n
m m mn n m m m mn n m
a x a x a x b a a a x b
a x a x a x b a a a x b
a a a x b a x a x a x b
+ + + 1
1
+ + +
1
; ' ; ' ;
1
1
+ + + 1
]
L
L
M M O M M M
L
ETSII-UPM
Mtodo de Gauss bsico nn
q Se parte de un sistema sin dificultades:
n ecuaciones con n incgnitas
Se suponen ecuaciones independientes
Se trata de transformar este sistema en otro
ms sencillo de resolver (misma solucin)
Restando a la 2 fila la 1 por m
21
=a
21
/a
11
De forma anloga pueden hacerse cero
todos los elementos de la 1 columna,
resultando un sistema (n-1)(n-1)
Haciendo ceros debajo de las restantes
columnas el sistema se hace triangular
Las incgnitas se pueden obtener
fcilmente empezando por x
n
11 12 1 1 1
21 22 2 2 2
1 2
...
...
...
n
n
n n nn n n
a a a x b
a a a x b
a a a x b
1
1
1
' ; ' ;
1
1
1
]
M M O M M M
11 12 1 1 1
' ' '
22 2 2 2
1 2
...
0 ...
...
n
n
n n nn n n
a a a x b
a a x b
a a a x b
1
1
1
' ; ' ;
1
1
1
]
M M O M M M
'
2 2 21 1
'
2 2 21 1
1,2,...,
j j j
a a m a j n
b b m b
11 12 1 1 1
' ' '
22 2 2 2
' ' '
2
...
0 ...
0 ...
n
n
n nn n n
a a a x b
a a x b
a a x b
1
1
1
' ; ' ;
1
1
1
]
M M O M M M
11 12 1 1 1
' ' '
22 2 2 2
( 1) ( 1)
...
0 ...
0 0 ...
n
n
n n
nn n n
a a a x b
a a x b
a x b
1
1
1
' ; ' ;
1
1
1
]
M M O M M M
1 1
n n
kk k ki i k k k ki i kk
i k i k
a x a x b x b a x a
+ +
_
+
,
3
ETSII-UPM
Mtodo de Gauss bsico nn (2)
q Factorizacin A=LU
El hacer ceros en la primera
columna de A es equivalente
a pre-multiplicar por una
matriz P
1
Haciendo lo mismo para las
columnas 2, 3, ..., n-1
El producto P
n-1
...P
2
P
1
no
tiene ninguna forma especial.
Sin embargo P
i
-1
es igual a P
i
cambiando el signo a los
coeficientes m
ij
, y el producto de
las inversas en orden opuesto se
obtiene simplemente
superponiendo las columnas.
Finalmente se demuestra que A
es el producto de dos matrices
triangulares, inferior y superior.
11 12 1
' '
21 22 2
1
' '
1 2
1 0 0
1 0 0
0 1 0
n
n
n n nn
a a a
m a a
m a a
1 1
1 1
1 1
1 1
1 1
1 1 ] ]
P A A
L L
L L
M M O M M M O M
L L
11 12 1
' '
22 2
1 2 1
( 1)
0
...
0 0
n
n
n
n
nn
a a a
a a
a
1
1
1
1
1
1
]
P P P A U
L
L
M M O M
L
1 1 1
1 2 1
11 12 1
' '
21 22 2
( 1)
1 2
...
1 0 0
1 0 0
1 0 0
n
n
n
n
n n nn
a a a
m a a
m m a
1 1
1 1
1 1
1 1
1 1
1 1
] ]
A P P P U LU
A
L L
L L
M M O M M M O M
L L
ETSII-UPM
El Mtodo de Gauss en detalle
q Se hace un cero en la posicin (2,1) multiplicando por la matriz P
21
donde
q Se hacen ceros en el resto de la 1 columna en la forma
q Obsrvese la forma en que se multiplican las matrices P
i1
q Si la matriz A es simtrica, la submatriz de P
1
A tambin lo es
11 12 13 14 15
21 22 23 24 25
31 32 33 34 35
41 42 43 44 45
a a a a a
a a a a a
a a a a a
a a a a a
1
1
1
1
1
1
]
A
21
21
1 0 0 0
1 0 0
0 0 1 0
0 0 0 1
m
1
1
1
1
]
P
11 12 13 14 15
' ' ' '
22 23 24 25
21
31 32 33 34 35
41 42 43 44 45
0
a a a a a
a a a a
a a a a a
a a a a a
1
1
1
1
1
]
P A
11 12 13 14 15
' ' ' '
22 23 24 25
41 31 21 ' ' ' '
32 33 34 35
' ' ' '
42 43 44 45
0
0
0
a a a a a
a a a a
a a a a
a a a a
1
1
1
1
1
1
]
P P P A
21
41 31 21 1
31
41
1 0 0 0
1 0 0
0 1 0
0 0 1
m
m
m
1
1
1
1
1
1
]
P P P P
21
21
11
a
m
a
'
2 2 21 1 j j j
a a m a
' 21
21 21 21 11 21 11
11
0
a
a a m a a a
a
1
1
11
i
i
a
m
a
'
1 1 ij ij i j
a a m a
4
ETSII-UPM
El Mtodo de Gauss en detalle (2)
q De la misma forma se hacen ceros debajo de los elementos de la
diagonal en la columna 2
y en la columna 3
11 12 13 14 15
' ' ' '
23 23 23 23
42 32 1 '' '' ''
33 34 35
'' '' ''
43 44 45
0
0 0
0 0
a a a a a
a a a a
a a a
a a a
1
1
1
1
1
1
]
P P P A
42 32 2
32
42
1 0 0 0
0 1 0 0
0 1 0
0 0 1
m
m
1
1
1
1
1
1
]
P P P
11 12 13 14 15
' ' ' '
22 23 24 25
43 2 1 '' '' ''
33 34 35
''' '''
44 45
0
0 0
0 0 0
a a a a a
a a a a
a a a
a a
1
1
1
1
1
1
]
P PPA
43 3
43
1 0 0 0
0 1 0 0
0 0 1 0
0 0 1 m
1
1
1
1
1
1
]
P P
ETSII-UPM
El Mtodo de Gauss en detalle (3)
q Las matrices P
j
obtenidas operan de una forma particular:
El producto P
3
P
2
no ofrece ninguna forma especial
La inversa de las matrices P
j
se obtiene cambiando el signo a los factores m
ij
El producto de las inversas en orden opuesto se realiza por superposicin
3 2
32 32
43 43 32 42 43 42
1 0 0 0 1 0 0 0 1 0 0 0
0 1 0 0 0 1 0 0 0 1 0 0
0 0 1 0 0 1 0 0 1 0
0 0 1 0 1 0 0 1
m m
m m m m m m
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
] ] ]
P P
1
2 2
32 32
42 42
1 0 0 0 1 0 0 0 1 0 0 0
0 1 0 0 0 1 0 0 0 1 0 0
0 1 0 0 1 0 0 0 1 0
0 0 1 0 0 1 0 0 0 1
m m
m m
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
1 1
] ] ]
P P
1 1
2 3
32 32
43 42 43 42
1 0 0 0 1 0 0 0 1 0 0 0
0 1 0 0 0 1 0 0 0 1 0 0
0 0 1 0 0 1 0 0 1 0
0 0 1 0 1 0 0 1
m m
m m m m
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
] ] ]
P P
5
ETSII-UPM
El Mtodo de Gauss en detalle (4)
q Finalmente se obtiene la matriz A triangularizada (o en escaln)
q Pre-multiplicando por las inversas de las matrices P
i
y teniendo en
cuenta la forma de dicho producto de inversas
q La matriz A se descompone en el producto de una matriz triangular
inferior con unos en la diagonal por una matriz triangular superior
11 12 13 14 15
' ' ' '
23 23 23 23
3 2 1 '' '' ''
33 34 35
''' '''
44 45
0
0 0
0 0 0
a a a a a
a a a a
a a a
a a
1
1
1
1
1
1
]
P P P A
11 12 13 14 15 11 12 13 14 15
' ' ' ' ' ' ' '
23 23 23 23 21 23 23 23 23 1 1 1
1 2 3 '' '' '' '' '' ''
33 34 35 31 32 33 34 35
''' ''' ''' '''
44 45 41 42 43 44 45
1 0 0 0
0 1 0 0 0
0 0 1 0 0 0
0 0 0 1 0 0 0
a a a a a a a a a a
a a a a m a a a a
a a a m m a a a
a a m m m a a
1 1
1 1
1 1
1 1
1 1
1 1
] ]
A P P P
1
1
1
1
1
1
]
A LU
ETSII-UPM
Resolucin de Sistemas de Ecuaciones
q El sistema de ecuaciones lineales Ax=b se puede resolver
combinando ecuaciones hasta que la matriz quede triangularizada y
realizando despus una vuelta atrs, segn se ha expuesto
q Otra forma de resolver el sistema Ax=b
El sistema se puede escribir en la forma: LUx=b
Se define un vector y=Ux
Se calcula y a partir del sistema triangular Ly=b
Conocido y, se calcula x del sistema triangular Ux=y
q Ventajas de la forma LUx=b
Se puede aprovechar una factorizacin anterior, previa al clculo de b. Esto es
bastante frecuente en la programacin de mtodos iterativos
Se puede utilizar una misma factorizacin para un nmero grande e incluso
indeterminado de segundos miembros
6
ETSII-UPM
Programa de Gauss bsico nn
q Algoritmo bsico con Matlab
La triangularizacin se basa en hacer un
cero en (i,k) combinando las filas i y k
Para calcular las incgnitas mediante la
vuelta atrs, el proceso es el siguiente:
=
k
k
0 i
j
k
i
for k=1:n-1
for i=k+1:n
m=A(i,k)/A(k,k);
for j=k+1:n
A(i,j)=A(i,j)-m*A(k,j);
end
b(i)=b(i)-m*b(k);
end
end
x(n)=b(n)/A(n,n);
for k=n-1:-1:1
s=0;
for i=k+1:n
s=s+A(k,i)*x(i);
end
x(k)=(b(k)-s)/A(k,k);
end
=
k
k
i
k
0
* * *
ETSII-UPM
Programa de Gauss bsico nn (2)
q Utilizacin de la simetra: el nmero de operaciones es la mitad
q Vectorizacin parcial del algoritmo: la velocidad de clculo con
Matlab (sobre todo en versiones anteriores a Matlab 6.5) aumenta
considerablemente reemplazando el for ms interno
for k=1:n-1
for i=k+1:n
m=A(k,i)/A(k,k);
for j=i:n
A(i,j)=A(i,j)-m*A(k,j);
end
b(i)=b(i)-m*b(k);
end
end
for k=1:n-1
for i=k+1:n
m=A(i,k)/A(k,k);
%for j=k+1:n
A(i,k+1:n)=A(i,k+1:n)-m*A(k,k+1:n);
%end
b(i)=b(i)-m*b(k);
end
end
7
ETSII-UPM
Programa de Gauss bsico nn (3)
q Programa para resolver un sistema en la forma LUx=Ly=b
% factorizacin A=LU
for k=1:n-1
for i=k+1:n
m=A(i,k)/A(k,k);
A(i,k+1:n)=A(i,k+1:n)-m*A(k,k+1:n);
A(i,k)=m;
end
end
% Resolucin del sistema Ly=b
y(1)=b(1);
for k=2:n
s=A(k,1:k-1)*y(1:k-1);
y(k)=b(k)-s;
end
% Resolucin del sistema Ux=b
x(n)=y(n)/A(n,n);
for k=n-1:-1:1
s=A(k,k+1:n)*x(k+1:n);
x(k)=(y(k)-s)/A(k,k);
end
=
k
k
i
k
0
* * *
1
=
k
k k
0
*
1 *
ETSII-UPM
Programa de Gauss vectorizado
q Las operaciones del mtodo de
Gauss se pueden realizar en otro
orden diferente
En vez de hacer ceros por
columnas, se hacen cero
los elementos que estn
delante de la diagonal
Los elementos en gris
tienen ya valor definitivo
Se crea el vector de factores
La fila i puede sufrir todas las transformaciones a la vez, resultando un mtodo
sensiblemente ms rpido con Matlab que los anteriores
Elementos con el
valor inicial
i
i
Elementos ya
transformados
Elementos a
hacer 0
Fila a
transformar
Elementos que
ya son 0
(1: 1) (1: 1, )' . / (( (1: 1,1: 1))' i i i diag i i v A A
1
1
( , : ) ( , : ) ( , : ) ( ) ( , : ) (1: 1) (1: 1, : )
( ,1: 1) (1: 1)
i
j
i i n i i n j i n j i i n i i i n
i i i
+ +
A A A v A v A
A v
8
ETSII-UPM
Mtodo de Gauss con pivotamiento
q En el proceso de eliminacin de Gauss es necesario dividir por los
elementos que aparecen en la diagonal, que se denominan pivots
En ocasiones puede aparecer un cero (o un elemento de valor muy pequeo) en
la posicin de un pvot: el proceso no puede continuar
Si debajo del pvot hay elementos 0 se pueden permutar las filas
correspondientes y proseguir la eliminacin
La permutacin de filas puede hacerse pre-multiplicando por una matriz P
La matriz P puede construirse a partir de un vector p con el orden de los pivots
11 12 13 14 15 11 12 13 14 15
' ' ' ' ' ' '
23 24 25 32 33 34 35
1 ' ' ' ' ' ' '
32 33 34 35 23 24 25
' ' ' ' ' ' ' '
42 43 44 45 42 43 44 45
1 0 0 0
0 0 0 0 0 1 0
0 0 0 0 1 0 0
0 0 0 0 0 1
a a a a a a a a a a
a a a a a a a
a a a a a a a
a a a a a a a a
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
1 1
] ] ]
PPA
11 12 13 14 15
' ' '
23 23 23
1 ' ' ' '
32 33 34 35
' ' ' '
42 43 44 45
0 0
0
0
a a a a a
a a a
a a a a
a a a a
1
1
1
1
1
1
]
P A
ETSII-UPM
Mtodo de Gauss con pivotamiento (2)
q Puede suceder que algunas columnas carezcan de pvot vlido
Por ejemplo, al hacer ceros en la columna 2 los elementos correspondientes de
la columna 3 se han hecho tambin cero
q El proceso normal falla y hay dos posibilidades:
La eliminacin puede proseguir en las
columnas posteriores y llegar hasta un
ltimo pvot en la ltima fila (x
3
es una
variable libre o independiente)
Le eliminacin se detiene porque debajo
del ltimo pvot encontrado todas las
filas restantes se han hecho cero (una fila
dependiente de las dems, y x
3
y x
5
libres)
11 12 13 14 15
' ' ' '
23 23 23 23
2 1 '' ''
34 35
'' ''
44 45
0
0 0 0
0 0 0
a a a a a
a a a a
a a
a a
1
1
1
1
1
1
]
P P A
44 4
43
1 0 0 0
0 1 0 0
0 0 1 0
0 0 1 m
1
1
1
1
1
1
]
P P
''
44
43 ''
34
a
m
a
11 12 13 14 15
' ' ' '
23 23 23 23
4 2 1 '' ''
34 35
'''
45
0
0 0 0
0 0 0 0
a a a a a
a a a a
a a
a
1
1
1
1
1
1
]
P P P A
11 12 13 14 15
' ' ' '
23 23 23 23
4 2 1 '' ''
34 35
0
0 0 0
0 0 0 0 0
a a a a a
a a a a
a a
1
1
1
1
1
]
P P P A
9
ETSII-UPM
Mtodo de Gauss con pivotamiento (3)
q Mtodo de Gauss con pivotamientopor columnas:
Se busca el mayor elemento en valor absoluto de la primera columna. Este
elemento servir como pvot para hacer ceros en la primera columna
El segundo pvot es el mximo elemento en valor absoluto de la 2 columna,
sin contar el elemento de la fila del primer pvot. Con este pvot se hacen ceros
en los elementos de la 2 columna que no pertenecen a una fila de un pvot
anterior
De modo anlogo se calculan los pivots en las restantes columnas y se hacen
cero los elementos de cada columna en filas en las que no hay pivots
En el sistema final es fcil hallar las incgnitas x
n
, ..., x
1
, a partir de las filas en
que han aparecido el ltimo pvot, hasta la del primero
No es necesario intercambiar filas: basta saber dnde han aparecido los pivots
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
] ] ] ]
1
1
1
1
1
1
1
]
ETSII-UPM
Mtodo de Gauss con pivotamiento (4)
q Posibles dificultades del pivotamiento por columnas:
Si una ecuacin del sistema (o una fila de la matriz) se multiplica por un
nmero muy grande, la solucin del sistema no vara, pero puede alterar el
orden en el que se eligen los pivots, y con dicho orden la solucin calculada
Por ello es conveniente que todas las filas de la matriz tengan
aproximadamente la misma norma, o bien que, al elegir los pivots se comparen
los elementos de una columna dividido cada uno de ellos por la norma de su
fila
La norma ms fcil de utilizar es la norma sub-infinito: ||A||
1
]
PA LU L
P
L
12
ETSII-UPM
Algunas funciones de Matlab
q Operador barra invertida (\)
Por lo general, la operacin A\b produce el mismo resultado que inv(A)*b,
con algunas diferencias entre las que est la forma de realizar los clculos
Si Aes una matriz cuadrada no singular, A\b es la solucin de Ax=bcalculada
por eliminacin de Gauss
Si A y b son tales que el sistema tiene infinitas soluciones o ninguna, A\b da la
solucin de variables libres nulas o la de mnimos cuadrados, respectivamente
El operador \ es "inteligente", en el sentido de que es capaz de descubrir y
aprovechar si Aes simtrica y definida-positiva, o si tiene forma triangular
q Funcin [L,U,P]=lu(A)
Calcula la factorizacin LU de la matriz PA, donde P es una matriz de
permutacin que representa el orden de filas en que han aparecido los pivots
q Funcin [R,c]=rref(A,tol)
Reduce Aa forma de escalera con ceros tambin en la parte superior. El vector
c es un vector de enteros cuyo nmero de elementos indica el rango de la
matriz y cuyos elementos indican las columnas de los pivots (variables bsicas
o dependientes)