You are on page 1of 120

h i j

d e f g
a b c
10 8 7
9 4 6 5
1 2 3
1/120
Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales
Mtodos Matemticos de Especialidad
Ingeniera Elctrica
Sistemas de ecuaciones
lineales
Mtodos directos de solucin
Jos Luis de la Fuente OConnor
jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_sisli_12.pdf
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
2/120
ndice
Cul es el problema; consideraciones tericas
Eliminacin de Gauss
v Pivotacin
v Algoritmo
v Nmero de operaciones
v Mtodo de Gauss-Jordan
Matlab y los sistemas de ecuaciones lineales
Factorizacin LU
v Mtodos explcitos para su obtencin
Mtodo de Crout
Mtodo de Doolittle
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
3/120
v Matlab y la factorizacin LU
Solucin de sistemas modicados
Renamiento iterativo
Sistemas con matrices especiales
v Matrices simtricas
Factorizacin LDL
T
Factorizacin de Cholesky: matrices simtricas denidas positivas
Matlab y la factorizacin de Cholesky
Matrices simtricas semidenidas positivas
Matrices simtricas indenidas
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
4/120
Cul es el problema; consideraciones
tericas
Se trata de dar solucin a sistemas de ecuaciones del tipo
a
11
x
1
a
12
x
2
a
1n
x
n
= b
1
a
21
x
1
a
22
x
2
a
2n
x
n
= b
2
:
:
:
:
:
:
:
:
:
:
:
:
a
m1
x
1
a
m2
x
2
a
mn
x
n
= b
m
;
lo que signica determinar los valores de las variables x
1
; : : : ; x
n
que hacen que se cumplan todas las igualdades.
A los nmeros a
ij
se les denomina coecientes del sistema y a los
b
i
trminos independientes.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
5/120
Si se introducen las matrices
A =
_
_
_
_
a
11
a
12
a
1n
a
21
a
22
a
2n
:
:
:
:
:
:
:
:
:
a
m1
a
m2
a
mn
_

_
; x =
_
_
_
_
x
1
x
2
:
:
:
x
n
_

_
y b =
_
_
_
_
b
1
b
2
:
:
:
x
m
_

_
;
el sistema se puede representar de forma ms compacta por
Ax = b:
En general se supondr que la matriz de coecientes A R
mn
,
x R
n
y b R
m
.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
6/120
Casos posibles:
=
m < n
rango(A) = m < n
=
m < n
rango(A) < m < n
=
m > n
rango(A) = n < m
=
m > n
rango(A) < n < m
=
m = n
rango(A) = m = n
=
m = n
rango(A) < m = n
3a 3b
2a 2b
1a 1b
=
m < n
rango(A) = m < n
=
m < n
rango(A) < m < n
=
m > n
rango(A) = n < m
=
m > n
rango(A) < n < m
=
m = n
rango(A) = m = n
=
m = n
rango(A) < m = n
3a 3b
2a 2b
1a 1b
=
m < n
rango(A) = m < n
=
m < n
rango(A) < m < n
=
m > n
rango(A) = n < m
=
m > n
rango(A) < n < m
=
m = n
rango(A) = m = n
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
7/120
Recordemos algunos resultados de la teora de lgebra lineal.
Teorema (Compatibilidad de un sistema de ecuaciones lineales)
La ecuacin Ax = b admite solucin si y slo si
rango.A[b/ = rango.A/:
Corolario Si A
mn
tiene rango m, Ax = b siempre tiene solucin.
Teorema Si x
0
es una solucin de Ax = b, el conjunto de solu-
ciones de la ecuacin est dado por x
0
ker.A/.
Corolario Una solucin de Ax = b es nica si y slo si ker.A/ = 0.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
8/120
Teorema La ecuacin Ax = 0, A
mn
, n > m, siempre tiene una
solucin no trivial.
Teorema Si A es una matriz cuadrada de orden n, las siguientes
condiciones son equivalentes:
1. rango.A/ = n.
2. ker.A/ = 0.
3. Los vectores columna de A son linealmente independientes.
4. Los vectores la de A son linealmente independientes.
5. Existe una matriz de orden n, A
1
, tal que
A
1
A = AA
1
= I:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
9/120
Ejemplo
Hay que modelizar el sistema de refrigeracin de una tarjeta
electrnica para poder usar un reloj con la mayor frecuencia de
oscilacin posible.
Simplicadamente, adoptamos el modelo fsico y matemtico de la
gura en el que se esquematiza un tiristor o un transistor montado
en una placa disipadora de calor.
Thermal Model of an IC Package (1)
Objective: Find the temperature of an integrated circuit (IC)
package mounted on a heat spreader. The system of equations is
obtained from a thermal resistive network model.
Physical Model: Mathematical Model:
T
p
T
w
aire
temperatura T
a
c
Q
c

a
Q
3
R
3

a
Q
4
R
4
Q
5
R
5
Q
1
Q
2
R
2
NMM: Solving Systems of Equations page 7
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
10/120
Si el sistema necesita Q
c
watios de potencia, suponiendo un
modelo resistivo del ujo de aire entre los nudos del sistema,
aplicando los principios de conservacin de la energa, se obtienen
las ecuaciones que siguen.
Q
1
=
1
R
1
.T
c
T
p
/ Q
4
=
1
R
4
.T
p
T
a
/ Q
c
= Q
1
Q
3
Q
2
=
1
R
2
.T
p
T
w
/ Q
2
=
1
R
5
.T
w
T
a
/ Q
1
= Q
2
Q
4
Q
3
=
1
R
3
.T
c
T
a
/
Se conoce Q
c
, al igual que T
a
. Las resistencias se pueden conocer
sabiendo el material de las placas y sus propiedades.
Las incgnitas son entonces Q
1
, Q
2
, Q
3
, Q
4
, T
c
, T
p
y T
w
.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
11/120
Como hay siete ecuaciones, reagrupando las ecuaciones para aislar
las incgnitas se llega al siguiente sistema:
R
1
Q
1
T
c
T
9
= 0
R
2
Q
2
T
p
T
w
= 0
R
3
Q
3
T
c
= T
a
R
4
Q
4
T
p
= T
a
R
5
Q
2
T
w
= T
a
Q
1
Q
3
= Q
c
Q
1
Q
2
Q
4
= 0:
En forma matricial, el sistema tiene la siguiente expresin:
_
_
_
_
_
_
_
R
1
0 0 0 1 1 0
0 R
2
0 0 0 1 1
0 0 R
3
0 1 0 0
0 0 0 R
4
0 1 0
0 R
5
0 0 0 0 1
1 0 1 0 0 0 0
1 1 0 1 0 0 0
_

_
_
_
_
_
_
_
_
Q
1
Q
2
Q
3
Q
4
T
c
T
p
T
w
_

_
=
_
_
_
_
_
_
_
0
0
T
a
T
a
T
a
Q
c
0
_

_
Los ujos de calor se obtendrn resolviendo este sistema.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
12/120
En Matlab, si R
1
= 100, R
2
= 200, R
3
= 50, R
4
= 100 y
R
5
= 300; T
a
= 50 y Q
c
= 25, habra que hacer lo que sigue:
A=[100 0 0 0 -1 1 0; 0 200 0 0 0 -1 1; 0 0 50 0 -1 0 0;...
0 0 0 100 0 -1 0; 0 300 0 0 0 0 -1; 1 0 1 0 0 0 0;1 -1 0 -1 0 0 0]
A =
100 0 0 0 -1 1 0
0 200 0 0 0 -1 1
0 0 50 0 -1 0 0
0 0 0 100 0 -1 0
0 300 0 0 0 0 -1
1 0 1 0 0 0 0
1 -1 0 -1 0 0 0
b=[0;0;-50;-50;-50;25;0]
b =
0
0
-50
-50
-50
25
0
>> x=A\b
x =
1.0e+003 *
0.00535714285714
0.00089285714286
0.01964285714286
0.00446428571429
1.03214285714286
0.49642857142857
0.31785714285714
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
13/120
Interpretemos geomtricamente el problema de resolver en dos
dimensiones un sistema de ecuaciones lineales cualquiera
a
11
x
1
a
12
x
2
= b
1
a
21
x
1
a
22
x
2
= b
2
:
Cada una de las ecuaciones que componen el sistema representa
una recta en el espacio eucldeo de dimensin dos, segn se
describe en la gura.
x
1
x
2
a
21
x
1
+a
22
x
2
= b
2
a
11
x
1
+a
12
x
2
= b
1
La resolucin del sistema tiene como objetivo la bsqueda de las
coordenadas del punto donde se cortan esas dos rectas.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
14/120
En la siguiente gura se pueden ver sistemas donde existen
dicultades para encontrar ese punto de interseccin, al menos
visualmente.
Copyright The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
Fig 9.2
Generalizando a R
n
, la resolucin de un sistema de ecuaciones
lineales se puede interpretar como la bsqueda de las coordenadas
del(os) punto(s) de interseccin de los hiperplanos asociados a cada
una de las ecuaciones.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
15/120
Interpretemos geomtricamente el problema en el subespacio
Im.A/.
Si se escribe el sistema de dos ecuaciones con dos incgnitas de
la forma
_
a
11
a
21
_
x
1

_
a
12
a
22
_
x
2
=
_
b
1
b
2
_
;
el problema es el de descomponer linealmente el vector b en los
vectores columna que denen las dos columnas de la matriz de
coecientes.

b
1
b
2

a
12
a
22

a
11
a
21

h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
16/120
En R
n
, el problema se reere a la bsqueda de la descomposicin
lineal de un vector de n componentes segn n vectores dados: los
que forman la base de Im.A/ que denen los vectores columna de
A.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
17/120
ndice
Cul es el problema; consideraciones tericas
Eliminacin de Gauss
Matlab y los sistemas de ecuaciones lineales
Factorizacin LU
Solucin de sistemas modicados
Renamiento iterativo
Sistemas con matrices especiales
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
18/120
Mtodos directos: Eliminacin de
Gauss
Los mtodos directos resuelven el problema en un nmero de
etapas jo.
De ellos, el mtodo clsico del lgebra lineal numrica para resolver
Ax = b, A R
nn
, x R
n
y b R
n
, es el debido a Carl
Friedrich Gauss (1777-1855), quien lo aplic por primera vez en
1809 con motivo de unos estudios sobre rbitas de ciertos cuerpos
celestes.
Supondremos que la matriz A es de rango completo, por lo tanto
invertible, y que si eventualmente no lo es el procedimiento deber
detectarlo.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
19/120
La mecnica del mtodo consiste en aplicar al sistema
a
11
x
1
a
12
x
2
a
1n
x
n
= b
1
a
21
x
1
a
22
x
2
a
2n
x
n
= b
2
:
:
:
:
:
:
:
:
:
:
:
:
a
n1
x
1
a
n2
x
2
a
nn
x
n
= b
n
n transformaciones lineales que lo conviertan en otro ms fcil de
resolver.
Concretamente, transformarlo en un sistema triangular superior
de la forma
u
11
x
1
u
12
x
2
u
1n
x
n
= b
/
1
u
22
x
2
u
2n
x
n
= b
/
2
:
:
:
:
:
:
u
nn
x
n
= b
/
n
;
o, escrito en forma matricial,
Ux = b
/
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
20/120
Un sistema triangular superior, siempre y cuando se satisfaga que
u
i i
= 0; i = 1; : : : ; n;
es fcilmente resoluble de manera recurrente mediante las frmulas
x
k
=
1
u
kk
_
_
b
/
k

n

i =k1
u
ki
x
i
_
_
; k = 1; : : : ; n:
Este proceso se conoce como sustitucin inversa.
El mtodo de Gauss comporta pues n 1 etapas con:
a) Multiplicacin de una cualquiera de las ecuaciones del sistema
por un nmero distinto de cero.
b) Sustitucin de una ecuacin cualquiera del sistema por la que
resulta de sumarle otra cualquiera.
c) Permutacin del orden en que aparecen en el sistema dos
ecuaciones cualesquiera del mismo.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
21/120
Ejemplo
Se desea resolver el sistema
2x
1
x
2
4x
4
= 2
4x
1
2x
2
3x
3
7x
4
= 9
4x
1
x
2
2x
3
8x
4
= 2
3x
2
12x
3
x
4
= 2:
Escrito en forma matricial, Ax = b, los distintos componentes son
A =
_
_
_
_
2 1 0 4
4 2 3 7
4 1 2 8
0 3 12 1
_

