Vous êtes sur la page 1sur 140

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales

Matemticas de la EspecialidadIngeniera Elctrica

Sistemas de ecuaciones lineales


Mtodos directos de solucin

Jos Luis de la Fuente OConnor


jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_sistemas_ecuaciones_lineales_2016.pdf
1/140

ndice


El problema y consideraciones tericas

Mtodos directos: Eliminacin de Gauss


Pivotacin
 Algoritmo
 Nmero de operaciones
 Mtodo de Gauss-Jordan

Condicionamiento de sistemas de ecuaciones lineales

Errores en la eliminacin de Gauss

Matlab y los sistemas de ecuaciones lineales

Factorizacin LU

Solucin de sistemas modificados

Refinamiento iterativo

Sistemas con matrices especiales


2/140

El problema y sus aspectos tericos




Se trata de obtener la solucin de un sistema de ecuaciones del tipo


a11x1 C a12x2 C    C a1nxn D b1
a21x1 C a22x2 C    C a2nxn D b2
:::
:::
:::
:::
am1x1 C am2x2 C    C amnxn D bm:
Hay que obtener los valores de las variables x1; : : : ; xn que hacen que se
cumplan simultneamente todas las igualdades.

A los nmeros aij se les denomina coeficientes del sistema y a los bi trminos
independientes.

3/140

Si se introducen las matrices


2
3
a11 a12    a1n
6
7
6 a21 a22    a2n 7
A D 6 ::
:::
::: 7 ;
4 :
5
am1 am2    amn

2 3
x1
6 7
6x 7
x D 6 ::2 7
4:5
xn

b1
6 7
6b 7
y b D 6 ::2 7 ;
4 : 5
xm

el sistema se puede representar de forma ms compacta por


Ax D b:

En general se supondr que la matriz de coeficientes A 2 Rmn y los vectores


x 2 Rn y b 2 Rm .

4/140

 Casos posibles de sistemas lineales, una vez ms

m = n de ecuaciones lineales:
Casos posibles de sistemas
m=n

m=n
m=n

rango(A) = m = n

rango(A) = m = n

m=n

rango(A) < n < m


rango(A) < n < m

rango(A) < m = n

rango(A) = m = n

rango(A) < m = n

1a

1b

1a

m>n

1b

m>n

m>n

rango(A) = n < m

rango(A) = n < m

m>n
m>n

m>n

rango(A) = n < m

rango(A) < n < m

2a

2b

2a

2b

m<n

m<n
rango(A) = m < n

m<n

rango(A) = m < n
rango(A) = m < n

3a

3a

m<n

m<n

rango(A) < m < n

rango(A) < m < n

m<n

rango(A) < m < n

3b

3b

5/101

5/140

Recordemos algunos resultados de la teora de lgebra lineal.


Teorema Compatibilidad de un sistema de ecuaciones lineales La ecuacin
Ax D b admite solucin si y slo si
rango.Ajb/ D rango.A/:
Corolario Si A mn tiene rango m, Ax D b siempre tiene solucin.
Teorema Si x 0 es una solucin de Ax D b, el conjunto de soluciones de
la ecuacin est dado por x 0 C ker.A/.
Corolario Una solucin de Ax D b es nica si y slo si ker.A/ D ;.
6/140

Teorema La ecuacin Ax D 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/ D n.

2. ker.A/ D ;.

3. Los vectores columna de A son linealmente independientes.


4. Los vectores fila de A son linealmente independientes.
5. Existe una matriz de orden n, A 1, tal que A 1A D AA

DI

7/140

Analicemos geomtricamente el problema de resolver un sistema de dos


ecuaciones lineales con dos incgnitas:
a11x1 C a12x2 D b1
a21x1 C a22x2 D b2:


Cada una de las ecuaciones que componen el sistema representa una recta
en el espacio eucldeo de dimensin dos.
x2
a11 x 1 + a12 x 2 = b1

a21 x 1 + a22 x 2 = b2
x1

El proceso de obtener la solucin del sistema tiene como objeto determinar


las coordenadas del punto donde se cortan.
8/140

Fig 9.2

Copyright The McGraw-Hill Companies, Inc. Permission required for reproduction or display.

En la siguiente figura se pueden ver sistemas donde existen dificultades para


encontrar ese punto de interseccin, al menos visualmente.

Generalizando a Rn, 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.

9/140

Geomtricamente, en el subespacio Im.A/.




Si se escribe el sistema de dos ecuaciones con dos incgnitas de la forma


 
 
 
a11
a
b
x1 C 12 x2 D 1 ;
a21
a22
b2
el problema es el de descomponer linealmente el vector b en los dos vectores
columna de la matriz de coeficientes.
 
b1
b2


a11
a21




a12
a22

En Rn, el problema es el de la bsqueda de la descomposicin lineal de un


vector segn los n vectores de la base de Im.A/: los vectores columna de A.
10/140

Objective: Find the temperature of an integrated circuit (IC)


Ejemplo Hay que modelizar el sistema de refrigeracin de una tarjeta
package mounted on a heat spreader. The system of equations is
electrnica para poder usar un reloj de impulsos con la mayor frecuencia de
obtained from a thermal resistive network model.
oscilacin posible.

Simplificadamente,
y matemtico deModel:
la figura en el
Physicaladoptamos
Model: el modelo fsico Mathematical
que se esquematiza un tiristor o un transistor montado en una placa disipadora
de calor.
aire
Q1
Qc

Tw

R2

Q3
Tp

Q2

R3
a

Q4

R4
a

Q5

R5
a

temperatura exterior Ta
11/140

Si el sistema necesita Qc watios de potencia, suponiendo un modelo resistivo


del flujo de aire entre los nudos del sistema, aplicando los principios de
conservacin de la energa, se obtienen las ecuaciones que siguen.
1
.Tc
R1
1
.Tp
Q2 D
R2
1
Q3 D
.Tc
R3

Q1 D

Tp /
Tw /

1
.Tp
R4
1
Q2 D
.Tw
R5

Q4 D

Ta /

Qc D Q1 C Q3

Ta /

Q1 D Q2 C Q4

Ta /

Se conoce Qc , al igual que Ta . Las resistencias se pueden conocer sabiendo el


material de las placas y sus propiedades.

Las incgnitas son entonces Q1, Q2, Q3, Q4, Tc , Tp y Tw .


12/140

Como hay siete ecuaciones, reagrupando las ecuaciones para aislar las incgnitas
se llega al siguiente sistema:
R1 Q1 Tc C T9
R2 Q2 Tp C Tw
R3 Q3 Tc
R4 Q4 Tp
R 5 Q2 T w
Q1 C Q3
Q1 Q2 Q4

0
0
Ta
Ta
Ta
Qc
0:

En forma matricial, el sistema tiene la siguiente expresin:


2
32 3 2 3
R1
0
0
0
0
R
0
0
2
6
6 0 0 R3 0
6 0 0 0 R4
6 0 R 0 0
5
4
1
0
1
0
1
1
0
1

D
D
D
D
D
D
D

1
0
1
0
0
0
0

1
1
0
1
0
0
0

Q1
0
17 6Q2 7
07 6Q3 7
07 6Q4 7
76 7
15 4 Tc 5
0
Tp
0
Tw

0
6 0 7
6 Ta 7
6 Ta 7
6 T7
4 a5
Qc
0

Los flujos de calor se obtendrn resolviendo este sistema.


13/140

En Matlab, si R1 D 100, R2 D 200, R3 D 50, R4 D 100, R5 D 300,


Ta D 50 y Qc D 25, en su zona de trabajo habra que hacer esto:
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
0
1
1

0
200
0
0
300
0
-1

0
0
50
0
0
1
0

0
0
0
100
0
0
-1

-1
0
-1
0
0
0
0

1
-1
0
-1
0
0
0

0
1
0
0
-1
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
14/140

ndice


El problema; consideraciones tericas

Mtodos directos: Eliminacin de Gauss

Condicionamiento de sistemas de ecuaciones lineales

Errores en la eliminacin de Gauss

Matlab y los sistemas de ecuaciones lineales

Factorizacin LU

Solucin de sistemas modificados

Refinamiento iterativo

Sistemas con matrices especiales


15/140

Mtodos directos: Eliminacin de Gauss




Los mtodos directos resuelven el problema en etapas, siendo el nmero de


stas fijo y funcin de la dimensin del problema.

El ms clsico es el debido a Carl Friedrich Gauss, Alemania, 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 cuadrada A es de rango completo regular, por lo


tanto invertible, y que si eventualmente no lo es el procedimiento deber
detectarlo.

16/140

La mecnica del mtodo consiste en aplicar al sistema

