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 EspecialidadIngeniera Elctrica
Sistemas de ecuacioneslineales
Mtodos directos de solucin
Jos Luis de la Fuente [email protected]
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
Pivotacin AlgoritmoNmero de operacionesMtodo de Gauss-JordanMatlab y los sistemas de ecuaciones lineales
Factorizacin LU
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
Matlab y la factorizacin LUSolucin de sistemas modificados
Refinamiento iterativo
Sistemas con matrices especiales
Matrices simtricas Factorizacin LDLT Factorizacin de Cholesky: matrices simtricas definidas positivas Matlab y la factorizacin de Cholesky Matrices simtricas semidefinidas positivas Matrices simtricas indefinidas
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; consideracionestericas
Se trata de dar solucin a sistemas de ecuaciones del tipo
a11x1 C a12x2 C C a1nxn D b1a21x1 C a22x2 C C a2nxn D b2::: ::: ::: :::
am1x1 C am2x2 C C amnxn D bm;lo que significa determinar los valores de las variables x1; : : : ; xnque hacen que se cumplan todas las igualdades.
A los nmeros aij se les denomina coeficientes del sistema y a losbi 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 D
2664a11 a12 a1na21 a22 a2n::: ::: :::
am1 am2 amn
3775 ; x D2664x1x2:::
xn
3775 y b D2664b1b2:::
xm
3775 ;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,x 2 Rn y b 2 Rm.
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 D b admite solucin si y slo si
rango.Ajb/ D rango.A/:
Corolario Si Amn tiene rango m, Ax D b siempre tiene solucin.
Teorema Si x0 es una solucin de Ax D b, el conjunto de solu-ciones de la ecuacin est dado por x0 C ker.A/.
Corolario Una solucin de Ax D b es nica si y slo si ker.A/ D ;.
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 D 0, Amn, n > m, siempre tiene unasolucin no trivial.
Teorema Si A es una matriz cuadrada de orden n, las siguientescondiciones 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, A1, tal que
A1A D AA1 D 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 tarjetaelectrnica para poder usar un reloj con la mayor frecuencia deoscilacin posible.
Simplificadamente, adoptamos el modelo fsico y matemtico de lafigura en el que se esquematiza un tiristor o un transistor montadoen 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:
Tp Tw
aire
temperatura Ta
cQc
a
Q3 R3
p
a
w
a
Q4 R4 Q5 R5
Q1 Q2
R2
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 Qc watios de potencia, suponiendo unmodelo resistivo del flujo de aire entre los nudos del sistema,aplicando los principios de conservacin de la energa, se obtienenlas ecuaciones que siguen.
Q1 D 1R1.Tc Tp/ Q4 D 1
R4.Tp Ta/ Qc D Q1CQ3
Q2 D 1R2.Tp Tw/ Q2 D 1
R5.Tw Ta/ Q1 D Q2CQ4
Q3 D 1R3.Tc Ta/
Se conoce Qc, al igual que Ta. Las resistencias se pueden conocersabiendo el material de las placas y sus propiedades.
Las incgnitas son entonces Q1, Q2, Q3, Q4, Tc, Tp y Tw.
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 aislarlas incgnitas se llega al siguiente sistema:
R1Q1 Tc C T9 D 0R2Q2 Tp C Tw D 0
R3Q3 Tc D TaR4Q4 Tp D TaR5Q2 Tw D TaQ1 CQ3 D Qc
Q1 Q2 Q4 D 0: En forma matricial, el sistema tiene la siguiente expresin:2666664
R1 0 0 0 1 1 00 R2 0 0 0 1 10 0 R3 0 1 0 00 0 0 R4 0 1 00 R5 0 0 0 0 11 0 1 0 0 0 0
1 1 0 1 0 0 0
37777752666664Q1Q2Q3Q4TcTpTw
3777775 D2666664
0
0
TaTaTaQc0
3777775 Los flujos 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 R1 D 100, R2 D 200, R3 D 50, R4 D 100 yR5 D 300; Ta D 50 y Qc D 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 00 200 0 0 0 -1 10 0 50 0 -1 0 00 0 0 100 0 -1 00 300 0 0 0 0 -11 0 1 0 0 0 01 -1 0 -1 0 0 0
b=[0;0;-50;-50;-50;25;0]b =
00
-50-50-50250
>> x=A\bx =
1.0e+003 *0.005357142857140.000892857142860.019642857142860.004464285714291.032142857142860.496428571428570.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 dosdimensiones un sistema de ecuaciones lineales cualquiera
a11x1 C a12x2 D b1a21x1 C a22x2 D b2:
Cada una de las ecuaciones que componen el sistema representauna recta en el espacio eucldeo de dimensin dos, segn sedescribe en la figura.
x1
x2
a21x1 + a22x2 = b2
a11x1 + a12x2 = b1
La resolucin del sistema tiene como objetivo la bsqueda de lascoordenadas 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 figura se pueden ver sistemas donde existendificultades para encontrar ese punto de interseccin, al menosvisualmente.
Copyright The McGraw-Hill Companies, Inc. Permission required for reproduction or display.Fig 9.2
Generalizando a Rn, la resolucin de un sistema de ecuacioneslineales se puede interpretar como la bsqueda de las coordenadasdel(os) punto(s) de interseccin de los hiperplanos asociados a cadauna 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 subespacioIm.A/.
Si se escribe el sistema de dos ecuaciones con dos incgnitas dela forma
a11a21
x1C
a12a22
x2 D
b1b2
;
el problema es el de descomponer linealmente el vector b en losvectores columna que definen las dos columnas de la matriz decoeficientes.
[b1b2
]
[a12a22
][
a11a21
]
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
16/120
En Rn, el problema se refiere a la bsqueda de la descomposicinlineal de un vector de n componentes segn n vectores dados: losque forman la base de Im.A/ que definen los vectores columna deA.
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 modificados
Refinamiento 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 deGauss
Los mtodos directos resuelven el problema en un nmero deetapas fijo.
De ellos, el mtodo clsico del lgebra lineal numrica para resolverAx D b, A 2 Rnn, x 2 Rn y b 2 Rn, es el debido a CarlFriedrich Gauss (1777-1855), quien lo aplic por primera vez en1809 con motivo de unos estudios sobre rbitas de ciertos cuerposcelestes.
Supondremos que la matriz A es de rango completo, por lo tantoinvertible, y que si eventualmente no lo es el procedimiento deberdetectarlo.
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 sistemaa11x1 C a12x2 C C a1nxn D b1a21x1 C a22x2 C C a2nxn D b2::: ::: ::: :::
an1x1 C an2x2 C C annxn D bnn transformaciones lineales que lo conviertan en otro ms fcil deresolver.
Concretamente, transformarlo en un sistema triangular superiorde la forma
u11x1 C u12x2 C C u1nxn D b01u22x2 C C u2nxn D b02
::: :::
unnxn D b0n;o, escrito en forma matricial,
Ux D b0:
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
ui i 0; i D 1; : : : ; n;es fcilmente resoluble de manera recurrente mediante las frmulas
xk D 1ukk
0@b0k nXiDkC1
ukixi
1A ; k D 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 queresulta de sumarle otra cualquiera.
c) Permutacin del orden en que aparecen en el sistema dosecuaciones 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
2x1 C x2 C 4x4 D 24x1 2x2 C 3x3 7x4 D 94x1 C x2 2x3 C 8x4 D 2 3x2 12x3 x4 D 2:
Escrito en forma matricial, Ax D b, los distintos componentes son
A D
26642 1 0 4
4 2 3 74 1 2 80 3 12 1
3775 ; b D2664
2
92
2
3775 y x D2664x1x2x3x4
3775 :
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
22/120
Reconfiguremos inicialmente la matriz A aumentndola unacolumna ms: la que define el trmino independiente b, y llamemosa la nueva matriz resultante cA; es decir,
cA D Ajb D2664
2 1 0 4 2
4 2 3 7 94 1 2 8 20 3 12 1 2
3775 :Apliquemos ahora la mecnica del mtodo en n D 3 etapas.
Etapa 1
Comprobemos que el elemento Oa11 denominado elementopivote no es cero.Si es distinto de cero, eliminemos los coeficientes de la primeracolumna por debajo de ese Oa11.
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 fila 2; : : : ; n los factores omultiplicadores
ri D Oai1Oa11; i D 2; : : : ; n:
A continuacin, restamos de las filas i D 2; : : : ; n, la primeramultiplicada por ri . El resultado es que todos los coeficientesdebajo de la diagonal principal de la columna 1 se anularn.
Los dems coeficientes de cA debajo de la primera fila se vernafectados como indica esta expresin:
Oaij Oaij ri Oa1j ; i D 2; : : : ; nI j D 2; : : : ; nC 1: En el ejemplo que venimos manejando, los multiplicadores son
r2 D Oa21= Oa11 D 4=2 D 2r3 D Oa31= Oa11 D 4=2 D 2r4 D Oa41= Oa11 D 0=2 D 0:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
24/120
Los coeficientes de la matriz cA que cambian de valor son:en la 2a fila: Oa21 0
Oa22 Oa22 r2 Oa12 D 2 C 2 1 D 0Oa23 Oa23 r2 Oa13 D 3 C 2 0 D 3Oa24 Oa24 r2 Oa14 D 7 C 2 4 D 1Oa25 Oa25 r2 Oa15 D 9 C 2 2 D 5I
en la 3a fila: Oa31 0Oa32 Oa32 r3 Oa12 D 1 2 1 D 1Oa33 Oa33 r3 Oa13 D 2 2 0 D 2Oa34 Oa34 r3 Oa14 D 8 2 4 D 0Oa35 Oa35 r3 Oa15 D 2 2 2 D 2I
en la 4a fila: Oa41 0Oa42 Oa42 r3 Oa12 D 3 0 1 D 3Oa43 Oa43 r4 Oa13 D 12 0 0 D 12Oa44 Oa44 r4 Oa14 D 1 0 4 D 1Oa45 Oa45 r4 Oa15 D 2 0 2 D 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 cA1, resultado de transformar cA, es:cA1 D
26642 1 0 4 2
0 0 3 1 50 1 2 0 20 3 12 1 2
3775 : Obsrvese que se hubiese obtenido exactamente el mismo resultadode haber premultiplicado cA por la denominada transformacin deGauss que define la matriz
L1 D
26641 0 0 0
2 1 0 0
2 0 1 00 0 0 1
3775 :Matriz triangular inferior unitaria, denominada matriz detransformacin 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 L1 tambin se puede escribir de la formaL1 D I eT1 , donde
D
26640
22
0
3775 y e1 D26641
0
0
0
3775 : En efecto,
L1bA D 264 1 0 0 02 1 0 02 0 1 00 0 0 1
375264 2 1 0 4 24 2 3 7 94 1 2 8 2
0 3 12 1 2
375 D2642 1 0 4 20 0 3 1 50 1 2 0 20 3 12 1 2
375 :
En resumen, cA1 D L1cA.
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 L1, por otro lado, como se puedecomprobar fcilmente, es
L11 D
26641 0 0 0
2 1 0 02 0 1 0
0 0 0 1
3775 :Idntica a L1 salvo por lo que respecta al signo de los coeficientesde la primera columna debajo de la diagonal principal.
Etapa 2
Hagamos cero los coeficientes debajo de la diagonal principal de la2a columna de cA1.
Al hacerlo vemos que Oa122 es cero, lo que nos impide proceder comoen 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 coeficiente de la columna 2 pordebajo de Oa122 es distinto de cero:
Si no hay ninguno, esta columna es combinacin lineal de laprimera y por tanto la matriz es singular.
Si hay varios, escojamos el de mayor valor absoluto eintercambiemos la fila de ese elemento con la segunda.
En el ejemplo, el elemento de mayor valor absoluto debajo de ladiagonal principal en la segunda columna, 3, se encuentra en lafila 4. Intercambiamos esa fila 4 con la 2. Se obtendr
cA01 D26642 1 0 4 2
0 3 12 1 20 1 2 0 20 0 3 1 5
3775 :
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 cA1 por la permutacinP1 D
26641 0 0 0
0 0 0 1
0 0 1 0
0 1 0 0
3775 :
Recapitulemos: la matriz con la que vamos a operar a continuacin,cA01, es: bA01 D P1L1cA: Apliquemos a continuacin a la columna 2 la misma idea que a lacolumna 1 y hagamos cero sus coeficientes 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
ri D Oa10i2
Oa1022; i D 3; 4:
Los nuevos valores de los coeficientes de la matriz cA01 por debajode la segunda fila se obtendrn aplicando la expresin
Oa10ij Oa10ij ri Oa1
02j ; i D 3; 4I j D 3; : : : ; 5:
Los valores de los multiplicadores para el ejemplo son
r3 D Oa1032= Oa1022 D 1=3 yr4 D Oa1042= Oa1022 D 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 coeficientes de la matriz cA01 resultante:en la 3a fila: Oa1032 0
Oa1033 Oa1033 r3 Oa1023 D 2 C 13 12 D 2Oa1034 Oa1034 r3 Oa1024 D 0 C 13 1 D 1=3Oa1035 Oa1035 r3 Oa1025 D 2 13 2 D 8=3I
en la 4a fila: Oa1042 0Oa1043 Oa1043 r4 Oa1023 D 3 0 12 D 3Oa1044 Oa1044 r4 Oa1024 D 1 0 1 D 1Oa1045 Oa1045 r4 Oa1025 D 5 0 2 D 5:
Obsrvese que, al ser r4 D 0, los clculos para adaptar la cuarta filapodran 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
cA2 D26642 1 0 4 2
0 3 12 1 20 0 2 1=3 8=30 0 3 1 5
3775 ;matriz que se expresa a partir de la inicial comocA2 D L2P1L1cA;donde L2 D
26641 0 0 0
0 1 0 0
0 1=3 1 00 0 0 1
3775 :
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 triangularsuperior slo resta anular el elemento Oa243.
El elemento de la diagonal principal Oa233 es distinto de cero, luegoprocedemos a calcular el multiplicador r4:
r4 D Oa243= Oa233 D 3=2:
Los nuevos valores de los coeficientes de la matriz cA2 por debajode la tercera fila se obtendrn aplicando la expresin
Oa2ij Oa2ij ri Oa23j ; i D 4I j D 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 fila:
Oa243 0Oa244 Oa244 r4 Oa234 D 1 32 13 D 1=2Oa245 Oa245 r4 Oa235 D 5 C 32 83 D 1:
La nueva matriz resultado de estas transformaciones es
cA3 D26642 1 0 4 2
0 3 12 1 20 0 2 1=3 8=30 0 0 1=2 1
3775 :
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 inicialcA una serie de transformaciones; concretamente:cA3 D L3L2P1L1cA;donde
L3 D
26641 0 0 0
0 1 0 0
0 0 1 0
0 0 3=2 1
3775 : En conclusin, la matriz original que defina el sistema, A, se puedetransformar en la triangular superior U aplicndole las mismastransformaciones que a cA. Es decir,
U D L3L2P1L1A:
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 transformacionesllegndose a b0, resolver el sistema de ecuaciones original esequivalente a resolver
Ux D b0:
En el ejemplo,26642 1 0 4
0 3 12 10 0 2 1=3
0 0 0 1=2
37752664x1x2x3x4
3775 D2664
2
2
8=31
3775 :
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:
x4 D 2;sustituyendo en la tercera ecuacin,
x3 D 8=3 .2/.1=3/2
D 1;y, a su vez, hacindolo en la segunda,
x2 D 2 .1/.2/ .12/.1/3 D 4:
Por ltimo, sustituyendo los valores de las variables ya calculadosen la primera ecuacin se obtiene
x1 D 2 4.2/ 1.4/2
D 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 pues266664x1x2x3x4
377775 D2666643
4
12
377775 :
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 estudiado104 11 1
A
x1x2
x
D1
2
b
;
en una mquina con tres dgitos significativos que efecteredondeos.
Aplicando la mecnica apuntada, en la primera etapa se obtendrauna nueva matriz A1 y un nuevo vector b1; son:
A1 D104 10 1 104
y b1 D
1
2 104:
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 104 D 9999, la mquina lo redondeara a 104;de la misma forma procedera con 2 104. La solucin del sistemasera
x2 D 104
104 D 1
x1 D 1 x2104
D 0;muy distinta de la real 0;99989999; 1;00010001T .
La eleccin del pivote busca que los multiplicadores no sean enmagnitud mucho mayores que 1 con el fin de tener en cuenta loserrores de redondeo y la estabilidad numrica del procedimiento,
Es por esto por lo que se escoge el de mayor magnitud de entrelos 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 lugarde operar sobre la matriz anterior, como el valor absoluto delelemento a21 es mayor que el del a11, se intercambiara la fila 1 conla 2, obtenindose
A0 D1 1
104 1
y b0 D
2
1
:
Continuando con el procedimiento normal, despus de la primeraetapa, se llegar a
A01 D1 1
0 1 104
y b01 D
2
1 2 104:
Por redondeos internos, la mquina representara
A01 D1 1
0 1
y b01 D
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 serax1x2
D1
1
:
Solucin mucho mejor que la anterior, pues la real es
x2 D 0,99980,9999 D 0,99989999x1 D 1,00010001:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - El proceso descrito se denomina pivotacin parcial.
Su por qu radica en la aritmtica de precisin finita con la quetrabajan todos los ordenadores y en el hecho de que los factores omultiplicadores antes introducidos son inversamente proporcionalesal elemento pivote: si ste es demasiado pequeo puede amplificarlos 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 mayorvalor absoluto en la columna correspondiente, sino en todo lo quequeda por tratar de la matriz: el mKaxikn; ijn jakj j.
Partial Pivoting
To avoid division by zero, swap the row having the zero pivot
with one of the rows below it.
0
*
Rows completed inforward elimination.
Rows to search for amore favorable pivotelement.
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 ip such
that |aip,i| = max(|ak,i|) for k = i, . . . , n
NMM: Solving Systems of Equations page 37
Pivotacin parcial
Full Pivoting
0
*
Rows completed inforward elimination.
Columns to search for a morefavorable pivot element.
Row with zero pivot element
Rows to search for amore favorable pivotelement.
*
NMM: Solving Systems of Equations page 39
Pivotacin total
La pivotacin total proporciona la estrategia ptima para minimizarerrores 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 conpivotacin total es, en general, un algoritmo numricamente estable.
En la prctica, la pivotacin parcial produce buenos resultados yexcelentes 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 Ajbfor i D 1 to n 1
Determinar ndice p 2 fi; i C 1; : : : ; ng tal que ja.p; i/j D mKaxijn 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 nC 1
a.j; k/ a.j; k/ a.i; k/end
endend Sustitucin Inversa.for j D n to 1
x.j / [email protected] / nX
kDjC1a.j; k/ x.k/
1Aa.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 Gaussn=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]);
endj=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);
endfor 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 codificacin conviene destacar dos elementos mejorables.
No es realmente necesario intercambiar las filas una vez elegidoel elemento pivote de cada etapa; basta con tener constancia encada momento dnde estn las filas que se intercambian.
Tal como est estructurado el programa slo se podra resolverun sistema el definido por el b dado y no, como es lo mshabitual, distintos sistemas con la misma matriz A y diversostrminos 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 vectorndice, IPIV, de dimensin el nmero de ecuaciones, inicializado ala posicin inicial en el sistema de cada una de las ecuaciones; esdecir,
IPIV D
266641
2
3:::
n
37775 :
Cuando haya que intercambiar dos filas en un etapa, no se harintercambiando fsicamente los coeficientes de esas dos filas, sinohacindolo 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 unelemento de la cuarta fila, una vez efectuado el cambio, el vectorIPIV quedar:
IPIV D
26666644
2
3
1:::
n
3777775 : Si al final de un proceso de resolucin de un sistema de cincoecuaciones con cinco incgnitas, el vector puntero resultase
IPIV D
2666644
2
5
1
3
377775 ;
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
50/120
la matriz A0 que se obtendra no resultara ser estrictamentetriangular superior.Tendra la forma que sigue.
Para resolver el sistema que define Ax D b habra que aplicar esasmismas manipulaciones de filas 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 guardaradecuadamente la informacin que definen los multiplicadoresasociados a cada fila de cada etapa.
Los i 1 multiplicadores se pueden guardar en los lugares vacoso mejor dicho, que se hacen cero que provocan lastransformaciones que definen: en la etapa i , debajo de ladiagonal principal en la columna i .
En el ejemplo, con esta idea, al final del proceso:
A D
266642 1 0 4
2 3 12 12 1=3 2 1=3
0 0 3=2 1=2
37775 :Los multiplicadores distintos de cero que se han calculado entodo 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 influyen en lasprestaciones de un algoritmo son:
Su estabilidad numrica ante los diversos errores.
La cantidad de tiempo necesaria para completar los clculos queconlleva.
Ambos factores dependen del nmero de operaciones aritmticasnecesarias para la aplicacin del algoritmo.
Los tiempos necesarios para realizar en un ordenador lamultiplicacin y la divisin de dos nmeros son aproximadamenteiguales y considerablemente mayores, en trminos relativos, que losrequeridos para realizar la suma o diferencia, que tambin son muysemejantes 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 ecuacioneslineales, en la primera etapa, realiza las operaciones que serepresentan simblicamente en el esquema que sigue.
::: ::: ::: ::: :::
!
0 2 2 2 2::: ::: ::: ::: :::
0 2 2 2 20 2 2 2 2
El smbolo 2 designa los coeficientes de la matriz que se venafectados 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, lasoperaciones que en ella se realizan son:
n i divisiones para el clculo de los multiplica-dores;
.n i/.n i C 1/ multiplicaciones y restas para modificar loscoeficientes de la matriz por debajo de lafila i que no estn en la propia columna i .
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.
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 harnn1XiD1.n i/.n i C 2/ D .n2 C 2n/
n1XiD1
1 2.nC 1/n1XiD1
i Cn1XiD1
i2
D .n2 C 2n/.n 1/ 2.nC 1/.n 1/n2
C .n 1/n.2n 1/6
D 2n3 C 3n2 5n
6
multiplicaciones y divisiones yn1XiD1.n i/.n i C 1/ D .n2 C n/
n1XiD1
1 .2nC 1/n1XiD1
i Cn1XiD1
i2
D .n2 C n/.n 1/ .2nC 1/.n 1/n2
C .n 1/n.2n 1/6
D n3 n3
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 a1
3n3.
El proceso de sustitucin inversa requiere .n i/ multiplicaciones y.n i 1/ sumas, para cada trmino del sumatorio, y una resta yuna divisin.
El nmero total de operaciones de todo el proceso es
1Cn1XiD1..n i/C 1/ D n
2C n2
multiplicaciones y divisiones yn1XiD1..n i 1/C 1/ D n
2 n2
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 sistemay la sustitucin inversa, la eliminacin de Gauss requiere
2n3C 3n2 5n6
C n2C n2D n
3C 2n2 n3
multiplicaciones y divisiones y
n3 n3C n
2 n2D 2n
3C 3n2 5n6
sumas y restas.
Para valores de n, estas expresiones tienden a
1
3n3 O.n3=3/
lo que refleja 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 n3=3 puede parecer muy grande, recordemoslas frmulas de Cramer para la solucin de sistemas:
xi D det.B i/det.A/
; donde B i D
2664a11 a1i1 b1 a1iC1 a1na21 a2i1 b2 a2iC1 a2n::: ::: ::: ::: :::
an1 ani1 bn aniC1 ann
3775 :Mediante estas frmulas se requieren:8
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 deseaobtener la matriz inversa. Consiste en eliminar de cada columna dela matriz de coeficientes del sistema no slo los coeficientes nonulos que estn debajo de la diagonal sino tambin los de arriba.
Una etapa i de la eliminacin de Gauss estaba caracterizada por lamatriz
Li D I ieTi ;donde
i D
2666640:::
aiiC1 i=aii i
:::
aini=aii i
377775 fila i C 1 y ei D2666640:::
1:::
0
377775 fila 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 deGauss-Jordan es la dada por
T i D I ieTi ;donde
i D
266664ai1i=a
ii i
:::
1=aii i:::
aini=aii i
377775 fila i y ei D2666640:::
1:::
0
377775 fila i : Si se tiene en cuenta que A0 D A y An D I , se tendr que
T n1 T 2T 1A D I ;por lo que el mtodo obtiene directamente la matriz inversa:
A1 D T n1 T 2T 1:
Las multiplicaciones y divisiones, y sumas y restas, son O.n3=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 modificados
Refinamiento 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 ecuacioneslineales
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;0 -3 -12 -1;0 -1 -2 0;0 0 3 1];>> b=[2;2;-2;-5];>> A\bans =
3.00004.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.00004.0000-1.0000-2.0000
Utilizando otra utilidad de Matlab muy interesante:
>> linsolve(A,b)ans =
3.00004.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 modificados
Refinamiento 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 D LU se conoce como factorizacin odescomposicin LU .
Para resolver un sistema de ecuaciones lineales Ax D b, siA D LU , el problema se convierte en el de resolver LUx D ba travs de dos sistemas de ecuaciones triangulares:
Ux D y y Ly D b:Esto es muy til cuando se requiere resolver sistemas deecuaciones en los que la matriz A es siempre la misma y slocambia 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 lapropia eliminacin de Gauss.
En efecto, mediante unas permutaciones y unastransformaciones definidas por matrices elementales triangularesinferiores el mtodo consegua:
Ln1Pn1 L1P1A D U :
De este proceso, haciendoP D Pn1 P1 y
L D P.Ln1Pn1 L2P2L1P1/1;se puede comprobar que se obtiene la factorizacin
PA D 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 triangularinferior y otra triangular superior, L y U , respectivamente, talesque
PA D LU :La matriz L tiene todos los coeficientes de la diagonal principaligual a 1 (triangular inferior unitaria).
Lema La matriz A admite una factorizacin LU si y slo si secumple que det.Ak/ 0; k D 1; : : : ; n:
Teorema Si una matriz regular A de orden n admite unafactorizacin A D LU , donde L es una matriz triangular infe-rior de coeficientes diagonales 1 y U una triangular superior, esafactorizacin 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 laobtencin de factorizaciones LU
Mtodo de Crout. Versin LU 1
Supongamos que se desea obtener la factorizacin en la formaLU 1, donde U 1 designa una matriz triangular superior en la quetodos los coeficientes 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 forma24a11 a12 a13a21 a22 a23a31 a32 a33
35 D 24l11 0 0l21 l22 0l31 l32 l33
35241 u12 u130 1 u230 0 1
35 ;usando las reglas de multiplicacin de matrices se obtendr:1a col. de L: l11 D a11
l21 D a21l31 D a31I
2a fila de U : l11u12 D a12l11u13 D a13
! u1j D a1j=l11; j D 2; 3I
2a col. de L: l21u12 C l22 D a22l31u12 C l32 D a32
! li2 D ai2 li1u12; i D 2; 3I
2a fila de U : l21u13 C l22u23 D a23 ! u2j D .a2j l21u1j /=l22; j D 3I
3a col. de L: l31u13 C l32u23 C l33 D a33 ! li3 D ai3 i1XjD1
lijuj i ; i D 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 deeste proceso, denominado factorizacin LU de Crout, son:
li1 D ai1; i D 1; 2; : : : ; n;u1j D a1j=l11; j > 1;
lik D aik k1XpD1
lipupk; i k;
ukj D0@akj k1X
pD1lkpupj
1Alkk; 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 matrizregular Ann en la forma LU 1 resulta el de la tabla.
for k D 1 to nfor i D k to n
l.i; k/ a.i; k/ k1XpD1
l.i; p/u.p; k/
endfor i D k C 1 to n
u.k; i/ [email protected]; i/ k1X
pD1l.k; p/u.p; i/
1Al.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 Croutn=size(a,1); L=zeros(n); U=eye(n);for k=1:n
for i=k:nL(i,k)=a(i,k)-L(i,1:k-1)*U(1:k-1,k);
endfor 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, sepuede aprovechar la estructura de la matriz A para guardar en ellalas nuevas matrices L y U . El mismo algoritmo quedara as.
function [L U]=Crout_1(A)% Factorizacin LU por Croutn=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);
endL=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 D241020 530 20 1
35241 1 21 01
35 :>> A=[10 10 20;20 25 40;30 50 61];>> [L,U]=Crout_1(A)L =
10 0 020 5 030 20 1
U =1 1 20 1 00 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 D24 0,001 2,000 3,000-1,000 3,712 4,623-2,000 1,072 5,643
35en una mquina u ordenador con cuatro dgitos significativos.
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:
l11 D 0,001Il21 D -1,000Il31 D -2,000Iu12 D f l
2,0000,001
D 2000I
u13 D f l3,0000,001
D 3000I
l22 D f l 3,712C .1,000/.2000/ D 2004Il32 D f l 1,072C .2,000/.2000/ D 4001Iu23 D f l
4,623C .1,000/.3000/
2004
D 1,500 y
l33 D f l5,643C (2,000)(3,000) (4,001)(1,500) D 5,642:
Obsrvese que el clculo de l33 conlleva la prdida de tres dgitospor 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 manifiesto que, aunque se sepa que una matrizno es singular y que su factorizacin LU existe tericamente, loserrores de redondeo que se pueden producir al trabajar en unamquina pueden dar al traste con el resultado.
Es aconsejable realizar pivotacin. Al final de un proceso conpivotacin se obtendra
PA D LUes 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 tablafor k D 1 to n
for i D k to n
l.i; k/ a.i; k/ k1XpD1
l.i; p/u.p; k/
endDeterminar ndice p 2 fk; k C 1; : : : ; ng tal que ja.p; i/j D mKaxijn ja.j; i/j.Intercambiar filas p y k.for i D k C 1 to n
u.k; i/ [email protected]; i/ k1X
pD1l.k; p/u.p; i/
1Al.k; k/end
end
function [L U p]=CroutP(a)% Factorizacin LU por Crout con pivotacinn=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, endif k~=m, a([k m],:)=a([m k],:); p([k m])=p([m k]); endi=k+1:n; a(k,i)=(a(k,i)-a(k,1:k-1)*a(1:k-1,i))/a(k,k);
endL=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 2410 10 2020 25 4030 50 61
35 ;al final de este proceso, el vector IPVT./, que indica laspivotaciones realizadas, es 3, 2, 1T .
>> A=[10 10 20;20 25 40;30 50 61];>> [L U p]=CroutP(A)L =
30.0000 0 020.0000 -8.3333 010.0000 -6.6667 0.2000
U =1.0000 1.6667 2.0333
0 1.0000 0.0800p =
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 es2430 50 6120 25 4010 10 20
35 D 243020 8;333310 6;6667 0; 2
35241 1;6667 2;03331 0;08001
35 : El algoritmo de Crout requiere O.n3=3/ multiplicaciones/divisionesy 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 L1U Si se quiere conseguir la factorizacin L1U de una matriz 3 3,24a11 a12 a13a21 a22 a23
a31 a32 a33
35 D 24 1 0 0l21 1 0l31 l32 1
3524u11 u12 u130 u22 u230 0 u33
35 ;operando:1a fila de U : u11 D a11
u12 D a12u13 D a13I
1a col. de L: l21u11 D a21l31u11 D a31
! li1 D ai1=u11; i D 2; 3I
2a fila de U : l21u12 C u22 D a22l21u13 C u32 D a23
! u2j D a2j l21u1j ; j D 2; 3I
2a col. de L: l31u12 C l32u22 D a32 ! li2 D .ai2 li1u12/=u22; i D 3I
3a fila de U : l31u13 C l32u23 C u33 D a33 ! u3j D a3j j1XiD1
l3iuij ; j D 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 procesoson:
u1j D a1j ; j D 1; 2; : : : ; n;li1 D ai1=u11; j > 1;ukj D akj
k1XpD1
lkpupj ; j k;
lik D0@aik k1X
pD1lipupk
1Aukk; 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 Ann en laforma L1U es el que sigue.
for k D 1 to nfor j D k to n
u.k; j / a.k; j / k1XpD1
l.k; p/u.p; j /
endfor i D k C 1 to n
l.i; k/ [email protected]; k/ k1X
pD1l.i; p/u.p; k/
1Au.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 Croutn=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);
endL=tril(a,-1)+eye(n,n); U=triu(a);
El resultado con la matriz precedente es:
>> [L U]=Croutl1u(A)L =
1 0 02 1 03 4 1
U =10 10 200 5 00 0 1
>> L*Uans =
10 10 2020 25 4030 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 pivotacinn=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, endif k~=m, a([k m],:)=a([m k],:); p([k m])=p([m k]); endi=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);
endL=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 00.6667 1.0000 00.3333 0.8000 1.0000
U =30.0000 50.0000 61.0000
0 -8.3333 -0.66670 0 0.2000
p =3 2 1
>> L(p,:)*Uans =
10 10 2020 25 4030 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 00.6667 1.0000 00.3333 0.8000 1.0000
U =30.0000 50.0000 61.0000
0 -8.3333 -0.66670 0 0.2000
P =0 0 10 1 01 0 0
>> P*L*Uans =
10 10 2020 25 4030 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 lafactorizacin LU
Si se designa por X la matriz inversa de A 2 Rnn, los n vectorescolumna de X son los vectores solucin de los sistemas Axi D ei ,i D 1; : : : ; n.
Si suponemos que tenemos la factorizacin PA D LU , donde Pes una matriz de permutacin, para obtener la inversa de A hayque resolver los 2n sistemas siguientes:
Ly i D Pei ; Uxi D y i ; i D 1; : : : ; n:Es decir 2n sistemas de ecuaciones lineales con matricestriangulares 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 D b con Matlab, usando la factorizacin LUde A, se utiliza [L U P]=lu(A) y luego se obtiene la solucin delsistema 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 00 1.0000 0 00 0 1.0000 00 0.3333 0.6667 1.0000
U =2.0000 1.0000 0 4.0000
0 -3.0000 -12.0000 -1.00000 0 3.0000 1.00000 0 0 -0.3333
P =1 0 0 00 1 0 00 0 0 10 0 1 0
>> x=U\(L\(P*b))x =
3.00004.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);
ticfor i=1:1000
b=rand(200,1);x=A\b;
endtoc
tic[L U P] = lu(A);for i=1:1000
b=rand(200,1);x=U\(L\(P*b));
endtoc
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 modificados
Refinamiento 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 modificados
Si en Ax D b se modifica el vector b pero no A, no es necesariorehacer 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 ejeTk , puede que no sea necesariotampoco recalcular la factorizacin en su totalidad.
La frmula de Sherman-Morrison-Woodbury proporciona lainversa de una matriz en trminos de los vectores de unamodificacin a la misma de rango uno del tipo uvT :
A uvT1 D
A1CA1u1 vTA1u
1vTA1:
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 uvT /x D b, usando lafrmula, se obtendra
x DA uvT
1b
D A1bCA1u1 vTA1u
1vTA1b;
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 ..vTy/=.1 vT z//z.
Como A ya est factorizada, este procedimiento requiere solosustituciones inversas y productos interiores; es decir O.n2/operaciones frente a las O.n3=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 D24 2 4 24 9 32 3 7
35 D 24 1 0 02 1 01 1 1
35L
242 4 20 1 10 0 4
35U
a la que se le efecta una modificacin consistente en cambiar elcoeficiente (3,2) de -3 a -1.
En este caso
u D24 002
35 y v D 24010
35 ;con lo que la matriz resultante es A uvT .
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 D u y Ay D b,dando
z D243=21=21=2
35 y y D 24122
35 : Por ltimo,
x D y C vTy
1 vT zz D2412
2
35C 21 1=2
243=21=21=2
35 D 24740
35 :
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 modificados
Refinamiento 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
Refinamiento iterativo
Supongamos que se tiene una solucin aproximada, x0, del sistemade ecuaciones lineales Ax D b, y sea y una correccin o mejora dela misma tal que la solucin exacta, x, cumple que
x D x0C y:Sustituyendo esta expresin en Ax D b se tiene que
Ay D b Ax0 D r0;donde r0 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 nosinteresen, se pude resolver el sistema Ay D r0 y hacer
x1 D x0C y;lo que har que la solucin se aproxime ms a x que x0.
Si es necesario, se calcula un nuevo vector de residuos,r1 D b Ax1 y se continua el proceso hasta que la solucin seaproxime tanto como se quiera a la esperada.
El vector de residuos debe calcularse con ms precisin que lausada 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 shortA=hilb(n); % Matriz de Hilbert (muy mal condicionada)b=A*ones(n,1); % Elegimos trmino independiente para sol. x=1.pausex=A\b % Solucin, evidentemente, =1
B=A; % En B est A perturbada un poquitoB(6,1)=B(6,1)+1.e-06;pausex1=B\b % Veamos la nueva solucin; difiere bastantepause
xex=ones(n,1); % Calculemos cuntonorm(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 iterativox1=x1+B\resnorm(xex-x1,2)pause
res=b-A*x1; % Hagamos otra iteracin del Refinamiento iterativoformat longx1=x1+B\resnorm(xex-x1,2)pause
res=b-A*x1; % Hagamos otra iteracin del Refinamiento iterativox1=x1+B\resnorm(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 modificados
Refinamiento 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 LDLT
Lema Si todas las submatrices principales de una matriz A 2 Rnnson regulares, existen dos matrices triangulares inferiores unitariasnicas, 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 DM .
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 ejemplosimblico de orden 3,24a11 a12 a13a21 a22 a23
a31 a32 a33
35 D 24 1 0 0l21 1 0l31 l32 1
3524d11 d22d33
35241 l21 l310 1 l320 0 1
35 ;operando de acuerdo con las reglas de multiplicacin matricial seobtiene que
a11 D d11a21 D l21d11a31 D l31d11a22 D l221d11C d22a32 D l31l21d11C l32d22a33 D l231d11C l232d22C d33:
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 D 1 to nd.k/ a.k; k/
k1XpD1
a2.k; p/d.p/
if d.k/ D 0 then stopfor i D k C 1 to n
a.i; k/ [email protected]; k/ k1X
pD1a.i; p/a.k; p/d.p/
1Ad.k/end
end
Requiere O.n3=6/ multiplicaciones y divisiones y sumas y restas.
Si no se efectan pivotaciones, el procedimiento numrico puedefallar por la posible presencia de coeficientes pivote muy pequeos,o por la acumulacin de errores de redondeo o de cancelacinimportantes.
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 definida positiva si para todo x 0 se cumple quexTAx > 0:
Todos sus valores propios son positivos.
Las matrices simtricas definidas positivas admiten unadescomposicin de la forma
A D GTG ;donde G es una matriz triangular superior.
Esta descomposicin fue formulada por Andr Louis Cholesky(1875-1918), comandante del ejrcito francs de la poca, durantela 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 definidas positivas se presentanhabitualmente en:
Problemas relacionados con el anlisis de sistemas elctricos degeneracin 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 unsistema, la expresin xTAx mide la energa presente, o disponible,o cualquier otra magnitud fsica que slo admite cantidadespositivas 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 definida positivason definidas positivas.
Teorema Si A es una matriz definida positiva de orden n, tieneuna descomposicin de la forma LDM T , siendo todos los coefi-cientes de la matriz diagonal D positivos.
Teorema Si A es una matriz simtrica definida positiva de ordenn, existe una nica matriz triangular superior, G , con todos suscoeficientes diagonales positivos, tal que A D G TG .
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 simblicade una matriz 3 3.
Si se desea obtener la factorizacin24a11 a12 a13a12 a22 a23a13 a23 a33
35 D 24g11 0 0g12 g22 0g13 g23 g33
3524g11 g12 g130 g22 g230 0 g33
35 ;operando de acuerdo con las reglas de multiplicacin matricial seobtiene que:
a11 D g211a12 D g11g12a13 D g11g13a22 D g212C g222a23 D g12g13C g22g23a33 D g213C g223C g233:
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 latabla.
for i D 1 to n
g.i; i/ vuuuta.i; i/ i1X
kD1g2.k; i/
for j D i C 1 to n
g.i; j /
[email protected]; j / i1ikD1
g.k; i/g.k; j /
1CAg.i; i/end
end
El algoritmo requiere O.n3=6/ operaciones demultiplicacin+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 Choleskyn=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);
endG=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 26645 1 2 01 2 0 0
2 0 4 10 0 1 3
3775 W>> 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 00 1.3416 0.2981 00 0 1.7638 0.56690 0 0 1.6366
>> G=chol(A)G =
2.2361 0.4472 -0.8944 00 1.3416 0.2981 00 0 1.7638 0.56690 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 D b conMatlab utilizando la factorizacin de Cholesky hay que utilizar lafuncin G=chol(A).
La solucin del sistema correspondiente se puede obtener, teniendoen cuenta que se realiza A D G TG , 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 estamosmanejando, 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 00 1.3416 0.2981 00 0 1.7638 0.56690 0 0 1.6366
>> x=G\(G\b)x =
1.00002.00003.00004.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 semidefinidas positivas
Una matriz A se dice semidefinida positiva, si para todo x 0,xTAx 0.
Teorema Si A 2 Rnn es simtrica semidefinida positiva:jaij j .ai i C ajj /=2jaij j pai iajj .i j /
mKaxi;jjaij j D mKax
iai i
ai i D 0 ) aij D aj i D 0; j D 1; : : : ; n: Si el algoritmo de Cholesky se aplica a una matriz semidefinidapositiva, y en un paso akk es cero, entonces ajk 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 cerosexactos 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: sise intercambian dos filas, tambin hay que intercambiar lascolumnas simtricas: A PAPT .
La pivotacin en Cholesky se lleva adelante as:
En cada etapa k del proceso se determina el elemento demayor valor de la diagonal principal, mKaxkjn 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 nose 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 matricessemidefinidas positivas.
for i D 1 to nDeterminar ndice p 2 fi; i C 1; ng tal que ja.p; p/j D mKaxijnfja.j; j /jgif a.p; p/ > 0Intercambiar filas/columnas p y i .
g.i; i/ sa.i; i/
i1XkD1
g2.k; i/
for j D i C 1 to n
g.i; j /
[email protected]; j / i1ikD1
g.k; i/g.k; j /
1CCAg.i; i/end
endend
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
117/120
Matrices simtricas indefinidas
Una matriz A se dice indefinida si para algn vector x 0 laforma cuadrtica xTAx es positiva y para otros negativa.
Para factorizar este tipo de matrices se recurre a descomposicionesde pivotacin diagonal en bloques de la forma
PAPT D LBLT
donde la matriz L es triangular inferior unitaria y la matriz B estridiagonal, 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 matrizbidiagonal B en bloques, aunque todava se usan mucho rutinas queimplementan 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 PAPT D LTLT O.n3=3/Aasen PAPT D LTLT O.n3=6/Bunch y Parlett PAPT D LBLT O.n3=6/CO.n3=6/ compara.Bunch y Kaufman PAPT D LBLT O.n3=6/C .n2 1/ compara.
El del Bunch y Kaufman (1977), en alguna de sus variantes, es elms utilizado y el que emplean los cdigos profesionales parafactorizar 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 =alpha*sigma
swap = 1; m1 = k; m2 = r; s = 1;else
swap = 1; m1 = k+1; m2 = r; s = 2;end
endif 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]);
endif 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 = 2E = 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 = 3, P = eye(n); P = P(pp,:); endrho = 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.00000.1111 0.1429 0.2000 0.3333 1.0000 -1.00000.1429 0.2000 0.3333 1.0000 -1.0000 -0.33330.2000 0.3333 1.0000 -1.0000 -0.3333 -0.20000.3333 1.0000 -1.0000 -0.3333 -0.2000 -0.14291.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 00 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 01.0000 -0.1111 0 0 0 0
0 0 -0.9216 0 0 00 0 0 1.7415 0 00 0 0 0 -0.8256 1.92640 0 0 0 1.9264 0.1284
P =1 0 0 0 0 00 0 0 0 0 10 0 0 1 0 00 0 1 0 0 00 0 0 0 1 00 1 0 0 0 0
rho =1.9264
>> eig(A)ans =
-1.5708-1.5705-1.44380.70801.56221.5708
>>