_
; b =
_
_
_
_
2
9
2
2
_

_
y x =
_
_
_
_
x
1
x
2
x
3
x
4
_

_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
22/120
Reconguremos inicialmente la matriz A aumentndola una
columna ms: la que dene el trmino independiente b, y llamemos
a la nueva matriz resultante

A; es decir,

A = A[b =
_
_
_
_
2 1 0 4 2
4 2 3 7 9
4 1 2 8 2
0 3 12 1 2
_

_
:
Apliquemos ahora la mecnica del mtodo en n = 3 etapas.
Etapa 1
Comprobemos que el elemento a
11
denominado elemento
pivote no es cero.
Si es distinto de cero, eliminemos los coecientes de la primera
columna por debajo de ese a
11
.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
23/120
Para ello, calculamos para cada la 2; : : : ; n los factores o
multiplicadores
r
i
=
a
i1
a
11
; i = 2; : : : ; n:
A continuacin, restamos de las las i = 2; : : : ; n, la primera
multiplicada por r
i
. El resultado es que todos los coecientes
debajo de la diagonal principal de la columna 1 se anularn.
Los dems coecientes de

A debajo de la primera la se vern
afectados como indica esta expresin:
a
ij
a
ij
r
i
a
1j
; i = 2; : : : ; n: j = 2; : : : ; n 1:
En el ejemplo que venimos manejando, los multiplicadores son
r
2
= a
21
= a
11
= 4=2 = 2
r
3
= a
31
= a
11
= 4=2 = 2
r
4
= a
41
= a
11
= 0=2 = 0:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
24/120
Los coecientes de la matriz

A que cambian de valor son:
en la 2
a
la: a
21
0
a
22
a
22
r
2
a
12
= 2 2 1 = 0
a
23
a
23
r
2
a
13
= 3 2 0 = 3
a
24
a
24
r
2
a
14
= 7 2 4 = 1
a
25
a
25
r
2
a
15
= 9 2 2 = 5:
en la 3
a
la: a
31
0
a
32
a
32
r
3
a
12
= 1 2 1 = 1
a
33
a
33
r
3
a
13
= 2 2 0 = 2
a
34
a
34
r
3
a
14
= 8 2 4 = 0
a
35
a
35
r
3
a
15
= 2 2 2 = 2:
en la 4
a
la: a
41
0
a
42
a
42
r
3
a
12
= 3 0 1 = 3
a
43
a
43
r
4
a
13
= 12 0 0 = 12
a
44
a
44
r
4
a
14
= 1 0 4 = 1
a
45
a
45
r
4
a
15
= 2 0 2 = 2:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
25/120
La nueva matriz

A
1
, resultado de transformar

A, es:

A
1
=
_
_
_
_
2 1 0 4 2
0 0 3 1 5
0 1 2 0 2
0 3 12 1 2
_

_
:
Obsrvese que se hubiese obtenido exactamente el mismo resultado
de haber premultiplicado

A por la denominada transformacin de
Gauss que dene la matriz
L
1
=
_
_
_
_
1 0 0 0
2 1 0 0
2 0 1 0
0 0 0 1
_

_
:
Matriz triangular inferior unitaria, denominada matriz de
transformacin de Gauss.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
26/120
La matriz L
1
tambin se puede escribir de la forma
L
1
= I e
T
1
, donde
=
_
_
_
_
0
2
2
0
_

_
y e
1
=
_
_
_
_
1
0
0
0
_

_
:
En efecto,
L
1

A =
_
_
_
1 0 0 0
2 1 0 0
2 0 1 0
0 0 0 1
_

_
_
_
_
2 1 0 4 2
4 2 3 7 9
4 1 2 8 2
0 3 12 1 2
_

_
=
_
_
_
2 1 0 4 2
0 0 3 1 5
0 1 2 0 2
0 3 12 1 2
_

_
:
En resumen,

A
1
= L
1

A.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
27/120
La inversa de la matriz L
1
, por otro lado, como se puede
comprobar fcilmente, es
L
1
1
=
_
_
_
_
1 0 0 0
2 1 0 0
2 0 1 0
0 0 0 1
_

_
:
Idntica a L
1
salvo por lo que respecta al signo de los coecientes
de la primera columna debajo de la diagonal principal.
Etapa 2
Hagamos cero los coecientes debajo de la diagonal principal de la
2
a
columna de

A
1
.
Al hacerlo vemos que a
1
22
es cero, lo que nos impide proceder como
en la etapa anterior.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
28/120
Comprobemos en este caso si algn coeciente de la columna 2 por
debajo de a
1
22
es distinto de cero:
Si no hay ninguno, esta columna es combinacin lineal de la
primera y por tanto la matriz es singular.
Si hay varios, escojamos el de mayor valor absoluto e
intercambiemos la la de ese elemento con la segunda.
En el ejemplo, el elemento de mayor valor absoluto debajo de la
diagonal principal en la segunda columna, 3, se encuentra en la
la 4. Intercambiamos esa la 4 con la 2. Se obtendr

A
/
1
=
_
_
_
_
2 1 0 4 2
0 3 12 1 2
0 1 2 0 2
0 0 3 1 5
_

_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
29/120
Esto mismo se obtiene premultiplicando

A
1
por la permutacin
P
1
=
_
_
_
_
1 0 0 0
0 0 0 1
0 0 1 0
0 1 0 0
_

_
:
Recapitulemos: la matriz con la que vamos a operar a continuacin,

A
/
1
, es:

A
/
1
= P
1
L
1

A:
Apliquemos a continuacin a la columna 2 la misma idea que a la
columna 1 y hagamos cero sus coecientes 3 a n.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
30/120
Los nuevos multiplicadores saldrn de la expresin
r
i
=
a
1
/
i 2
a
1
/
22
; i = 3; 4:
Los nuevos valores de los coecientes de la matriz

A
/
1
por debajo
de la segunda la se obtendrn aplicando la expresin
a
1
/
ij
a
1
/
ij
r
i
a
1
/
2j
; i = 3; 4: j = 3; : : : ; 5:
Los valores de los multiplicadores para el ejemplo son
r
3
= a
1
/
32
= a
1
/
22
= 1=3 y
r
4
= a
1
/
42
= a
1
/
22
= 0:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
31/120
Los nuevos coecientes de la matriz

A
/
1
resultante:
en la 3
a
la: a
1
/
32
0
a
1
/
33
a
1
/
33
r
3
a
1
/
23
= 2
1
3
12 = 2
a
1
/
34
a
1
/
34
r
3
a
1
/
24
= 0
1
3
1 = 1=3
a
1
/
35
a
1
/
35
r
3
a
1
/
25
= 2
1
3
2 = 8=3:
en la 4
a
la: a
1
/
42
0
a
1
/
43
a
1
/
43
r
4
a
1
/
23
= 3 0 12 = 3
a
1
/
44
a
1
/
44
r
4
a
1
/
24
= 1 0 1 = 1
a
1
/
45
a
1
/
45
r
4
a
1
/
25
= 5 0 2 = 5:
Obsrvese que, al ser r
4
= 0, los clculos para adaptar la cuarta la
podran haberse evitado.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
32/120
La nueva matriz resultado de estas transformaciones es

A
2
=
_
_
_
_
2 1 0 4 2
0 3 12 1 2
0 0 2 1=3 8=3
0 0 3 1 5
_

_
;
matriz que se expresa a partir de la inicial como

A
2
= L
2
P
1
L
1

A;
donde L
2
=
_
_
_
_
1 0 0 0
0 1 0 0
0 1=3 1 0
0 0 0 1
_

_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
33/120
Etapa 3
Para conseguir transformar el sistema original en uno triangular
superior slo resta anular el elemento a
2
43
.
El elemento de la diagonal principal a
2
33
es distinto de cero, luego
procedemos a calcular el multiplicador r
4
:
r
4
= a
2
43
= a
2
33
= 3=2:
Los nuevos valores de los coecientes de la matriz

A
2
por debajo
de la tercera la se obtendrn aplicando la expresin
a
2
ij
a
2
ij
r
i
a
2
3j
; i = 4: j = 4; 5:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
34/120
En concreto, en la cuarta la:
a
2
43
0
a
2
44
a
2
44
r
4
a
2
34
= 1
3
2

1
3
= 1=2
a
2
45
a
2
45
r
4
a
2
35
= 5
3
2

8
3
= 1:
La nueva matriz resultado de estas transformaciones es

A
3
=
_
_
_
_
2 1 0 4 2
0 3 12 1 2
0 0 2 1=3 8=3
0 0 0 1=2 1
_

_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
35/120
A este resultado se ha llegado despus de aplicar a la matriz inicial

A una serie de transformaciones; concretamente:

A
3
= L
3
L
2
P
1
L
1

A;
donde
L
3
=
_
_
_
_
1 0 0 0
0 1 0 0
0 0 1 0
0 0 3=2 1
_

_
:
En conclusin, la matriz original que dena el sistema, A, se puede
transformar en la triangular superior U aplicndole las mismas
transformaciones que a

A. Es decir,
U = L
3
L
2
P
1
L
1
A:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
36/120
Como a b tambin se le han efectuado las mismas transformaciones
llegndose a b
/
, resolver el sistema de ecuaciones original es
equivalente a resolver
Ux = b
/
:
En el ejemplo,
_
_
_
_
2 1 0 4
0 3 12 1
0 0 2 1=3
0 0 0 1=2
_

_
_
_
_
_
x
1
x
2
x
3
x
4
_

_
=
_
_
_
_
2
2
8=3
1
_

_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
37/120
La solucin se lleva a cabo mediante sustitucin inversa:
x
4
= 2;
sustituyendo en la tercera ecuacin,
x
3
=
8=3 .2/.1=3/
2
= 1;
y, a su vez, hacindolo en la segunda,
x
2
=
2 .1/.2/ .12/.1/
3
= 4:
Por ltimo, sustituyendo los valores de las variables ya calculados
en la primera ecuacin se obtiene
x
1
=
2 4.2/ 1.4/
2
= 3:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
38/120
La solucin de nuestro ejemplo es pues
_
_
_
_
_
_
x
1
x
2
x
3
x
4
_

_
=
_
_
_
_
_
_
3
4
1
2
_

_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
39/120
Pivotacin
Veamos qu ocurre si resolvemos con el procedimiento estudiado
_
10
4
1
1 1
_

A
_
x
1
x
2
_

x
=
_
1
2
_

b
;
en una mquina con tres dgitos signicativos que efecte
redondeos.
Aplicando la mecnica apuntada, en la primera etapa se obtendra
una nueva matriz A
1
y un nuevo vector b
1
; son:
A
1
=
_
10
4
1
0 1 10
4
_
y b
1
=
_
1
2 10
4
_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
40/120
El nmero 1 10
4
= 9999, la mquina lo redondeara a 10
4
;
de la misma forma procedera con 2 10
4
. La solucin del sistema
sera
x
2
=
10
4
10
4
= 1
x
1
=
1 x
2
10
4
= 0;
muy distinta de la real 0;99989999; 1;00010001
T
.
La eleccin del pivote busca que los multiplicadores no sean en
magnitud mucho mayores que 1 con el n de tener en cuenta los
errores de redondeo y la estabilidad numrica del procedimiento,
Es por esto por lo que se escoge el de mayor magnitud de entre
los debajo de la diagonal principal.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
41/120
Para el caso de este ltimo ejemplo, en la primera etapa, en lugar
de operar sobre la matriz anterior, como el valor absoluto del
elemento a
21
es mayor que el del a
11
, se intercambiara la la 1 con
la 2, obtenindose
A
/
=
_
1 1
10
4
1
_
y b
/
=
_
2
1
_
:
Continuando con el procedimiento normal, despus de la primera
etapa, se llegar a
A
/
1
=
_
1 1
0 1 10
4
_
y b
/
1
=
_
2
1 2 10
4
_
:
Por redondeos internos, la mquina representara
A
/
1
=
_
1 1
0 1
_
y b
/
1
=
_
2
1
_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
42/120
La solucin de este sistema de ecuaciones sera
_
x
1
x
2
_
=
_
1
1
_
:
Solucin mucho mejor que la anterior, pues la real es
x
2
=
0,9998
0,9999
= 0,99989999
x
1
= 1,00010001:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
El proceso descrito se denomina pivotacin parcial.
Su por qu radica en la aritmtica de precisin nita con la que
trabajan todos los ordenadores y en el hecho de que los factores o
multiplicadores antes introducidos son inversamente proporcionales
al elemento pivote: si ste es demasiado pequeo puede amplicar
los errores de redondeo a lo largo del proceso de solucin.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
43/120
Una segunda estrategia de pivotacin es la pivotacin total.
Consiste en buscar en una etapa i no slo el elemento de mayor
valor absoluto en la columna correspondiente, sino en todo lo que
queda por tratar de la matriz: el m ax
i _k_n; i _j _n
[a
kj
[.
Partial Pivoting
To avoid division by zero, swap the row having the zero pivot
with one of the rows below it.
0
*
Rows completed in
forward elimination.
Rows to search for a
more favorable pivot
element.
Row with zero pivot element
To minimize the eect of roundo, always choose the row that
puts the largest pivot element on the diagonal, i.e., nd i
p
such
that |a
i
p
,i
| = max(|a
k,i
|) for k = i, . . . , n
NMM: Solving Systems of Equations page 37
Pivotacin parcial
Full Pivoting
0
*
Rows completed in
forward elimination.
Columns to search for a more
favorable pivot element.
Row with zero pivot element
Rows to search for a
more favorable pivot
element.
*
NMM: Solving Systems of Equations page 39
Pivotacin total
La pivotacin total proporciona la estrategia ptima para minimizar
errores de redondeo.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
44/120
Desde un punto de vista terico, la eliminacin de Gauss con
pivotacin total es, en general, un algoritmo numricamente estable.
En la prctica, la pivotacin parcial produce buenos resultados y
excelentes prestaciones numricas por lo que rara vez se usa la total.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
45/120
Algoritmo
+
+ Transformacin de la Matriz Aumentada A[b
+
for i = 1 to n 1
Determinar ndice p {i; i 1; : : : ; n] tal que [a.p; i /[ = m ax
i _j _n
[a.j; i /[.
Intercambiar las p e i .
for j = i 1 to n
= a.j; i /=a.i; i /
for k = i 1 to n 1
a.j; k/ a.j; k/ a.i; k/
end
end
end
+
+ Sustitucin Inversa.
+
for j = n to 1
x.j /
_
_
b.j /
n

k=j 1
a.j; k/ x.k/
_
_
_
a.j; j /
end
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
46/120
En cdigo Matlab para cualquier sistema.
function [x]=Gauss(A,b)
% Solucin de Ax=b mediante eliminacin de Gauss
n=size(A,1); x=zeros(n,1);
for i=1:n-1 % Transformacin matriz A
[p maxk]=max(abs(A(i:n,i)));
maxk=maxk+i-1;
if i~=maxk
A([i maxk],:)=A([maxk i],:);
b([i maxk]) =b([maxk i]);
end
j=i+1:n;
A(j,i)=A(j,i)/A(i,i);
A(j,j)=A(j,j)-A(j,i)*A(i,j);
b(j)=b(j)-b(i)*A(j,i);
end
for i=n:-1:1 % Sustitucin inversa
x(i)=(b(i)-A(i,i+1:n)*x(i+1:n))/A(i,i);
end
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
47/120
De esta codicacin conviene destacar dos elementos mejorables.
No es realmente necesario intercambiar las las una vez elegido
el elemento pivote de cada etapa; basta con tener constancia en
cada momento dnde estn las las que se intercambian.
Tal como est estructurado el programa slo se podra resolver
un sistema el denido por el b dado y no, como es lo ms
habitual, distintos sistemas con la misma matriz A y diversos
trminos independientes.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
48/120
El primero se puede paliar mediante la introduccin de vector
ndice, IPIV, de dimensin el nmero de ecuaciones, inicializado a
la posicin inicial en el sistema de cada una de las ecuaciones; es
decir,
IPIV =
_
_
_
_
_
1
2
3
:
:
:
n
_

_
:
Cuando haya que intercambiar dos las en un etapa, no se har
intercambiando fsicamente los coecientes de esas dos las, sino
hacindolo en las correspondientes de IPIV.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
49/120
Si por ejemplo, en la primera etapa hay que utilizar como pivote un
elemento de la cuarta la, una vez efectuado el cambio, el vector
IPIV quedar:
IPIV =
_
_
_
_
_
_
_
4
2
3
1
:
:
:
n
_

_
:
Si al nal de un proceso de resolucin de un sistema de cinco
ecuaciones con cinco incgnitas, el vector puntero resultase
IPIV =
_
_
_
_
_
_
4
2
5
1
3
_

_
;
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
50/120
la matriz A
/
que se obtendra no resultara ser estrictamente
triangular superior.
Tendra la forma que sigue.
Para resolver el sistema que dene Ax = b habra que aplicar esas
mismas manipulaciones de las al vector b o tenerlo en cuenta.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
51/120
Para evitar el segundo inconveniente, habra que guardar
adecuadamente la informacin que denen los multiplicadores
asociados a cada la de cada etapa.
Los i 1 multiplicadores se pueden guardar en los lugares vacos
o mejor dicho, que se hacen cero que provocan las
transformaciones que denen: en la etapa i , debajo de la
diagonal principal en la columna i .
En el ejemplo, con esta idea, al nal del proceso:
A =
_
_
_
_
_
2 1 0 4
2 3 12 1
2 1=3 2 1=3
0 0 3=2 1=2
_

_
:
Los multiplicadores distintos de cero que se han calculado en
todo el proceso son -2, 2, 1/3 y 3/2.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
52/120
Nmero de operaciones del mtodo
Dos de los factores ms importantes que inuyen en las
prestaciones de un algoritmo son:
Su estabilidad numrica ante los diversos errores.
La cantidad de tiempo necesaria para completar los clculos que
conlleva.
Ambos factores dependen del nmero de operaciones aritmticas
necesarias para la aplicacin del algoritmo.
Los tiempos necesarios para realizar en un ordenador la
multiplicacin y la divisin de dos nmeros son aproximadamente
iguales y considerablemente mayores, en trminos relativos, que los
requeridos para realizar la suma o diferencia, que tambin son muy
semejantes entre s.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
53/120
La eliminacin de Gauss para resolver un sistema de ecuaciones
lineales, en la primera etapa, realiza las operaciones que se
representan simblicamente en el esquema que sigue.


:
:
:
:
:
:
:
:
:
:
:
:
:
:
:


0 2 2 2 2
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
0 2 2 2 2
0 2 2 2 2
El smbolo 2 designa los coecientes de la matriz que se ven
afectados en esa etapa y que, en principio, son distintos de cero.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
54/120
Si en la etapa i se est transformando una matriz n n, las
operaciones que en ella se realizan son:
n i divisiones para el clculo de los multiplica-
dores;
.n i /.n i 1/ multiplicaciones y restas para modicar los
coecientes de la matriz por debajo de la
la i que no estn en la propia columna i .
En cada etapa se efectan,
.n i / .n i /.n i 1/ = .n i /.n i 2/
multiplicaciones y divisiones y
.n i /.n i 1/
sumas y restas.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
55/120
En n 1 etapas de que consta el proceso, se harn
n1

i =1
.n i /.n i 2/ = .n
2
2n/
n1

i =1
1 2.n 1/
n1

i =1
i
n1

i =1
i
2
= .n
2
2n/.n 1/ 2.n 1/
.n 1/n
2

.n 1/n.2n 1/
6
=
2n
3
3n
2
5n
6
multiplicaciones y divisiones y
n1

i =1
.n i /.n i 1/ = .n
2
n/
n1

i =1
1 .2n 1/
n1

i =1
i
n1

i =1
i
2
= .n
2
n/.n 1/ .2n 1/
.n 1/n
2

.n 1/n.2n 1/
6
=
n
3
n
3
sumas y restas.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
56/120
El comportamiento de estos valores para n grande tiende a
1
3
n
3
.
El proceso de sustitucin inversa requiere .n i / multiplicaciones y
.n i 1/ sumas, para cada trmino del sumatorio, y una resta y
una divisin.
El nmero total de operaciones de todo el proceso es
1
n1

i =1
..n i / 1/ =
n
2
n
2
multiplicaciones y divisiones y
n1

i =1
..n i 1/ 1/ =
n
2
n
2
sumas y restas.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
57/120
Contando la totalidad de la transformacin de la matriz del sistema
y la sustitucin inversa, la eliminacin de Gauss requiere
2n
3
3n
2
5n
6

n
2
n
2
=
n
3
2n
2
n
3
multiplicaciones y divisiones y
n
3
n
3

n
2
n
2
=
2n
3
3n
2
5n
6
sumas y restas.
Para valores de n, estas expresiones tienden a
1
3
n
3
O.n
3
=3/
lo que reeja la importante magnitud del nmero de operaciones.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
58/120
Aunque la cantidad n
3
=3 puede parecer muy grande, recordemos
las frmulas de Cramer para la solucin de sistemas:
x
i
=
det.B
i
/
det.A/
; donde B
i
=
_
_
_
_
a
11
a
1i 1
b
1
a
1i 1
a
1n
a
21
a
2i 1
b
2
a
2i 1
a
2n
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
a
n1
a
ni 1
b
n
a
ni 1
a
nn
_

_
:
Mediante estas frmulas se requieren:
_
_
_
.n 1/ sumas,
.n 2/ multiplicaciones y
n divisiones.
Para diez ecuaciones con diez incgnitas se requerirn:
_
_
_
740 operaciones utilizando eliminacin de Gauss.
500.000.000 operaciones, aproximadamente, aplicando
las frmulas de Cramer.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
59/120
Mtodo de Gauss-Jordan
Es una extensin natural de la eliminacin de Gauss por si se desea
obtener la matriz inversa. Consiste en eliminar de cada columna de
la matriz de coecientes del sistema no slo los coecientes no
nulos que estn debajo de la diagonal sino tambin los de arriba.
Una etapa i de la eliminacin de Gauss estaba caracterizada por la
matriz
L
i
= I
i
e
T
i
;
donde

i
=
_
_
_
_
_
_
0
:
:
:
a
i
i 1 i
=a
i
i i
:
:
:
a
i
ni
=a
i
i i
_

_
la i 1 y e
i
=
_
_
_
_
_
_
0
:
:
:
1
:
:
:
0
_

_
la i :
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
60/120
En la etapa i de este mtodo, la matriz de transformacin de
Gauss-Jordan es la dada por
T
i
= I
i
e
T
i
;
donde

i
=
_
_
_
_
_
_
a
i
1i
=a
i
i i
:
:
:
1=a
i
i i
:
:
:
a
i
ni
=a
i
i i
_

_
la i y e
i
=
_
_
_
_
_
_
0
:
:
:
1
:
:
:
0
_

_
la i :
Si se tiene en cuenta que A
0
= A y A
n
= I, se tendr que
T
n1
T
2
T
1
A = I;
por lo que el mtodo obtiene directamente la matriz inversa:
A
1
= T
n1
T
2
T
1
:
Las multiplicaciones y divisiones, y sumas y restas, son O.n
3
=2/ .
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
61/120
ndice
Cul es el problema; consideraciones tericas
Eliminacin de Gauss
Matlab y los sistemas de ecuaciones lineales
Factorizacin LU
Solucin de sistemas modicados
Renamiento iterativo
Sistemas con matrices especiales
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
62/120
Matlab y los sistemas de ecuaciones
lineales
Para resolver un sistema Ax = b con Matlab slo hay que hacer
x = A\b
Con el ejemplo que estamos manejando:
>> A=[2 1 0 4;0 -3 -12 -1;0 -1 -2 0;0 0 3 1];
>> b=[2;2;-2;-5];
>> A\b
ans =
3.0000
4.0000
-1.0000
-2.0000
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
63/120
Utilizando el script Gauss que hemos presentado:
>> Gauss(A,b)
ans =
3.0000
4.0000
-1.0000
-2.0000
Utilizando otra utilidad de Matlab muy interesante:
>> linsolve(A,b)
ans =
3.0000
4.0000
-1.0000
-2.0000
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
64/120
ndice
Cul es el problema; consideraciones tericas
Eliminacin de Gauss
Matlab y los sistemas de ecuaciones lineales
Factorizacin LU
Solucin de sistemas modicados
Renamiento iterativo
Sistemas con matrices especiales
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
65/120
Factorizacin LU
El clculo de A = LU se conoce como factorizacin o
descomposicin LU.
Para resolver un sistema de ecuaciones lineales Ax = b, si
A = LU, el problema se convierte en el de resolver LUx = b
a travs de dos sistemas de ecuaciones triangulares:
Ux = y y Ly = b:
Esto es muy til cuando se requiere resolver sistemas de
ecuaciones en los que la matriz A es siempre la misma y slo
cambia es el trmino independiente.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
66/120
La factorizacin LU y la eliminacin de Gauss
Una forma indirecta de conseguir esta factorizacin LU es la
propia eliminacin de Gauss.
En efecto, mediante unas permutaciones y unas
transformaciones denidas por matrices elementales triangulares
inferiores el mtodo consegua:
L
n1
P
n1
L
1
P
1
A = U:
De este proceso, haciendo
P = P
n1
P
1
y
L = P.L
n1
P
n1
L
2
P
2
L
1
P
1
/
1
;
se puede comprobar que se obtiene la factorizacin
PA = LU:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
67/120
Existencia y unicidad de la factorizacin LU
Teorema Sea A una matriz cuadrada regular de orden n. Exis-
te una matriz de permutacin P y dos matrices, una triangular
inferior y otra triangular superior, L y U, respectivamente, tales
que
PA = LU:
La matriz L tiene todos los coecientes de la diagonal principal
igual a 1 (triangular inferior unitaria).
Lema La matriz A admite una factorizacin LU si y slo si se
cumple que det.A
k
/ = 0; k = 1; : : : ; n:
Teorema Si una matriz regular A de orden n admite una
factorizacin A = LU, donde L es una matriz triangular infe-
rior de coecientes diagonales 1 y U una triangular superior, esa
factorizacin es nica.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
68/120
Mtodos numricos directos para la
obtencin de factorizaciones LU
Mtodo de Crout. Versin LU
1
Supongamos que se desea obtener la factorizacin en la forma
LU
1
, donde U
1
designa una matriz triangular superior en la que
todos los coecientes de la diagonal principal son 1.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
69/120
Si la matriz A es de orden 3 y se quiere factorizarla de la forma
_
_
a
11
a
12
a
13
a
21
a
22
a
23
a
31
a
32
a
33
_
_
=
_
_
l
11
0 0
l
21
l
22
0
l
31
l
32
l
33
_
_
_
_
1 u
12
u
13
0 1 u
23
0 0 1
_
_
;
usando las reglas de multiplicacin de matrices se obtendr:
1
a
col. de L: l
11
= a
11
l
21
= a
21
l
31
= a
31
:
2
a
la de U:
l
11
u
12
= a
12
l
11
u
13
= a
13
_
u
1j
= a
1j
=l
11
; j = 2; 3:
2
a
col. de L:
l
21
u
12
l
22
= a
22
l
31
u
12
l
32
= a
32
_
l
i 2
= a
i 2
l
i1
u
12
; i = 2; 3:
2
a
la de U: l
21
u
13
l
22
u
23
= a
23
u
2j
= .a
2j
l
21
u
1j
/=l
22
; j = 3:
3
a
col. de L: l
31
u
13
l
32
u
23
l
33
= a
33
l
i 3
= a
i 3

i 1

j =1
l
ij
u
ji
; i = 3:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
70/120
En general, las frmulas de recurrencia que se pueden deducir de
este proceso, denominado factorizacin LU de Crout, son:
l
i1
= a
i1
; i = 1; 2; : : : ; n;
u
1j
= a
1j
=l
11
; j > 1;
l
i k
= a
i k

k1

p=1
l
ip
u
pk
; i _ k;
u
kj
=
_
_
a
kj

k1

p=1
l
kp
u
pj
_
_
_
l
kk
; j > k:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
71/120
Plasmadas en el algoritmo de Crout para factorizar una matriz
regular A
nn
en la forma LU
1
resulta el de la tabla.
for k = 1 to n
for i = k to n
l.i; k/ a.i; k/
k1

p=1
l.i; p/u.p; k/
end
for i = k 1 to n
u.k; i /
_
_
a.k; i /
k1

p=1
l.k; p/u.p; i /
_
_
_
l.k; k/
end
end
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
72/120
La versin Matlab de este algoritmo es la que sigue.
function [L U]=LUCrout(a)
% Factorizacin LU por Crout
n=size(a,1); L=zeros(n); U=eye(n);
for k=1:n
for i=k:n
L(i,k)=a(i,k)-L(i,1:k-1)*U(1:k-1,k);
end
for i=k+1:n
U(k,i)=(a(k,i)-L(k,1:k-1)*U(1:k-1,i))/L(k,k);
end
end
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
73/120
Ahora bien, como apuntbamos en la eliminacin de Gauss, se
puede aprovechar la estructura de la matriz A para guardar en ella
las nuevas matrices L y U. El mismo algoritmo quedara as.
function [L U]=Crout_1(A)
% Factorizacin LU por Crout
n=size(A,1);
for k=1:n
i=k:n; A(i,k)=A(i,k)-A(i,1:k-1)*A(1:k-1,k);
i=k+1:n; A(k,i)=(A(k,i)-A(k,1:k-1)*A(1:k-1,i))/A(k,k);
end
L=tril(A,0); U=triu(A,1)+eye(n,n);
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
74/120
Factorizar
_
10 10 20
20 25 40
30 50 61
_
da como resultado
LU =
_
_
10
20 5
30 20 1
_
_
_
_
1 1 2
1 0
1
_
_
:
>> A=[10 10 20;20 25 40;30 50 61];
>> [L,U]=Crout_1(A)
L =
10 0 0
20 5 0
30 20 1
U =
1 1 2
0 1 0
0 0 1
>>
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
75/120
Ejemplo
Se desea factorizar la matriz
A =
_
_
0,001 2,000 3,000
-1,000 3,712 4,623
-2,000 1,072 5,643
_
_
en una mquina u ordenador con cuatro dgitos signicativos.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
76/120
Las operaciones que se realizan en la mquina son:
l
11
= 0,001:
l
21
= -1,000:
l
31
= -2,000:
u
12
= f l
_
2,000
0,001
_
= 2000:
u
13
= f l
_
3,000
0,001
_
= 3000:
l
22
= f l 3,712 .1,000/.2000/ = 2004:
l
32
= f l 1,072 .2,000/.2000/ = 4001:
u
23
= f l
_
4,623 .1,000/.3000/
2004
_
= 1,500 y
l
33
= f l5,643 (2,000)(3,000) (4,001)(1,500) = 5,642:
Obsrvese que el clculo de l
33
conlleva la prdida de tres dgitos
por redondeo: el valor que debera obtenerse es 5,922.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
77/120
Pivotacin
El ejemplo pone de maniesto que, aunque se sepa que una matriz
no es singular y que su factorizacin LU existe tericamente, los
errores de redondeo que se pueden producir al trabajar en una
mquina pueden dar al traste con el resultado.
Es aconsejable realizar pivotacin. Al nal de un proceso con
pivotacin se obtendra
PA = LU
es decir, no la factorizacin LU de la matriz original sino de PA.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
78/120
El algoritmo de Crout con pivotacin parcial es el de la tabla
for k = 1 to n
for i = k to n
l.i; k/ a.i; k/
k1

pD1
l.i; p/u.p; k/
end
Determinar ndice p {k; k 1; : : : ; n] tal que [a.p; i /[ = m ax
ijn
[a.j; i /[.
Intercambiar las p y k.
for i = k 1 to n
u.k; i /
_
_
a.k; i /
k1

pD1
l.k; p/u.p; i /
_
_
_
l.k; k/
end
end
function [L U p]=CroutP(a)
% Factorizacin LU por Crout con pivotacin
n=size(a,1); p=1:n;
for k=1:n
i=k:n; a(i,k)=a(i,k)-a(i,1:k-1)*a(1:k-1,k);
[r,m]=max(abs(a(k:n,k))); m=m+k-1;
if a(m,k)==0, continue, end
if k~=m, a([k m],:)=a([m k],:); p([k m])=p([m k]); end
i=k+1:n; a(k,i)=(a(k,i)-a(k,1:k-1)*a(1:k-1,i))/a(k,k);
end
L=tril(a,0); U=triu(a,1)+eye(n,n);
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
79/120
Si se factoriza la matriz
_
_
10 10 20
20 25 40
30 50 61
_
_
;
al nal de este proceso, el vector IPVT./, que indica las
pivotaciones realizadas, es 3, 2, 1
T
.
>> A=[10 10 20;20 25 40;30 50 61];
>> [L U p]=CroutP(A)
L =
30.0000 0 0
20.0000 -8.3333 0
10.0000 -6.6667 0.2000
U =
1.0000 1.6667 2.0333
0 1.0000 0.0800
p =
3 2 1
>>
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
80/120
La matriz PA realmente factorizada es
_
_
30 50 61
20 25 40
10 10 20
_
_
=
_
_
30
20 8;3333
10 6;6667 0; 2
_
_
_
_
1 1;6667 2;0333
1 0;0800
1
_
_
:
El algoritmo de Crout requiere O.n
3
=3/ multiplicaciones/divisiones
y sumas/restas para la factorizacin de la matriz.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
81/120
Mtodo de Crout. Versin L
1
U
Si se quiere conseguir la factorizacin L
1
U de una matriz 3 3,
_
_
a
11
a
12
a
13
a
21
a
22
a
23
a
31
a
32
a
33
_
_
=
_
_
1 0 0
l
21
1 0
l
31
l
32
1
_
_
_
_
u
11
u
12
u
13
0 u
22
u
23
0 0 u
33
_
_
;
operando:
1
a
la de U: u
11
= a
11
u
12
= a
12
u
13
= a
13
:
1
a
col. de L:
l
21
u
11
= a
21
l
31
u
11
= a
31
_
l
i1
= a
i1
=u
11
; i = 2; 3:
2
a
la de U:
l
21
u
12
u
22
= a
22
l
21
u
13
u
32
= a
23
_
u
2j
= a
2j
l
21
u
1j
; j = 2; 3:
2
a
col. de L: l
31
u
12
l
32
u
22
= a
32
l
i 2
= .a
i 2
l
i1
u
12
/=u
22
; i = 3:
3
a
la de U: l
31
u
13
l
32
u
23
u
33
= a
33
u
3j
= a
3j

j 1

i =1
l
3i
u
ij
; j = 3:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
82/120
Las frmulas de recurrencia que se pueden deducir de este proceso
son:
u
1j
= a
1j
; j = 1; 2; : : : ; n;
l
i1
= a
i1
=u
11
; j > 1;
u
kj
= a
kj

k1

p=1
l
kp
u
pj
; j _ k;
l
i k
=
_
_
a
i k

k1

p=1
l
ip
u
pk
_
_
_
u
kk
; i > k:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
83/120
El algoritmo de Crout para factorizar una matriz regular A
nn
en la
forma L
1
U es el que sigue.
for k = 1 to n
for j = k to n
u.k; j / a.k; j /
k1

p=1
l.k; p/u.p; j /
end
for i = k 1 to n
l.i; k/
_
_
a.i; k/
k1

p=1
l.i; p/u.p; k/
_
_
_
u.k; k/
end
end
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
84/120
Su implementacin en Matlab:
function [L,U]=Croutl1u(a)
% Factorizacin L1U por Crout
n=size(a,1);
for k=1:n-1
i=k+1:n;
a(i,k)=a(i,k)/a(k,k);
a(i,i)=a(i,i)-a(i,k)*a(k,i);
end
L=tril(a,-1)+eye(n,n); U=triu(a);
El resultado con la matriz precedente es:
>> [L U]=Croutl1u(A)
L =
1 0 0
2 1 0
3 4 1
U =
10 10 20
0 5 0
0 0 1
>> L*U
ans =
10 10 20
20 25 40
30 50 61
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
85/120
La versin del algoritmo con pivotacin en Matlab es esta.
function [L U p]=CroutP1(a)
% Factorizacin L1U por Crout con pivotacin
n=size(a,1); p=1:n;
for k=1:n-1
[r,m]=max(abs(a(k:n,k)));
m=m+k-1;
if a(m,k)==0, continue, end
if k~=m, a([k m],:)=a([m k],:); p([k m])=p([m k]); end
i=k+1:n; a(i,k)=a(i,k)/a(k,k);
j=k+1:n; a(i,j)=a(i,j)-a(i,k)*a(k,j);
end
L=tril(a,-1)+eye(n,n); U=triu(a);
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
86/120
El resultado con este script para el ltimo ejemplo:
>> [L U p]=CroutP1(A)
L =
1.0000 0 0
0.6667 1.0000 0
0.3333 0.8000 1.0000
U =
30.0000 50.0000 61.0000
0 -8.3333 -0.6667
0 0 0.2000
p =
3 2 1
>> L(p,:)*U
ans =
10 10 20
20 25 40
30 50 61
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
87/120
Con los recursos de Matlab:
>> [L U P]=lu(A)
L =
1.0000 0 0
0.6667 1.0000 0
0.3333 0.8000 1.0000
U =
30.0000 50.0000 61.0000
0 -8.3333 -0.6667
0 0 0.2000
P =
0 0 1
0 1 0
1 0 0
>> P*L*U
ans =
10 10 20
20 25 40
30 50 61
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
88/120
Obtencin de la matriz inversa a partir de la
factorizacin LU
Si se designa por X la matriz inversa de A R
nn
, los n vectores
columna de X son los vectores solucin de los sistemas Ax
i
= e
i
,
i = 1; : : : ; n.
Si suponemos que tenemos la factorizacin PA = LU, donde P
es una matriz de permutacin, para obtener la inversa de A hay
que resolver los 2n sistemas siguientes:
Ly
i
= Pe
i
; Ux
i
= y
i
; i = 1; : : : ; n:
Es decir 2n sistemas de ecuaciones lineales con matrices
triangulares en los que slo cambian los trminos independientes.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
89/120
Matlab y la factorizacin LU
Para resolver Ax = b con Matlab, usando la factorizacin LU
de A, se utiliza [L U P]=lu(A) y luego se obtiene la solucin del
sistema haciendo
x=U\(L\(P*b))
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
90/120
Apliquemos esta idea a uno de los ejemplos que manejamos:
>> A=[2 1 0 4;0 -3 -12 -1;0 -1 -2 0;0 0 3 1];
>> b=[2;2;-2;-5];
>> [L U P]=lu(A)
L =
1.0000 0 0 0
0 1.0000 0 0
0 0 1.0000 0
0 0.3333 0.6667 1.0000
U =
2.0000 1.0000 0 4.0000
0 -3.0000 -12.0000 -1.0000
0 0 3.0000 1.0000
0 0 0 -0.3333
P =
1 0 0 0
0 1 0 0
0 0 0 1
0 0 1 0
>> x=U\(L\(P*b))
x =
3.0000
4.0000
-1.0000
-2.0000
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
91/120
Otra cuestin a tener muy en cuenta:
% Ensayo tiempos LU: Tiemp_LU.m
A=rand(200,200);
tic
for i=1:1000
b=rand(200,1);
x=A\b;
end
toc
tic
[L U P] = lu(A);
for i=1:1000
b=rand(200,1);
x=U\(L\(P*b));
end
toc
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
92/120
ndice
Cul es el problema; consideraciones tericas
Eliminacin de Gauss
Matlab y los sistemas de ecuaciones lineales
Factorizacin LU
Solucin de sistemas modicados
Renamiento iterativo
Sistemas con matrices especiales
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
93/120
Solucin de sistemas modicados
Si en Ax = b se modica el vector b pero no A, no es necesario
rehacer la factorizacin LU para resolver el nuevo sistema.
Si se modica ligeramente la matriz A, por ejemplo el coeciente
(j; k), con lo que A = A e
j
e
T
k
, puede que no sea necesario
tampoco recalcular la factorizacin en su totalidad.
La frmula de Sherman-Morrison-Woodbury proporciona la
inversa de una matriz en trminos de los vectores de una
modicacin a la misma de rango uno del tipo uv
T
:
_
A uv
T
_
1
=
A
1
A
1
u
_
1 v
T
A
1
u
_
1
v
T
A
1
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
94/120
Para resolver el nuevo sistema .A uv
T
/x = b, usando la
frmula, se obtendra
x =
_
A uv
T
_
1
b
= A
1
b A
1
u
_
1 v
T
A
1
u
_
1
v
T
A
1
b;
operacin que podra hacerse por partes:
1. Resolviendo Az = u, obteniendo z.
2. Resolviendo Ay = b, obteniendo y.
3. Calculando x = y ..v
T
y/=.1 v
T
z//z.
Como A ya est factorizada, este procedimiento requiere solo
sustituciones inversas y productos interiores; es decir O.n
2
/
operaciones frente a las O.n
3
=3/ de la factorizacin.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
95/120
Ejemplo
Consideremos la matriz
A =
_
_
2 4 2
4 9 3
2 3 7
_
_
=
_
_
1 0 0
2 1 0
1 1 1
_
_

L
_
_
2 4 2
0 1 1
0 0 4
_
_

U
a la que se le efecta una modicacin consistente en cambiar el
coeciente (3,2) de -3 a -1.
En este caso
u =
_
_
0
0
2
_
_
y v =
_
_
0
1
0
_
_
;
con lo que la matriz resultante es A uv
T
.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
96/120
Con la factorizacin LU de A, se resuelve Az = u y Ay = b,
dando
z =
_
_
3=2
1=2
1=2
_
_
y y =
_
_
1
2
2
_
_
:
Por ltimo,
x = y
v
T
y
1 v
T
z
z =
_
_
1
2
2
_
_

2
1 1=2
_
_
3=2
1=2
1=2
_
_
=
_
_
7
4
0
_
_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
97/120
ndice
Cul es el problema; consideraciones tericas
Eliminacin de Gauss
Matlab y los sistemas de ecuaciones lineales
Factorizacin LU
Solucin de sistemas modicados
Renamiento iterativo
Sistemas con matrices especiales
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
98/120
Renamiento iterativo
Supongamos que se tiene una solucin aproximada, x
0
, del sistema
de ecuaciones lineales Ax = b, y sea y una correccin o mejora de
la misma tal que la solucin exacta, x, cumple que
x = x
0
y:
Sustituyendo esta expresin en Ax = b se tiene que
Ay = b Ax
0
= r
0
;
donde r
0
es el vector de residuos.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
99/120
Si este vector no cumple unos requisitos de precisin que nos
interesen, se pude resolver el sistema Ay = r
0
y hacer
x
1
= x
0
y;
lo que har que la solucin se aproxime ms a x que x
0
.
Si es necesario, se calcula un nuevo vector de residuos,
r
1
= b Ax
1
y se continua el proceso hasta que la solucin se
aproxime tanto como se quiera a la esperada.
El vector de residuos debe calcularse con ms precisin que la
usada para calcular la solucin inicial.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
100/120
Este script de Matlab lleva a cabo el proceso a mano.
% Script_Ref.m - Script de Refinamiento Iterativo
n=6;
format short
A=hilb(n); % Matriz de Hilbert (muy mal condicionada)
b=A*ones(n,1); % Elegimos trmino independiente para sol. x=1.
pause
x=A\b % Solucin, evidentemente, =1
B=A; % En B est A perturbada un poquito
B(6,1)=B(6,1)+1.e-06;
pause
x1=B\b % Veamos la nueva solucin; difiere bastante
pause
xex=ones(n,1); % Calculemos cunto
norm(xex-x1,2) % Como magnitud calculemos la norma 2 de la desviaci.
norm(xex-x,2)
pause
res=b-A*x1; % Hagamos una iteracin del Refinamiento iterativo
x1=x1+B\res
norm(xex-x1,2)
pause
res=b-A*x1; % Hagamos otra iteracin del Refinamiento iterativo
format long
x1=x1+B\res
norm(xex-x1,2)
pause
res=b-A*x1; % Hagamos otra iteracin del Refinamiento iterativo
x1=x1+B\res
norm(xex-x1,2)
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
101/120
ndice
Cul es el problema; consideraciones tericas
Eliminacin de Gauss
Matlab y los sistemas de ecuaciones lineales
Factorizacin LU
Solucin de sistemas modicados
Renamiento iterativo
Sistemas con matrices especiales
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
102/120
Sistemas con matrices especiales
Matrices simtricas
Factorizacin LDL
T
Lema Si todas las submatrices principales de una matriz A R
nn
son regulares, existen dos matrices triangulares inferiores unitarias
nicas, L y M, y otra diagonal tambin nica, D = diag.d
1
; : : : ; d
n
/,
tales que A = LDM
T
.
Teorema Si A admite una factorizacin LDM
T
y es simtrica,
L = M.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
103/120
Para derivar unas frmulas de recurrencia, a partir de un ejemplo
simblico de orden 3,
_
_
a
11
a
12
a
13
a
21
a
22
a
23
a
31
a
32
a
33
_
_
=
_
_
1 0 0
l
21
1 0
l
31
l
32
1
_
_
_
_
d
11
d
22
d
33
_
_
_
_
1 l
21
l
31
0 1 l
32
0 0 1
_
_
;
operando de acuerdo con las reglas de multiplicacin matricial se
obtiene que
a
11
= d
11
a
21
= l
21
d
11
a
31
= l
31
d
11
a
22
= l
2
21
d
11
d
22
a
32
= l
31
l
21
d
11
l
32
d
22
a
33
= l
2
31
d
11
l
2
32
d
22
d
33
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
104/120
Generalizando se obtiene el algoritmo de la tabla.
for k = 1 to n
d.k/ a.k; k/
k1

p=1
a
2
.k; p/d.p/
if d.k/ = 0 then stop
for i = k 1 to n
a.i; k/
_
_
a.i; k/
k1

p=1
a.i; p/a.k; p/d.p/
_
_
_
d.k/
end
end
Requiere O.n
3
=6/ multiplicaciones y divisiones y sumas y restas.
Si no se efectan pivotaciones, el procedimiento numrico puede
fallar por la posible presencia de coecientes pivote muy pequeos,
o por la acumulacin de errores de redondeo o de cancelacin
importantes.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
105/120
Factorizacin de Cholesky
Una matriz es denida positiva si para todo x = 0 se cumple que
x
T
Ax > 0:
Todos sus valores propios son positivos.
Las matrices simtricas denidas positivas admiten una
descomposicin de la forma
A = G
T
G;
donde G es una matriz triangular superior.
Esta descomposicin fue formulada por Andr Louis Cholesky
(1875-1918), comandante del ejrcito francs de la poca, durante
la ocupacin internacional de Creta en 190609.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
106/120
Las matrices simtricas denidas positivas se presentan
habitualmente en:
Problemas relacionados con el anlisis de sistemas elctricos de
generacin y transporte de energa.
Ajuste de funciones por mnimos cuadrados.
Anlisis de estructuras mecnicas.
En muchos procedimientos de optimizacin lineal y no lineal.
En general, en todas aquellas aplicaciones donde al modelizar un
sistema, la expresin x
T
Ax mide la energa presente, o disponible,
o cualquier otra magnitud fsica que slo admite cantidades
positivas en un entorno determinado.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
107/120
Lema Las submatrices principales de una matriz denida positiva
son denidas positivas.
Teorema Si A es una matriz denida positiva de orden n, tiene
una descomposicin de la forma LDM
T
, siendo todos los coe-
cientes de la matriz diagonal D positivos.
Teorema Si A es una matriz simtrica denida positiva de orden
n, existe una nica matriz triangular superior, G, con todos sus
coecientes diagonales positivos, tal que A = G
T
G.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
108/120
Procedamos a simular el algoritmo con la descomposicin simblica
de una matriz 3 3.
Si se desea obtener la factorizacin
_
_
a
11
a
12
a
13
a
12
a
22
a
23
a
13
a
23
a
33
_
_
=
_
_
g
11
0 0
g
12
g
22
0
g
13
g
23
g
33
_
_
_
_
g
11
g
12
g
13
0 g
22
g
23
0 0 g
33
_
_
;
operando de acuerdo con las reglas de multiplicacin matricial se
obtiene que:
a
11
= g
2
11
a
12
= g
11
g
12
a
13
= g
11
g
13
a
22
= g
2
12
g
2
22
a
23
= g
12
g
13
g
22
g
23
a
33
= g
2
13
g
2
23
g
2
33
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
109/120
Generalizando este proceso se obtiene el algoritmo que describe la
tabla.
for i = 1 to n
g.i; i /

_
a.i; i /
i 1

k=1
g
2
.k; i /
for j = i 1 to n
g.i; j /
_
_
_
a.i; j /
i 1
i
k=1
g.k; i /g.k; j /
_
_
_
_
g.i; i /
end
end
El algoritmo requiere O.n
3
=6/ operaciones de
multiplicacin+divisin y de suma+resta.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
110/120
Este algoritmo en Matlab sera como sigue.
function G=Chols_1(A)
% Factorizacin de Cholesky
n=size(A,1);
for i=1:n, j=i+1:n;
A(i,i)=sqrt(A(i,i));
A(i,j)=A(i,j)/A(i,i);
A(j,j)=A(j,j)-A(i,j)*A(i,j);
end
G=triu(A);
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
111/120
La factorizacin de
_
_
_
_
5 1 2 0
1 2 0 0
2 0 4 1
0 0 1 3
_

_
:
>> A=[5 1 -2 0;1 2 0 0;-2 0 4 1;0 0 1 3];
>> G=Chols_1(A)
G =
2.2361 0.4472 -0.8944 0
0 1.3416 0.2981 0
0 0 1.7638 0.5669
0 0 0 1.6366
>> G=chol(A)
G =
2.2361 0.4472 -0.8944 0
0 1.3416 0.2981 0
0 0 1.7638 0.5669
0 0 0 1.6366
>>
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
112/120
Matlab y la factorizacin de Cholesky
Para resolver un sistema lineal de ecuaciones Ax = b con
Matlab utilizando la factorizacin de Cholesky hay que utilizar la
funcin G=chol(A).
La solucin del sistema correspondiente se puede obtener, teniendo
en cuenta que se realiza A = G
T
G, haciendo
x=G\(G\b)
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
113/120
Para utilizar esta operacin con un ejemplo de los que estamos
manejando, habra que hacer algo parecido a lo que sigue.
>> A=[5 1 -2 0;1 2 0 0;-2 0 4 1;0 0 1 3];
>> b=[1;5;14;15];
>> G=chol(A)
G =
2.2361 0.4472 -0.8944 0
0 1.3416 0.2981 0
0 0 1.7638 0.5669
0 0 0 1.6366
>> x=G\(G\b)
x =
1.0000
2.0000
3.0000
4.0000
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
114/120
Matrices simtricas semidenidas positivas
Una matriz A se dice semidenida positiva, si para todo x = 0,
x
T
Ax _ 0.
Teorema Si A R
nn
es simtrica semidenida positiva:
[a
ij
[ _ .a
i i
a
jj
/=2
[a
ij
[ _
_
a
i i
a
jj
.i = j /
m ax
i;j
[a
ij
[ = m ax
i
a
i i
a
i i
= 0 = a
ij
= a
ji
= 0; j = 1; : : : ; n:
Si el algoritmo de Cholesky se aplica a una matriz semidenida
positiva, y en un paso a
kk
es cero, entonces a
jk
= 0; j = k; : : : n,
por lo que no habra que hacer nada ms en la columna k.
En la prctica, los errores de redondeo internos impiden los ceros
exactos por lo que se recurre a la pivotacin.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
115/120
Pivotacin
Para mantener la simetra, las pivotaciones han de ser simtricas: si
se intercambian dos las, tambin hay que intercambiar las
columnas simtricas: A PAP
T
.
La pivotacin en Cholesky se lleva adelante as:
En cada etapa k del proceso se determina el elemento de
mayor valor de la diagonal principal, m ax
k_j _n
a
jj
:
Si no es cero, se intercambian las las/columnas p y k,
siempre y cuando k = p;
si es cero, el resto de la matriz a factorizar sera nula y no
se hara nada ms.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
116/120
Este es el algoritmo de Cholesky con pivotacin para matrices
semidenidas positivas.
for i = 1 to n
Determinar ndice p {i; i 1; n] tal que [a.p; p/[ = m ax
i _j _n
{[a.j; j /[]
if a.p; p/ > 0
Intercambiar las/columnas p y i .
g.i; i /
_
a.i; i /
i 1

k=1
g
2
.k; i /
for j = i 1 to n
g.i; j /
_
_
_
_
a.i; j /
i 1
i
k=1
g.k; i /g.k; j /
_
_
_
_
_
g.i; i /
end
end
end
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
117/120
Matrices simtricas indenidas
Una matriz A se dice indenida si para algn vector x = 0 la
forma cuadrtica x
T
Ax es positiva y para otros negativa.
Para factorizar este tipo de matrices se recurre a descomposiciones
de pivotacin diagonal en bloques de la forma
PAP
T
= LBL
T
donde la matriz L es triangular inferior unitaria y la matriz B es
tridiagonal, o diagonal en bloques, con bloques de dimensin 1 1
2 2, bidiagonal en este caso.
Casi todos los cdigos modernos utilizan alguna variedad de matriz
bidiagonal B en bloques, aunque todava se usan mucho rutinas que
implementan algn mtodo en el que esa matriz es tridiagonal (T ).
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
118/120
Los mtodos ms conocidos se citan a continuacin.
Mtodo Estrategia Operaciones
Parlett y Reid PAP
T
= LT L
T
O.n
3
=3/
Aasen PAP
T
= LT L
T
O.n
3
=6/
Bunch y Parlett PAP
T
= LBL
T
O.n
3
=6/ O.n
3
=6/ compara.
Bunch y Kaufman PAP
T
= LBL
T
O.n
3
=6/ .n
2
1/ compara.
El del Bunch y Kaufman (1977), en alguna de sus variantes, es el
ms utilizado y el que emplean los cdigos profesionales para
factorizar matrices simtricas.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
119/120
function [L D P rho] = diagpiv(A)
%DIAGPIV Diagonal pivoting factorization with pivoting of a symetric A.
% P*A*P=L*D*L; L is triangular and D a block diagonal D 1x1 or 2x2.
% Rho is the growth factor. This routine does not exploit symmetry.
% Bunch and Kaufman (1977), Some stable methods for calculating inertia
% and solving symmetric linear systems, Math. Comp. 31(137):163-179.
if norm(triu(A,1)-tril(A,-1),1), error(Matrix must be symmetric.), end
n = max(size(A)); k = 1; D = eye(n); L = eye(n); pp = 1:n;
normA = norm(A(:),inf); rho = normA; alpha = (1 + sqrt(17))/8;
while k < n
[lambda r] = max(abs(A(k+1:n,k)));
r = r(1) + k;
if lambda > 0
swap = 0;
if abs(A(k,k)) >= alpha*lambda
s = 1;
else
temp = A(k:n,r); temp(r-k+1) = 0; sigma = norm(temp, inf);
if alpha*lambda^2 <= abs(A(k,k))*sigma
s = 1;
elseif abs(A(r,r))>=alpha*sigma
swap = 1; m1 = k; m2 = r; s = 1;
else
swap = 1; m1 = k+1; m2 = r; s = 2;
end
end
if swap
A([m1 m2],:) = A([m2 m1],:); L([m1 m2],:) = L([m2 m1],:);
A(:,[m1 m2]) = A(:,[m2 m1]); L(:,[m1 m2]) = L(:,[m2 m1]);
pp([m1 m2]) = pp([m2 m1]);
end
if s == 1 % s = 1
D(k,k) = A(k,k);
A(k+1:n,k) = A(k+1:n,k)/A(k,k); L(k+1:n,k) = A(k+1:n,k);
i = k+1:n; A(i,i) = A(i,i) - A(i,k)*A(k,i);
else % s = 2
E = A(k:k+1,k:k+1); D(k:k+1,k:k+1) = E;
C = A(k+2:n,k:k+1); temp = C/E;
L(k+2:n,k:k+1) = temp;
A(k+2:n,k+2:n) = A(k+2:n,k+2:n) - temp*C;
end
if k+s <= n
rho = max(rho,max(max(abs(A(k+s:n,k+s:n)))));
end
else % Nothing to do, lambda=0
s = 1; D(k,k) = A(k,k);
end
k = k + s;
if k == n, D(n,n) = A(n,n); break, end
end
if nargout >= 3, P = eye(n); P = P(pp,:); end
rho = rho/normA;
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
120/120
Con una matriz de Hankel, el programa funciona as:
>> A = gallery(ris,6)
A =
0.0909 0.1111 0.1429 0.2000 0.3333 1.0000
0.1111 0.1429 0.2000 0.3333 1.0000 -1.0000
0.1429 0.2000 0.3333 1.0000 -1.0000 -0.3333
0.2000 0.3333 1.0000 -1.0000 -0.3333 -0.2000
0.3333 1.0000 -1.0000 -0.3333 -0.2000 -0.1429
1.0000 -1.0000 -0.3333 -0.2000 -0.1429 -0.1111
>> cond(A)
ans =
2.2185
>> [L D P rho]=diagpiv(A)
L =
1.0000 0 0 0 0 0
0 1.0000 0 0 0 0
-0.1760 0.2160 1.0000 0 0 0
-0.3143 0.1714 -1.1905 1.0000 0 0
-0.1048 0.3429 0.2646 -0.6667 1.0000 0
-0.9778 0.2000 -0.6173 0.6222 0 1.0000
D =
0.0909 1.0000 0 0 0 0
1.0000 -0.1111 0 0 0 0
0 0 -0.9216 0 0 0
0 0 0 1.7415 0 0
0 0 0 0 -0.8256 1.9264
0 0 0 0 1.9264 0.1284
P =
1 0 0 0 0 0
0 0 0 0 0 1
0 0 0 1 0 0
0 0 1 0 0 0
0 0 0 0 1 0
0 1 0 0 0 0
rho =
1.9264
>> eig(A)
ans =
-1.5708
-1.5705
-1.4438
0.7080
1.5622
1.5708
>>

You might also like