n


9
a11x1 C a12x2 C    C a1nxn D b1 >
>
>
=
a21x1 C a22x2 C    C a2nxn D b2
:::
:::
:::
::: > Ax D b
>
>
an1x1 C an2x2 C    C annxn D bn ;

1 transformaciones lineales que lo conviertan en otro ms fcil de resolver.

Concretamente, en un sistema triangular superior de la forma


b10
b20

9
=

u11x1 C u12x2 C    C u1nxn D


u22x2 C    C u2nxn D
:::
:::
;
0
unnxn D bn;

U x D b0:
17/140

Un sistema triangular superior, siempre y cuando se satisfaga que


ui i 0;

i D 1; : : : ; n;

es fcilmente resoluble de manera recurrente mediante las frmulas


!
n
X
1
0
xk D
uki xi ;
k D 1; : : : ; n:
b
ukk k
i DkC1

Este proceso se conoce como sustitucin inversa.

18/140

En cada una de esas n

1 etapas hay que llevar a cabo:

1. Una multiplicacin de una de las ecuaciones del sistema por un nmero


distinto de cero.
2. Una sustitucin de una ecuacin del sistema (o varias) por la que resulta de
sumarle otra multiplicada por un factor.
3. Una posible permutacin del orden en que aparecen en el sistema las
ecuaciones del mismo.

19/140

Ejemplo Se desea resolver el sistema


2x1 C x2
C 4x4 D
4x1
2x2 C 3x3
7x4 D
4x1 C x2
2x3 C 8x4 D
3x2
12x3
x4 D

2
9
2
2:

Escrito en forma matricial, Ax D b, los distintos componentes son


2 3
3
2 3
2
2
x1
2 1
0 4
7
6 7
6 7
6
3 77
6x27
6 4 2
6 97
AD6
7; b D 6 7 y x D 6 7:
2 85
4x35
4 4 1
4 25
x4
0 3 12 1
2
20/140

Reconfiguremos inicialmente la matriz A, aadindole a su derecha la columna


b es decir,
del trmino independiente b, y llamemos a la nueva matriz A;
2
3
2 1
0 4 2
6
7
4
2
3
7
9
6
7
b D Ajb D 6
A
7:
2 8 25
4 4 1
0 3 12 1 2
Apliquemos ahora la mecnica del mtodo en 3 etapas.

Etapa 1


Comprobemos el valor del coeficiente aO 11 denominado pivote.


Si es distinto de cero, pivotando sobre l, hagamos cero los coeficientes de la
primera columna por debajo de ese aO 11.
21/140

Para ello, calculamos para cada fila 2; : : : ; n los factores o multiplicadores


ri D

i D 2; : : : ; n:

A continuacin, restamos de las filas i D 2; : : : ; n, la primera multiplicada por


ri . El resultado es que todos los coeficientes debajo de la diagonal principal de
la columna 1 se anularn.


b debajo de la primera fila se vern afectados


Los dems coeficientes de A
como indica esta expresin:

aO ij

aO i1
;
aO 11

aO ij

ri  aO 1j ;

i D 2; : : : ; nI j D 2; : : : ; n C 1:

En el ejemplo, los multiplicadores son


r2 D aO 21=aO 11 D
r3 D aO 31=aO 11 D
r4 D aO 41=aO 11 D

4=2 D
4=2 D
0=2 D

2
2
0:
22/140

b que cambian de valor son:


Los coeficientes de la matriz A

en la 2a fila:

en la 3a fila:

en la 4a fila:

aO 21
aO 22
aO 23
aO 24
aO 25
aO 31
aO 32
aO 33
aO 34
aO 35
aO 41
aO 42
aO 43
aO 44
aO 45

0
aO 22
aO 23
aO 24
aO 25
0
aO 32
aO 33
aO 34
aO 35
0
aO 42
aO 43
aO 44
aO 45

r2  aO 12
r2  aO 13
r2  aO 14
r2  aO 15

D
D
D
D

2
3
7
9

r3  aO 12
r3  aO 13
r3  aO 14
r3  aO 15

D
D
D
D

r3  aO 12
r4  aO 13
r4  aO 14
r4  aO 15

D
D
D
D

C
C
C
C

21
20
24
22

D
D
D
D

0
3
1
5I

1
2
8
2

21
20
24
22

D
D
D
D

1
2
0
2I

3
12
1
2

01
00
04
02

D
D
D
D

3
12
1
2:
23/140

b 1 , resultado de transformar A,
b es:
La nueva matriz A
2
3
2
0
b1 D 6
A
40
0

1
0
1
3

0
3
2
12

4
1
0
1

2
57
:
25
2

Obsrvese que se hubiese obtenido exactamente el mismo resultado de haber


b por la denominada transformacin de Gauss que define la
premultiplicado A
matriz triangular inferior unitaria
2
3
1 0 0 0
6
7
6 2 1 0 07
L1 D 6
7;
4 2 0 1 05
0 0 0 1
denominada matriz de transformacin de Gauss.

En efecto,

1
6 2
L1b
AD4
2
0

0
1
0
0

0
0
1
0

32
0
07 6
05 4
1

2
4
4
0

1
2
1
3

0
3
2
12

4
7
8
1

3 2
2
2
97 6 0
D
25 4 0
2
0

1
0
1
3

0
3
2
12

4
1
0
1

3
2
57
.
25
2

24/140

La matriz L1 tambin se puede escribir de la forma L1 D I

Su inversa es

3
0
6 27
7
D6
4 25
0
2

L1 1

2 3
1
607
7
y e1 D 6
405 :
0

1 0
6
6 2 1
D6
4 2 0
0 0

0
0
1
0

e T1 , donde

0
7
07
7:
05
1

La nica diferencia con L1 es el signo de los coeficientes de la primera columna


debajo de la diagonal principal.


b 1 D L1 A.
b
En resumen, A

25/140

Etapa 2


Hagamos cero los coeficientes debajo de la diagonal principal de la 2a columna


b 1.
de A
1
es cero, lo que nos
Al tratar de hacerlo, vemos que el coeficiente pivote aO 22
impide proceder como en la etapa anterior.

1
Comprobemos si algn coeficiente de la columna 2 por debajo de aO 22
no es 0:


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 fila


de ese coeficiente con la segunda.
26/140

En el ejemplo, el coeficiente de mayor valor absoluto debajo de la diagonal


principal en la segunda columna, 3, se encuentra en la fila 4. Intercambiamos
esa fila 4 con la 2. Se obtendr
3
2
2 1
0 4 2
7
6
60 3 12 1 27
0
b
A1 D 6
7:
2 0 25
40 1
0 0
3 1 5

Esto mismo se obtiene premultiplicando


2
1
6
60
P1 D 6
40
0

b 1 por la permutacin
A
3
0 0 0
7
0 0 17
7:
0 1 05
1 0 0
27/140

b 0 , es:
Recapitulemos: la matriz con la que vamos a operar a continuacin, A
1
b 0 D P 1 L1 A:
b
A
1

Apliquemos a continuacin a la columna 2 la misma idea que a la columna 1 y


hagamos cero sus coeficientes 3 a n.

Los nuevos multiplicadores saldrn de la expresin


0

1
aO i2
ri D 10 ;
aO 22

i D 3; 4:

b 0 por debajo de la segunda


Los nuevos valores de los coeficientes de la matriz A
1
fila se obtendrn aplicando la expresin
0

aO ij1

aO ij1

1
ri  aO 2j
;

i D 3; 4I j D 3; : : : ; 5:
28/140

Los valores de los multiplicadores para el ejemplo son


0

1
1
r3 D aO 32
=aO 22
D 1=3 y

1
1
r4 D aO 42
=aO 22
D

Los nuevos coeficientes de la matriz


10
aO 32
0
en la 3a fila:
0
1
10
aO 33
aO 33
10
10
aO 34
aO 34
10
10
aO 35
aO 35
en la 4a fila:

1
aO 42
10
aO 43
10
aO 44
10
aO 45

0
10
aO 43
10
aO 44
10
aO 45

0:

b 0 resultante:
A
1
0

1
r3  aO 23
D
10
D
r3  aO 24
10
D
r3  aO 25
0

1
r4  aO 23
D
0
1
r4  aO 24
D
0
1
r4  aO 25
D

2 C
0 C
2

1
3
1
3
1
3

 12 D
1 D
2 D

2
1=3
8=3I

3
1
5

0  12 D
01 D
02 D

3
1
5:

Al ser r4 D 0, los clculos para adaptar la cuarta fila podran haberse evitado.

29/140

La nueva matriz resultado de estas transformaciones es


2
3
2 1
0
4
2
6
7
1
27
60 3 12
b
A2 D 6
7;
2 1=3 8=35
40 0
5
0 0
3
1
matriz que se expresa a partir de la inicial como
2
1
6
60
donde L2 D 6
40
0

0
1
1=3
0

0
0
1
0

b 2 D L2 P 1 L1 A;
b
A
3

0
7
07
7:
05
1

30/140

Etapa 3


Para conseguir transformar el sistema original en uno triangular superior slo


2
resta anular el coeficiente aO 43
.

2
es distinto de cero, luego procedemos
El coeficiente de la diagonal principal aO 33
a calcular el multiplicador r4:
2
2
r4 D aO 43
=aO 33
D 3=2:

b 2 por debajo de la tercera


Los nuevos valores de los coeficientes de la matriz A
fila se obtendrn aplicando la expresin

aO ij2

aO ij2

2
ri  aO 3j
;

i D 4I j D 4; 5:
31/140

En concreto, en la cuarta fila:


2
aO 43
2
aO 44
2
aO 45

0
2
aO 44
2
aO 45

2
r4  aO 34
D
2
r4  aO 35
D

1
5 C

3
2
3
2

 31 D 1=2
 38 D
1:

La nueva matriz resultado de estas transformaciones es


2
3
2 1
0
4
2
6
7
0
3
12
1
2
6
7
b3 D 6
A
7:
2 1=3 8=35
40 0
0 0
0 1=2
1
32/140

b una serie
A este resultado se ha llegado despus de aplicar a la matriz inicial A
de transformaciones; concretamente:

donde

b 3 D L3 L2 P 1 L1 A;
b
A

2
1
6
60
L3 D 6
40
0

0
1
0
0

0
0
1
3=2

0
7
07
7:
05
1

En conclusin, la matriz original que defina el sistema, A, se puede transformar


b
en la triangular superior U aplicndole las mismas transformaciones que a A.
Es decir,
U D L3L2P 1L1A:
33/140

Como a b tambin se le han efectuado las mismas transformaciones llegndose


a b0, resolver el sistema de ecuaciones original es equivalente a resolver
U x D b0

En el ejemplo,

2
2
6
60
6
40
0

1
3
0
0

0
12
2
0

32 3 2
3
4
x1
2
76 7 6
7
17 6x27 6
27
76 7 D 6
7:
1=35 4x35 4 8=35
1=2
x4
1

34/140

La solucin se lleva a cabo mediante sustitucin inversa:


x4 D

2;

sustituyendo en la tercera ecuacin,


x3 D

8=3

. 2/.1=3/
D
2

1;

y, a su vez, hacindolo en la segunda,


x2 D


. 1/. 2/

. 12/. 1/
3

D 4:

Por ltimo, sustituyendo los valores de las variables ya calculados en la primera


ecuacin se obtiene
2 4. 2/ 1.4/
x1 D
D 3:
2
35/140

La solucin de nuestro ejemplo es pues


2 3 2
x1
6 7 6
6x27 6
6 7D6
4x35 4
x4

3
7
47
7:
15
2

36/140

Pivotacin


Veamos qu ocurre si resolvemos con el procedimiento estudiado



  
 
4
10 1
x1
1
D
;
1 1
x2
2

en una mquina con tres dgitos significativos que efecte redondeos.




Aplicando la mecnica apuntada, como 10 4 no es cero, en la primera etapa se


obtendra una nueva matriz A 1 y un nuevo vector b1; son:




4
10
1
1
A1 D
y
b
D
:
1
0 1 104
2 104
37/140

El nmero 1 104 D 9999, la mquina lo redondeara a 104; de la misma


forma procedera con 2 104. La solucin del sistema sera
104
x2 D
D 1
104
1 x2
x1 D
D 0;
10 4
muy distinta de la real 0;99989999; 1;00010001T .

La eleccin del pivote, y su uso, adems de que el multiplicador no salga de un


posible ai i D 0, tambin tiene por objeto que ese multiplicador no tenga una
magnitud mucho mayor que 1 con el fin de aumentar la estabilidad numrica del
procedimiento,


Es por esto por lo que se escoge el coeficiente pivote de mayor magnitud de


entre los de debajo de la diagonal principal.
38/140

Para el caso de este ltimo ejemplo, en la primera etapa, en lugar de operar


sobre la matriz anterior, como el valor absoluto del coeficiente a21 es mayor que
el del a11, se intercambiara la fila 1 con la 2, obtenindose


 
1
1
2
0
A0 D
y
b
D
:
10 4 1
1

Continuando con el procedimiento normal, despus de la primera etapa, se


llegar a




1
1
2
A 01 D
y b01 D
:
4
0 1 10
1 2  10 4
Por redondeos internos, la mquina representara


 
1
1
2
A 01 D
y b01 D
:
0 1
1

39/140

La solucin de este sistema de ecuaciones sera


   
x1
1
D
:
x2
1
Solucin mucho mejor que la anterior, pues la real es
0,9998
x2 D
D 0,99989999
0,9999
x1 D 1,00010001:

La diferencia entre las dos formas de proceder anteriores es importante. En la


primera, al usar el multiplicador 104, el efecto de restar 104 veces la ecuacin
superior de la ecuacin inferior fue atenuar, o dominar, la ecuacin final.
Aunque al principio del proceso haba dos ecuaciones, o fuentes de informacin
independientes, actuando de la primera manera, despus de la primera
eliminacin, quedan en esencia dos copias de la ecuacin superior pues la
inferior, a efectos prcticos, ha desaparecido. La solucin obtenida con esa
primera forma de actuar, como es lgico, no satisface la ecuacin inferior.
A este efecto se le conoce como dominancia.
40/140

El proceso descrito de intercambiar filas se denomina pivotacin parcial.

Su por qu radica en la aritmtica de precisin finita con la que trabajan todos


los ordenadores y en el hecho de que los factores o multiplicadores antes
introducidos son inversamente proporcionales al coeficiente pivote: si ste es
demasiado pequeo puede amplificar los errores de redondeo a lo largo del
proceso de solucin y favorecer la dominancia que se ha descrito.

41/140

Partial Pivoting

Una segunda estrategia de pivotacin es la pivotacin total. Consiste en buscar


en una etapa i no slo el coeficiente de mayor valor absoluto
en la columna
Full Pivoting
correspondiente,
en bytodo
que
porthetratar
de la matriz: el
To avoidsino
division
zero, lo
swap
thequeda
row having
zero pivot
with onejaof the
rows below it.
mKaxi kn; ij
n kj j.
Rows completed in
forward elimination.
0

Rows completed in
forward elimination.

Row with zero pivot


0 element

Rows to search for a


more favorable pivot
*
element.

Row with zero pivot eleme

Rows to search for a


more favorable pivot
element.

Columns to search for a more


favorable pivot element.

To minimize the eect of roundo, always choose the row that

La pivotacin
es lapivot
estrategia
parai.e.,minimizar
putstotal
the largest
element onptima
the diagonal,
nd ip sucherrores.

En la prctica, la pivotacin parcial produce buenos resultados y excelentes


prestaciones numricas por lo que rara vez se usa la total.

that |aip,i| = max(|ak,i |) for k = i, . . . , n

42/140

Algoritmo
 Resolucin de Ax D b
 Transformacin de la Matriz Aumentada Ajb
for i D 1 to n 1
Determinar ndice p 2 fi; i C 1; : : : ; ng tal que ja.p; i /j D mKaxi j n ja.j; i /j.
Intercambiar filas p e i .
for j D i C 1 to n
 D a.j; i /=a.i; i /
for k D i C 1 to n C 1
a.j; k/
a.j; k/   a.i; k/
end
end
end

 Sustitucin Inversa.
for j D n to01
1

n
X
@b.j /
x.j /
a.j; k/  x.k/A a.j; j /

end

kDj C1

43/140

En cdigo de 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 en n-1 etapas
[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
end

44/140

Desde el punto de vista de la codificacin del algoritmo, conviene mejorar:




Que no es realmente necesario intercambiar las filas una vez elegido el


coeficiente pivote de cada etapa; basta con tener constancia en cada
momento dnde estn las filas que se intercambian.

Que tal como est estructurado el programa slo se podra resolver un


sistema el definido por el b dado y no, como es lo ms habitual, distintos
sistemas con la misma matriz A y diversos trminos independientes.

45/140

Lo 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,
2 3
1
627
6 7
IPIV D 63 7 :
4 ::: 5
n

Cuando haya que intercambiar dos filas en un etapa, no se har intercambiando


fsicamente los coeficientes de esas dos filas, sino las correspondientes de IPIV.

Si en una primera etapa hay se utilizar como pivote el de la cuarta fila,


2 3
4
627
6 7
637
IPIV D 61 7 :
6:7
4 :: 5
n

46/140

Si al final de un proceso de resolucin de un sistema de cinco ecuaciones con


cinco incgnitas, el vector puntero resultase
2 3
4
627
6 7
IPIV D 657 ;
415
3

la matriz A 0 que se obtendra no resultara ser estrictamente triangular superior.


Tendra la forma que sigue.

Para obtener Ax D b habra que aplicar esas mismas manipulaciones de filas a


b, o tenerlo en cuenta.

47/140

Para evitar el segundo inconveniente, habra que guardar adecuadamente la


informacin que definen los multiplicadores asociados a cada fila 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 definen:
en la etapa i , debajo de la diagonal principal en la columna i .

En el ejemplo, con esta idea, al final del proceso:


2

6
6
AD6
4

Los multiplicadores eran

Ojo, verifiquemos:

2
2
2
0

1
3
1=3
0

0
12
2
3=2

3
4
7
17
7:
1=35
1=2

2, 2, 1=3 y 3=2.
>> I=eye(4); L1=I; L2=I; L3=I;
>> L1(2:3,1)=[-2 2]; L2(3,2)=1/3; L3(4,3)=3/2; P=I([1 4 3 2],:);
>> U=[2 1 0 4;0 -3 -12 -1;0 0 2 1/3; 0 0 0 1/2];
>> L=L1*P*L2*L3; L*U, A
ans =
2
1
0
4
-4
-2
3
-7
4
1
-2
8
0
-3
-12
-1
A =
2
1
0
4
-4
-2
3
-7
4
1
-2
8
0
-3
-12
-1
48/140

Nmero de operaciones del mtodo




Dos de los factores ms importantes que influyen 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.
49/140

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
:: ! :: ::

0 2

0 2

  
 2 2
:: ::
 2 2
 2 2


2
::
2
2

El smbolo 2 designa los coeficientes de la matriz que se ven afectados en esa


etapa y que, en principio, son distintos de cero.

50/140

Si en la etapa i se est transformando una matriz n  n, las operaciones que en


ella se realizan son:
n
.n

divisiones para el clculo de los multiplicadores;


i C 1/ multiplicaciones y restas para modificar los coeficientes
de la matriz por debajo de la fila i que no estn en la
propia columna i.

i /.n

En cada etapa se efectan,


.n

i / C .n

i /.n

i C 1/ D .n

i /.n

i C 2/

multiplicaciones y divisiones y
.n

i /.n

i C 1/

sumas y restas.
51/140

En n

1 etapas de que consta el proceso, se harn


n 1
X

.n

i /.n

i D1

i C 2/ D .n C 2n/

n 1
X

i D1

D .n2 C 2n/.n

1/

.n

1/n.2n
C
6
2n3 C 3n2 5n
D
6

2.n C 1/

n 1
X
iD1

2.n C 1/

iC

.n

n 1
X

i2

i D1

1/n
2

1/

multiplicaciones y divisiones y
n 1
X
.n
i D1

i /.n

i C 1/ D .n C n/

n 1
X
iD1

D .n2 C n/.n
C
D

.n

n3

1
1/

1/n.2n
6

.2n C 1/

n 1
X
i D1

.2n C 1/

iC

.n

n 1
X

i2

i D1

1/n
2

1/

n
3

sumas y restas.
52/140

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


sumas, para cada trmino del sumatorio, y una resta y una divisin.


1/

El nmero total de operaciones de todo el proceso es


1C

n 1
X

..n

i D1

n2 C n
i / C 1/ D
2

multiplicaciones y divisiones y
n 1
X
i D1

..n

1/ C 1/ D

n2

n
2

sumas y restas.
53/140

Contando la totalidad de la transformacin de la matriz del sistema y la


sustitucin inversa, la eliminacin de Gauss requiere
2n3 C 3n2
6

5n

n2 C n
n3 C 2n2
C
D
2
3

multiplicaciones y divisiones y
n3

n
3

n2

n
2

2n3 C 3n2
D
6

5n

sumas y restas.


Para valores de n, estas expresiones tienden a


1 3
n  O.n3=3/
3
lo que refleja la importante magnitud del nmero de operaciones.
54/140

Aunque la cantidad n3=3 puede parecer muy grande, recordemos las frmulas de
Cramer para la solucin de sistemas:
2
3
a11    a1i 1 b1 a1iC1    a1n
6
7
det.B i /
6a21    a2i 1 b2 a2i C1    a2n 7
; donde B i D 6 ::
xi D
:::
:::
:::
::: 7 :
4 :
5
det.A/
an1    ani 1 bn ani C1    ann


Mediante estas frmulas se requieren:


8
sumas,
< .n C 1/
.n C 2/
multiplicaciones y
:
n
divisiones.

Para diez ecuaciones con diez incgnitas se requerirn:


8
740 operaciones utilizando eliminacin de Gauss.
<
500.000.000 operaciones, aproximadamente, aplicando
:
las frmulas de Cramer.

55/140

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
coeficientes del sistema no slo los coeficientes no nulos que estn debajo de la
diagonal sino tambin los de arriba.

Se debe conjuntamente a Gauss y Wilhelm Jordan, Alemania, 1842-1899.

Una etapa i de la eliminacin de Gauss estaba caracterizada por la matriz


Li D I
donde

0
::
:

6
7
6
7
6 i
i 7
i D 6ai C1 i =ai i 7
6
7
::
4
5
:
i
ani
=aii i

fila i C 1

i e Ti ;
2 3
0
6 ::: 7
6 7
6 7
y e i D 617
6:7
4 :: 5
0

fila i :
56/140

En la etapa i de este mtodo, la matriz de transformacin de Gauss-Jordan es


la dada por
T i D I i e Ti ;
2
3
2 3
i
i
donde
a1i =ai i
0
6 :::
7
6 ::: 7
6
7
6 7
6
7
6 7
i
i D 6 1=ai i 7
y e i D 617
fila i
fila i :
6 ::
7
6 :: 7
4 :
5
4:5
i
=aii i
ani
0

Si se tiene en cuenta que A 0 D A y A n D I, se tendr que


1    T 2T 1A

Tn

D I;

por lo que el mtodo obtiene directamente la matriz inversa:


A

D Tn

1    T 2T 1:

Las multiplicaciones y divisiones, y sumas y restas, son O.n3=2/ .


57/140

Condicionamiento de sistemas


En un sentido general se dice que un problema o un algoritmo est bien


condicionado si pequeas perturbaciones en los parmetros que lo definen
producen pequeos cambios en los resultados.

Consideremos el ejemplo de una carga sujeta a una superficie firme mediante un


cable o una barra de hierro.


Aumentando la carga en pequeas cantidades, el cable sufre unos pequeos


estiramientos proporcionales a los incrementos de esa carga.

Alcanzado el umbral de la zona de fluencia del material del cable,


incrementos muy pequeos de la carga suponen, proporcionalmente, grandes
estiramientos del cable.

Antes de este umbral, el problema estiramiento/carga se puede decir que


est bien condicionado; en la zona de fluencia el problema est mal
condicionado.
58/140

El condicionamiento de un sistema de ecuaciones lineales Ax D b lo


caracterizar la sensibilidad del vector solucin x a pequeos cambios, tanto en
el trmino de la derecha b, como en los coeficientes que definen la matriz A.

Como sabemos, el ordenador o mquina que resuelve Ax D b, al no trabajar


ms que con una precisin determinada, resolver una aproximacin
.A C A/x D b C b:


Si el algoritmo utilizado es estable y el sistema tambin, el resultado


obtenido debe ser muy parecido al real.

Si el sistema est mal condicionado, sin embargo, o el algoritmo no es


numricamente estable, la solucin puede diferir sustancialmente de la real.

59/140

Ejemplo Consideremos los dos sistemas de ecuaciones lineales



   
3
8 5 x1
Ax D b !
D
4 10 x2
14
y


   
0;66
3;34
xO 1
4
b xO D bO !
A
D
:
1;99 10;01 xO 2
12

La solucin de ambos es el vector 1; 1T .




Si introducimos una perturbacin b D 0,04; 0,06T en el trmino


independiente del primer sistema, su solucin pasar a ser 0,993; 0,9968T .

60/140

El cambio relativo en la norma eucldea del vector b es


kbk2
D
kbk2

0;042 C 0;062
q

32 C 142

 0,0050:

Por lo que respecta al vector solucin, ese cambio relativo en la norma eucldea
es
q
.1 0;993/2 C .1 0;9968/2
kxk2
q
D
 0;0054:
kxk2
2
2
1 C1

Como se puede ver, un pequeo cambio en el vector b induce un cambio


pequeo en el vector solucin.

61/140

Introduciendo el mismo cambio, bO D 0,04; 0,06T , en el vector en el


O su solucin pasa a ser 6; 0T .
trmino independiente del segundo sistema, b,
Es decir, un cambio relativo en la norma eucldea de bO igual a
q

0;042 C 0;062
q

42 C 122

D 0,0057;

produce un cambio en el vector solucin igual a:


q

52 C 12
2

1 C1

D 3,6055:

Evidentemente, el segundo sistema es mucho ms sensible a cambios en el


trmino independiente que el primero.
62/140

x2

x2

x1

x1

La figura representa a la izquierda el primer sistema; el segundo a la derecha.




Como se puede apreciar, las dos rectas que representan las ecuaciones del
primer sistema se cortan ntidamente en el punto 1; 1T .

En el caso del segundo sistema, aun usando una resolucin grfica mayor,
apenas se diferencian las dos rectas y mucho menos dnde se cortan.
63/140

Estudiemos cmo cuantificar la sensibilidad de Ax D b a pequeas


modificaciones tanto en el trmino independiente como en los coeficientes de la
matriz de coeficientes.

Analicemos en primer lugar el caso de una modificacin b del trmino


independiente.

Veamos cmo se relaciona la solucin de


A.x C x/ D b C b
con la de
Ax D b:

Designemos por k  k cualquier norma vectorial y su norma matricial consistente


correspondiente.
64/140

De las igualdades
A.x C x/ D b C b

y Ax D b;

se obtiene, restando y despejando x, que


x D A 1b:


De la definicin de norma matricial consistente con una norma vectorial se tiene


que
kxk  kA 1k kbk
(1)
y que kbk  kAk kxk o, lo que es lo mismo, que
1
kAk

:
kxk
kbk

(2)

65/140

Combinando (1) y (2) se deduce que el error relativo, kxk=kxk, de la solucin


del sistema Ax D b al modificar el trmino independiente de b a b C b es
kxk
kbk
 kAk kA 1k
:
kxk
kbk

Definicin Sea k  k una norma matricial consistente con una norma vectorial. Asociado a esa norma, el nmero de condicin de una matriz
invertible A, .A/, es:
.A/ D kAk kA 1k:

66/140

Si los datos de un sistema Ax D b son exactos con la precisin de la mquina,


el error relativo de la solucin cumple que
jjx  xjj
 .A/:
jjxjj

El concepto de nmero de condicin de una matriz se generaliza a cualquier


matriz A (no necesariamente cuadrada) de rango completo mediante la
expresin
.A/ D kAk kA k;
donde A es la matriz pseudoinversa de la matriz A.

El nmero de condicin de una matriz A es un indicador del error de


amplificacin que produce en un vector x el someterlo a la transformacin que
define dicha matriz A.
67/140

Concretamente, si la esfera unidad se somete a esa transformacin, el nmero


de condicin 2, asociado a la norma eucldea, ser igual al cociente de las
longitudes de los semiejes mayor y menor del hiperelipsoide resultante de esa
transformacin.

Ax

68/140

Estudiemos ahora la sensibilidad de un sistema de ecuaciones a pequeas


perturbaciones en los coeficientes de la matriz.

Comparemos la solucin de
Ax D b

y .A C A/.x C x/ D b:

De la segunda igualdad, como Ax D b, haciendo x D


resulta, despreciando el producto A  x, que

A 1A.x C x/

kxk  kA 1k kAk kxk:

69/140

Expresin que tambin se puede escribir como


kxk
kAk
 kA 1k kAk
:
kxk
kAk

As pues, el error relativo que resulta de perturbar ligeramente los coeficientes


de la matriz del sistema Ax D b est tambin acotado en trminos del nmero
de condicin de la matriz A.

El nmero de condicin de una matriz expresa lo cerca que


esa matriz est de la singularidad

70/140

Teorema Para toda matriz A de rango completo:


1. Su nmero de condicin .A/  1.
2. .A/ D .A /.

3. .A/ D .A/ para todo escalar 0.

n .A/
, donde n y 1 son, respectivamente, los valores singulares mayor y
1 .A/
menor de la matriz A.
mKax ji .A/j
, si A es simtrica.
5. 2 .A/ D i
mKn ji .A/j

4. 2 .A/ D

6. 2 .A T A/ D 22 .A/.

7. Su nmero 2 .A/ D 1 si la matriz es la identidad o se trata de una matriz ortogonal.


8. Su nmero de condicin 2 .A/ es invariante frente a transformaciones ortogonales.

71/140

Las matrices con nmeros de condicin pequeos prximos a la unidad, se


dicen bien condicionadas; las que tienen nmeros de condicin altos, mal
condicionadas.

Los distintos nmeros de condicin de una matriz A 2 Rnn asociados con las
normas matriciales ms habituales cumplen que:
2.A/=n  1.A/  n 2.A/I
1.A/=n  2.A/  n 1.A/I
1.A/=n2  1.A/  n2 1.A/:

72/140

Volvamos al ejemplo que utilizbamos para concretar estos conceptos. La


matriz


8 5
AD
;
4 10
cuya inversa es


0;10 0;05
;
0;04 0;08

tiene un nmero de condicin 1.A/ D kAk1 kA 1k1 D 15  0,14 D 2,1.





0,66
3,34
bD
A
;
1,99 10,01

El de

cuya inversa es
b
A


250,25
D
49,75

83,5
;
16,5

b D kAk
b 1 kA
b 1 k1 D 13,35  300 D 4.005: tres rdenes de magnitud
es 1.A/
superior.

73/140

Un error que se comete con frecuencia es asimilar el concepto de nmero de


condicin de una matriz con el de su determinante y que, en ese sentido, a
mayor determinante, mayor nmero de condicin; nada ms lejos de la realidad.

Ejemplo 1 Sea A una matriz diagonal de orden 100 definida por


a11 D 1I

ai i D 0,1 2  i  100:

De esta matriz, kAk2 D 1 y kA 1k2 D 10.




El nmero de condicin 2.A/ D 10. Por el contrario, su determinante es


det.A/ D 1  .0; 1/99 D 10 99.

74/140

Ejemplo 2 Sea A una matriz bidiagonal de la forma


3
2
1 2
6 1 2
6
1
6

Su inversa es

6
6
4

6
6
6
4

2
1

7
7
2
7
::: ::: 7 :
7
1 25
1

4    . 2/n
2
. 2/n
::
1
:
::
:::
:
1

1
2

7
7
7:
5

Sus diversas normas son kAk1 D kAk1 D 3 y kA 1k1 D kA 1k1 D


D 1 C 2 C 4 C    C 2n 1 D 2n 1.

Sus nmeros de condicin, 1.A/ D 1.A/  3  2n. Su determinante, 1.

75/140

Clculo del nmero de condicin




Calcular directamente el nmero de condicin de una matriz es una tarea


numrica muy costosa: O.n3/.

No obstante, como .A/ es un buen diagnstico de las implicaciones que el uso


de esa matriz puede comportar en un proceso numrico, se puede realizar una
estimacin de su orden de magnitud.


Existen diversos buenos algoritmos para estimar el nmero de condicin de


una matriz en O.n2/ operaciones.

En Matlab lo estiman condest y rcond; lo calcula exactamente cond.

Siempre que se usa el operador n, Matlab usa rcond para comprobar la


condicin de la matriz afectada.
76/140

Errores en la eliminacin de Gauss




Conviene disponer de otros indicadores, adems del nmero de condicin de la


matriz A, para conocer la fuente de los posibles errores en la solucin de un
sistema de ecuaciones lineales mediante la eliminacin de Gauss.
Definicin Sea x a una solucin aproximada del sistema lineal Ax D b.
El vector residuo es r D b Ax a . El error hacia atrs de esa solucin es la
norma del vector residuo, kb Ax a k, y el error hacia delante kx x a k.

77/140

Si se tiene el sistema

x1 C x2 D 2
1;0001x1 C x2 D 2;0001

cuya solucin es 1; 1T , y queremos calcular los errores hacia atras y hacia


delante de la solucin aproximada 1; 3;0001, se tendr que,


Error hacia atrs:


b


2
Ax D
2;0001


2
D
2;0001



1
1
1
1;0001 1 3;00001

 
:
2;0001
0;0001
D
2
0;0001

Si utilizamos la norma infinito, por ejemplo, este error es 0;0001.




Error hacia delante


x

 
1
xa D
1

1
D
3;0001

2
:
2;0001

Con el mismo tipo de norma, este error es 2;0001.


78/140

which is 2.0001.

Figure 2.2 helps to clarify how there can be a small backward error and large forward
error at the same time. Even though the approximate root (1, 3.0001) is relatively far
from the exact root (1, 1), it nearly lies on both lines. This is possible because the two lines
are almost parallel. If the lines are far from parallel, the forward and backward errors will
be closer in magnitude.

La figura aclara cmo puede haber un error pequeo hacia atrs y uno grande
hacia delante al mismo tiempo.
y

1
2
1

Figure 2.2 The geometry behind Example 2.11. System (2.17) is represented by
the lines x2 = 2 x1 and x2 = 2.0001 1.0001x1 , which intersect at (1,1). The point
( 1, 3.0001) nearly misses lying on both lines and being a solution. The differences
between the lines is exaggerated in the gurethey are actually much closer.

El punto 1; 3;0001 est relativamente lejos de la solucin, pero cerca de


ambas rectas, pues
casi son paralelas.
Denote the residual by r = b Ax . The relative backward error of system Ax = b
a

is dened to be

||r||

,
El nmero de condicin 1.A/ D 40:004;0001.
||b||
and the relative forward error is
||x xa ||
.
||x||

79/140

El error relativo hacia atrs del sistema Ax D b es


El error relativo hacia delante,

kx

xak
.
kxk

krk
.
kbk

El factor de magnificacin o amplificacin del error para Ax D b es la razn de


los dos:
kx x a k
error relativo hacia delante
kx k
factor de magnificacin del error D
D kr k :
error realtivo hacia atrs
kbk

Para el sistema anterior, con normas infinito, el error relativo hacia atrs es
0;0001
 0;00005 D 0;005 %
2;0001
y el error relativo hacia adelante
2;0001
D 2;0001  200 %:
1
80/140

El factor de magnificacin del error es


kx x a k1
kx k1
kr k1
kbk1

D 2;0001=.0;0001=2;0001/ D 40004;0001:

El nmero de condicin de una matriz cuadrada es el factor de magnificacin


del error mximo posible para resolver Ax D b sobre todos los posibles b.

81/140

ndice


El problema; consideraciones tericas

Eliminacin de Gauss

Condicionamiento de sistemas de ecuaciones lineales

Errores en la eliminacin de Gauss

Matlab y los sistemas de ecuaciones lineales

Factorizacin LU

Solucin de sistemas modificados

Refinamiento iterativo

Sistemas con matrices especiales


82/140

Matlab y los sistemas de ecuaciones lineales




Para resolver un sistema Ax D b con Matlab slo hay que hacer


x D Anb

Con el ejemplo que estamos manejando:


>> A=[2 1 0 4;-4 -2 3 -7;4 1 -2 8;0 -3 -12 -1];
>> b=[2;-9;2;2];
>> A\b
ans =
3.0000
4.0000
-1.0000
-2.0000

83/140

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

84/140

ndice


El problema; consideraciones tericas

Eliminacin de Gauss

Condicionamiento de sistemas de ecuaciones lineales

Errores en la eliminacin de Gauss

Matlab y los sistemas de ecuaciones lineales

Factorizacin LU

Solucin de sistemas modificados

Refinamiento iterativo

Sistemas con matrices especiales


85/140

Factorizacin LU


El clculo de A D LU se conoce como factorizacin o descomposicin LU .




Si se tiene esta factorizacin, resolver Ax D b se convierte en dar solucin


a LU x D b a travs de dos sistemas de ecuaciones triangulares:
Ux D y

y Ly D 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.

86/140

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 definidas por


matrices elementales triangulares inferiores el mtodo consegua:
Ln 1 P n

1    L1 P 1 A

D U:

De este proceso, haciendo


P D Pn 1    P1
y
L D P.Ln 1P n 1    L2P 2L1P 1/ 1;
se puede comprobar que se obtiene la factorizacin
PA D LU :

87/140

Existencia y unicidad de la factorizacin LU


Teorema Sea A una matriz cuadrada regular de orden n. Existe una matriz
de permutacin P y dos matrices, una triangular inferior y otra triangular
superior, L y U , respectivamente, tales que
PA D LU :
La matriz L tiene todos los coeficientes de la diagonal principal igual a 1.

Lema La matriz A admite una factorizacin LU si y slo si se cumple que


det.A k / 0; k D 1; : : : ; n:
Teorema Si una matriz regular A de orden n admite una factorizacin
A D LU , donde L es una matriz triangular inferior de coeficientes diagonales
1 y U una triangular superior, esa factorizacin es nica.
88/140

Mtodos numricos directos para la obtencin de


factorizaciones LU
Mtodo de Crout. Versin LU 1


Se debe al matemtico Prescott Durand Crout, EE.UU., 1907-1984.

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 coeficientes de la
diagonal principal son 1.

89/140

Si la matriz A es de orden 3 y se quiere factorizarla de la forma


# "
#"
#
"
a11 a12 a13
a21 a22 a23
a31 a32 a33

l11 0 0
l21 l22 0
l31 l32 l33

1 u12 u13
0 1 u23 ;
0 0
1

usando las reglas de multiplicacin de matrices se obtendr:


1a col. de L:

l11 D a11
l21 D a21
l31 D a31 I

2a fila de U :

l11 u12 D a12


l11 u13 D a13

2a col. de L:

l21 u12 C l22 D a22


l31 u12 C l32 D a32

2a fila de U :

l21 u13 C l22 u23 D a23

3a col. de L:

! u1j D a1j = l11 ; j D 2; 3I




! li 2 D a i 2

li1 u12 ; i D 2; 3I

! u2j D .a2j

l31 u13 C l32 u23 C l33 D a33

l21 u1j /= l22 ; j D 3I

! li 3 D a i 3

i 1
X

j D1

lij uj i ; i D 3:

90/140

En general, las frmulas de recurrencia que se pueden deducir de este proceso,


denominado factorizacin LU de Crout, son:
li1 D ai1;
u1j D a1j = l11;
k 1
X
li k D aik
lip upk ;
0

ukj D @akj

pD1

k 1
X

pD1

i D 1; 2; : : : ; n;
j > 1;

lkp upj A

i  k;


lkk ;

j > k:

91/140

Plasmadas en el algoritmo de Crout para factorizar una matriz regular A nn en


la forma LU 1 resulta el de la tabla.

 Factorizacin A D LU por algoritmo de Crout


for k D 1 to n
for i D k to n
l.i; k/

a.i; k/

k
X1

l.i; p/u.p; k/

pD1

end
for i D k C 1 0
to n
u.k; i /

end
end

@a.k; i /

k
X1

pD1

l.k; p/u.p; i /A

l.k; k/

92/140

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
end

93/140

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);
end

94/140

Factorizar

da como resultado

3
2
10 10 20
420 25 405
30 50 61

2
32
3
10
1 1 2
LU D 420 5 5 4 1 05 :
30 20 1
1

As:
>> 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
>>
95/140

Ejemplo Se desea factorizar la matriz


2
3
0,001 2,000 3,000
A D 4-1,000 3,712 4,6235
-2,000 1,072 5,643

en una mquina u ordenador con cuatro dgitos significativos.

96/140

Las operaciones que se realizan en la mquina son:


l11 D 0,001I
l21 D -1,000I
l31 D -2,000I


2,000
D 2000I
u12 D f l
0,001


3,000
D 3000I
u13 D f l
0,001

l22 D f l 3,712 C .1,000/.2000/ D 2004I


l32 D f l 1,072 C .2,000/.2000/ D 4001I


4,623 C .1,000/.3000/
u23 D f l
D 1,500 y
2004
l33 D f l5,643 C (2,000)(3,000) (4,001)(1,500) D 5,642:

Obsrvese que el clculo de l33 conlleva la prdida de tres dgitos por redondeo:
el valor que debera obtenerse es 5,922.
97/140

Pivotacin


El ejemplo pone de manifiesto 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 final de un proceso con pivotacin se


obtendra
PA D LU
es decir, no la factorizacin LU de la matriz original sino de PA.

98/140

 Factorizacin A D LU por Crout con pivotacin parcial


for k D 1 to n
for i D k to n
l.i; k/

a.i; k/

k
X1

l.i; p/u.p; k/

pD1

end
Determinar ndice p 2 fk; k C 1; : : : ; ng tal que ja.p; i /j D mKaxi j n ja.j; i /j.
Intercambiar filas p y k.
for i D k C 1 0
to n
1

k
X1
@a.k; i /
u.k; i /
l.k; p/u.p; i /A l.k; k/
pD1

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);
end
99/140

Si se factoriza la matriz

2
3
10 10 20
420 25 405 ;
30 50 61

al final de este proceso, el vector IPVT./, que indica las pivotaciones realizadas,
es 3, 2, 1T .
>> 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

100/140

La matriz PA realmente factorizada es


2
3 2
32
3
30 50 61
30
1 1;6667 2;0333
420 25 405 D 420 8;3333
54
1 0;08005 :
10 10 20
10 6;6667 0; 2
1

El algoritmo de Crout requiere O.n3=3/ multiplicaciones/divisiones y


sumas/restas para la factorizacin de la matriz.

101/140

Mtodo de Crout. Versin L1U




Si se quiere conseguir la factorizacin L1U de una matriz 3  3,


"
# "
#"
#
a11 a12 a13
a21 a22 a23
a31 a32 a33

1 0 0
l21 1 0
l31 l32 1

u11 u12 u13


0 u22 u23 ;
0
0 u33

operando:
1a fila de U :

u11 D a11
u12 D a12
u13 D a13 I

1a col. de L:

l21 u11 D a21


l31 u11 D a31

2a fila de U :

l21 u12 C u22 D a22


l21 u13 C u32 D a23

2a col. de L:

l31 u12 C l32 u22 D a32

3a fila de U :

! li1 D ai1 =u11 ; i D 2; 3I




! u2j D a2j
! li 2 D .ai 2

l31 u13 C l32 u23 C u33 D a33

l21 u1j ; j D 2; 3I
li1 u12 /=u22 ; i D 3I

! u3j D a3j

j 1
X
i D1

l3i uij ; j D 3:
102/140

Las frmulas de recurrencia que se pueden deducir de este proceso son:


u1j D a1j ;
li1 D ai1=u11;
k 1
X
ukj D akj
lkp upj ;
0

li k D @aik

pD1

k 1
X

pD1

j D 1; 2; : : : ; n;
j > 1;
1

lip upk A

j  k;


ukk ;

i > k:

103/140

El algoritmo de Crout para factorizar una matriz regular A nn en la forma L1U
es el que sigue.

 Factorizacin A D L1 U por Crout sin pivotacin


for k D 1 to n
for j D k to n

u.k; j /

a.k; j /

k 1
X

l.k; p/u.p; j /

pD1

end
for i D k C 10to n

l.i; k/

end
end

@a.i; k/

k 1
X

pD1

l.i; p/u.p; k/A

u.k; k/

104/140

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);

Su implementacin en Matlab:

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
105/140

La versin del algoritmo con pivotacin en Matlab es esta.

function [L U p]=CroutP1(a)
% Factorizacin L1U por Crout con pivotacin; muy compacto
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);
end

106/140

El resultado con este script para el ltimo ejemplo:


>> [L U p]=CroutP1(A)
L =
1.0000
0
0.6667
1.0000
0.3333
0.8000
U =
30.0000
50.0000
0
-8.3333
0
0
p =
3
2
1
>> L(p,:)*U
ans =
10
10
20
20
25
40
30
50
61

0
0
1.0000
61.0000
-0.6667
0.2000

107/140

Con los recursos de Matlab:


>> [L U P]=lu(A)
L =
1.0000
0
0.6667
1.0000
0.3333
0.8000
U =
30.0000
50.0000
0
-8.3333
0
0
P =
0
0
1
0
1
0
1
0
0
>> P*L*U
ans =
10
10
20
20
25
40
30
50
61

0
0
1.0000
61.0000
-0.6667
0.2000

108/140

Obtencin de la matriz inversa a partir de la


factorizacin LU


Si se designa por X la matriz inversa de A 2 Rnn, los n vectores columna de


X son los vectores solucin de los sistemas Ax i D e i , i D 1; : : : ; n.

Si suponemos que tenemos la factorizacin PA D LU , donde P es una matriz


de permutacin, para obtener la inversa de A hay que resolver los 2n sistemas
siguientes:
Ly i D Pe i ; U x i D y i ; i D 1; : : : ; n:
Es decir 2n sistemas de ecuaciones lineales con matrices triangulares en los que
slo cambian los trminos independientes.

109/140

Matlab y la factorizacin LU


Para resolver Ax D 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))

110/140

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

111/140

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
Elapsed time is 0.828548 seconds
tic
[L U P] = lu(A);
for i=1:1000
b=rand(200,1);
x=U\(L\(P*b));
end
toc
Elapsed time is 0.089372 seconds

Copiar y pegar en el escritorio de Matlab. Por qu ocurre lo que sale?


112/140

ndice


El problema; consideraciones tericas

Eliminacin de Gauss

Condicionamiento de sistemas de ecuaciones lineales

Errores en la eliminacin de Gauss

Matlab y los sistemas de ecuaciones lineales

Factorizacin LU

Solucin de sistemas modificados

Refinamiento iterativo

Sistemas con matrices especiales


113/140

Solucin de sistemas modificados




Si en Ax D b se modifica el vector b pero no A, no es necesario rehacer la


factorizacin LU para resolver el nuevo sistema.

Si se modifica ligeramente la matriz A, por ejemplo el coeficiente (j; k), con lo


que A D A ej e Tk , 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 modificacin a la misma de rango
uno del tipo uvT :
 1
A uvT
D
 1 T
1
1
1
T
A C A u 1 v A u v A 1:

114/140

Para resolver el nuevo sistema .A uvT /x D b, usando la frmula, se


obtendra
 1
T
b
x D A uv
 1
D A 1b C A 1u 1 vT A 1u vT A 1b;
operacin que podra hacerse por partes:
1. Resolviendo Az D u, obteniendo z.

2. Resolviendo Ay D b, obteniendo y.
3. Calculando x D y C ..vT y/=.1

vT z//z.

Como A ya est factorizada, este procedimiento requiere solo sustituciones


inversas y productos interiores; es decir O.n2/ operaciones frente a las O.n3=3/
de la factorizacin.

115/140

Ejemplo Consideremos la matriz


2
3
2
3 2
2 4 2
1 0 0
2 4
A D 4 4 9 35 D 4 2 1 05 40 1
2 3 7
1 1 1
0 0

3
2
15
4

a la que se le efecta una modificacin consistente en cambiar el coeficiente


(3,2) de -3 a -1.


En este caso

3
0
u D 4 05
2

con lo que la matriz resultante es A

2 3
0
y v D 415 ;
0

uvT .

116/140

Con la factorizacin LU de A, se resuelve Az D u y Ay D b, dando


2
3
2 3
3=2
1
z D 4 1=25 y y D 4 25 :
1=2
2

Por ltimo,

3
2
3 2 3
1
3=2
7
vT y
2
4 1=25 D 4 45 :
z D 4 25 C
xDyC
T
1 v z
1 1=2
2
1=2
0

117/140

ndice


El problema; consideraciones tericas

Eliminacin de Gauss

Condicionamiento de sistemas de ecuaciones lineales

Errores en la eliminacin de Gauss

Matlab y los sistemas de ecuaciones lineales

Factorizacin LU

Solucin de sistemas modificados

Refinamiento iterativo

Sistemas con matrices especiales


118/140

Refinamiento iterativo


Formulado en la dcada de 1960 por James Hardy Wilkinson, del National


Physical Laboratory, Reino Unido, 1919-1986.

Supongamos que se tiene una solucin aproximada, x 0, del sistema de


ecuaciones lineales Ax D b, y sea y una correccin o mejora de la misma tal
que la solucin exacta, x, cumple que
x D x 0 C y:
Sustituyendo esta expresin en Ax D b se tiene que
Ay D b

Ax 0 D r 0;

donde r 0 es el vector de residuos.


119/140

Si este vector no cumple satisfactoriamente unos requisitos de precisin, se


puede resolver el sistema Ay D r 0 y hacer
x 1 D x 0 C y;
lo que har que la solucin se aproxime un poco ms a x que x 0.

Si es necesario, se calcula un nuevo vector de residuos, r 1 D 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.

120/140

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);
b=A*ones(n,1);
pause
x=A\b

% Matriz de Hilbert (muy mal condicionada)


% Elegimos trmino independiente para sol. x=1.
% 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);
norm(xex-x1,2)
norm(xex-x,2)
pause

% Calculemos cunto
% Como magnitud calculemos la norma 2 de la desviaci.

res=b-A*x1;
x1=x1+B\res
norm(xex-x1,2)
pause

% Hagamos una iteracin del Refinamiento iterativo

res=b-A*x1;
format long
x1=x1+B\res
norm(xex-x1,2)
pause

% Hagamos otra iteracin del Refinamiento iterativo

res=b-A*x1;
x1=x1+B\res
norm(xex-x1,2)

% Hagamos otra iteracin del Refinamiento iterativo

121/140

ndice


El problema; consideraciones tericas

Eliminacin de Gauss

Condicionamiento de sistemas de ecuaciones lineales

Errores en la eliminacin de Gauss

Matlab y los sistemas de ecuaciones lineales

Factorizacin LU

Solucin de sistemas modificados

Refinamiento iterativo

Sistemas con matrices especiales


122/140

Sistemas con matrices especiales


Matrices simtricas
Factorizacin LDLT
Lema Si todas las submatrices principales de una matriz A 2 Rnn son
regulares, existen dos matrices triangulares inferiores unitarias nicas, L y
M , y otra diagonal tambin nica, D D diag.d1; : : : ; dn/, tales que A D
LDM T .

Teorema Si A admite una factorizacin LDM T y es simtrica, L D M .

123/140

Para derivar unas frmulas de recurrencia, a partir de un ejemplo simblico de


orden 3,
2
3 2
32
32
3
a11 a12 a13
1 0 0
d11
1 l21 l31
4a21 a22 a235 D 4l21 1 05 4
5 40 1 l325 ;
d22
a31 a32 a33
l31 l32 1
d33
0 0 1
operando de acuerdo con las reglas de multiplicacin matricial se obtiene que
a11
a21
a31
a22
a32
a33

D
D
D
D
D
D

d11
l21d11
l31d11
2
l21
d11 C d22
l31l21d11 C l32d22
2
2
l31
d11 C l32
d22 C d33:
124/140

Generalizando se obtiene el algoritmo de la tabla.


 Factorizacin A D LDLT sin pivotacin
for k D 1 to n
k 1
X
d.k/
a.k; k/
a2 .k; p/d.p/
pD1

if d.k/ D 0 then stop


for i D k C 1 0
to n

a.i; k/

end
end

@a.i; k/

k 1
X

pD1

a.i; p/a.k; p/d.p/A

d.k/

Requiere O.n3=6/ multiplicaciones y divisiones y sumas y restas.

Si no se efectan pivotaciones, el procedimiento numrico puede fallar por la


posible presencia de coeficientes pivote muy pequeos, o por la acumulacin de
errores de redondeo o de cancelacin importantes.
125/140

Factorizacin de Cholesky


Esta descomposicin fue formulada por Andr Louis Cholesky, Francia,


1875-1918, comandante del ejrcito en la poca, durante la ocupacin
internacional de Creta en 1906-09.

Una matriz es definida positiva si para todo x 0 se cumple que


x T Ax > 0:


Todos sus valores propios son positivos.

Las matrices simtricas definidas positivas admiten una descomposicin de


Cholesky, de la forma
A D GT G;
donde G es una matriz triangular superior.
126/140

Las matrices simtricas definidas 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.

127/140

Lema Las submatrices principales de una matriz definida positiva son definidas positivas.

Teorema Si A es una matriz definida positiva de orden n, tiene una descomposicin de la forma LDM T , siendo todos los coeficientes de la matriz
diagonal D positivos.

Teorema Si A es una matriz simtrica definida positiva de orden n, existe


una nica matriz triangular superior, G , con todos sus coeficientes diagonales
positivos, tal que A D G T G .

128/140

Procedamos a simular el algoritmo con la descomposicin simblica de una


matriz 3  3.

Si se desea obtener la factorizacin


2
3 2
32
3
a11 a12 a13
g11 0 0
g11 g12 g13
4a12 a22 a235 D 4g12 g22 0 5 4 0 g22 g235 ;
a13 a23 a33
g13 g23 g33
0 0 g33

operando de acuerdo con las reglas de multiplicacin matricial se obtiene que:


a11
a12
a13
a22
a23
a33

D
D
D
D
D
D

2
g11
g11g12
g11g13
2
2
g12
C g22
g12g13 C g22g23
2
2
2
g13
C g23
C g33
:
129/140

Generalizando este proceso se obtiene el algoritmo que describe la tabla.


 Factorizacin de Cholesky A D G T G
for i D 1 to ns
g.i; i/

a.i; i/

i 1
X

g 2 .k; i/

kD1

for j D i C 1 to n
g.i; j /

a.i; j /

i 1
X

kD1

end
end

g.k; i/g.k; j /

!

g.i; i/

El algoritmo requiere O.n3=6/ operaciones de multiplicacin+divisin y de


suma+resta.

130/140

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);

La factorizacin de
2

5 1
6
6 1 2
6
4 2 0
0 0

2
0
4
1

3
0
7
07
7!
15
3

>> A=[5 1 -2 0;1 2 0 0;-2 0 4 1;0


>> G=Chols_1(A)
G =
2.2361
0.4472
-0.8944
0
1.3416
0.2981
0
0
1.7638
0
0
0
>> G=chol(A)
G =
2.2361
0.4472
-0.8944
0
1.3416
0.2981
0
0
1.7638
0
0
0

0 1 3];

0
0
0.5669
1.6366

0
0
0.5669
1.6366
131/140

Matlab y la factorizacin de Cholesky




Para resolver un sistema lineal de ecuaciones Ax D 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 D G T G , haciendo
x=G\(G\b)

132/140

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

133/140

Matrices simtricas semidefinidas positivas




Una matriz A se dice semidefinida positiva, si para todo x 0, x T Ax  0.


Teorema Si A 2 Rnn es simtrica semidefinida positiva:
jaij j  .ai i C ajj /=2
p
ai i ajj .i j /
jaij j 
mKax jaij j D mKax ai i
i;j

ai i D 0 ) aij D aj i D 0; j D 1; : : : ; n:

Si el algoritmo de Cholesky se aplica a una matriz semidefinida positiva, y en un


paso akk es cero, entonces aj k D 0; j D 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.
134/140

Pivotacin


Para mantener la simetra, las pivotaciones han de ser simtricas: si se


intercambian dos filas, 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 coeficiente de mayor valor de
la diagonal principal, mKaxkj n ajj :


Si no es cero, se intercambian las filas/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.

135/140

Este es el algoritmo de Cholesky con pivotacin para matrices semidefinidas


positivas.
 Factorizacin de Cholesky A D G T G con pivotacin
for i D 1 to n
Determinar ndice p 2 fi; i C 1; ng tal que ja.p; p/j D mKaxi j n fja.j; j /jg
if a.p; p/ > 0
Intercambiar
sfilas/columnas p y i .
g.i; i/

a.i; i/

i 1
X

g 2 .k; i/

kD1

for j D i C 1 to n
g.i; j /

a.i; j /

i 1
X

kD1

end
end
end

g.k; i/g.k; j /

!

g.i; i/

136/140

Matrices simtricas indefinidas




Una matriz A se dice indefinida 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 D LBLT
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 ).
137/140

Los mtodos ms conocidos se citan a continuacin.


Mtodo
Parlett y Reid
Aasen
Bunch y Parlett

Estrategia

Operaciones

PAP T D LT LT

O.n3=3/

PAP T D LT LT

O.n3=6/

PAP T D LBLT O.n3 =6/ C O .n3 =6/ compara.

Bunch y Kaufman PAP T D LBLT O.n3=6/ C .n2

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.

138/140

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;

139/140

Con una matriz de Hankel Hermann Hankel, Alemania, 1839-1873 el


programa funciona as:
>> A = gallery(ris,6)
A =
0.0909
0.1111
0.1429
0.1111
0.1429
0.2000
0.1429
0.2000
0.3333
0.2000
0.3333
1.0000
0.3333
1.0000
-1.0000
1.0000
-1.0000
-0.3333
>> cond(A)
ans =
2.2185
>> [L D P rho]=diagpiv(A)
L =
1.0000
0
0
0
1.0000
0
-0.1760
0.2160
1.0000
-0.3143
0.1714
-1.1905
-0.1048
0.3429
0.2646
-0.9778
0.2000
-0.6173
D =
0.0909
1.0000
0
1.0000
-0.1111
0
0
0
-0.9216
0
0
0
0
0
0
0
0
0
P =
1
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
0
0
0
1
0
1
0
0
0
rho =
1.9264

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

0
0
0
1.0000
-0.6667
0.6222

0
0
0
0
1.0000
0

0
0
0
0
0
1.0000

0
0
0
1.7415
0
0

0
0
0
0
-0.8256
1.9264

0
0
0
0
1.9264
0.1284

>> eig(A)
ans =
-1.5708
-1.5705
-1.4438
0.7080
1.5622
1.5708

0
1
0
0
0
0

140/140

Vous aimerez peut-être aussi