sistemas de ecuaciones lineales- metodos directos de solucion
TRANSCRIPT
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
1/118
Métodos Matemáticos de Especialidad
Ingeniería Eléctrica
Sistemas de ecuaciones linealesMétodos directos de solución
José Luis de la Fuente O’Connor
Escuela Técnica Superior de Ingenieros Industriales
Universidad Politécnica de Madrid
Clase_sisli_11.pdf
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
2/118
Índice
Cuál es el problema; consideraciones teóricas
Eliminación de Gauss
� Pivotación� Algoritmo� Número de operaciones�Método de Gauss-Jordan
Matlab y los sistemas de ecuaciones lineales
Factorización LU
�Métodos explícitos para su obtenciónı Método de Crout
ı Método de Doolittle
�Matlab y la factorización LU
Solución de sistemas modificados
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
3/118
Refinamiento iterativo
Sistemas con matrices especiales
�Matrices simétricası Factorización LDLT
ı Factorización de Cholesky: matrices simétricas definidas positivas
˘ Matlab y la factorización de Cholesky
ı Matrices simétricas semidefinidas positivas
ı Matrices simétricas indefinidas
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
4/118
Cuál es el problema; consideracionesteóricas
– Se trata de dar solución 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 números aij se les denomina coeficientes del sistema y alos bi términos independientes.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
5/118
– Si se introducen las matrices
A D
26664a11 a12 � � � a1na21 a22 � � � a2n::: ::: :::
am1 am2 � � � amn
37775 ; x D
26664x1x2:::
xn
37775 y b D
26664b1b2:::
xm
37775 ;el sistema se puede representar de forma más compacta por
Ax D b:
– En general se supondrá que la matriz de coeficientes A 2 Rm�n,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/118
– 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
· =
m = n
rango(A) < m = n
3a 3b
2a 2b
1a 1b
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
7/118
– Recordemos algunos resultados de la teoría de álgebra lineal.
Teorema. (Compatibilidad de un sistema de ecuaciones lineales) Laecuación Ax D b admite solución si y sólo si
rango.Ajb/ D rango.A/:
Corolario. Si Am�n tiene rango m, Ax D b siempre tiene solución.
Teorema. Si x0 es una solución de Ax D b, el conjunto de solucionesde la ecuación está dado por x0 C ker.A/.
Corolario. Una solución de Ax D b es única si y sólo 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/118
Teorema. La ecuación Ax D 0, Am�n, n > m, siempre tiene unasolución 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, A�1, tal que
A�1A D AA�1 D I :
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
9/118
Ejemplo
– Hay que modelizar el sistema de refrigeración de una tarjetaelectrónica para poder usar un reloj con la mayor frecuencia deoscilación posible.
– Simplificadamente, adoptamos el modelo físico y matemático dela figura en el que se esquematiza un tiristor o un transistormontado en una placa disipadora de calor.
Thermal Model of an IC Package (1)
Objective: Find the temperature of an integrated circuit (IC)package mounted on a heat spreader. The system of equations is
obtained from a thermal resistive network model.
Physical Model: Mathematical Model:
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/118
– Si el sistema necesita Qc watios de potencia, suponiendo unmodelo resistivo del flujo de aire entre los nudos del sistema,aplicando los principios de conservación de la energía, seobtienen las ecuaciones que siguen.
Q1 D1
R1.Tc � Tp/ Q4 D
1
R4.Tp � Ta/ Qc D Q1CQ3
Q2 D1
R2.Tp � Tw/ Q2 D
1
R5.Tw � Ta/ Q1 D Q2CQ4
Q3 D1
R3.Tc � Ta/
– Se conoce Qc, al igual que Ta. Las resistencias se puedenconocer sabiendo el material de las placas y sus propiedades.
– Las incógnitas 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/118
– Como hay siete ecuaciones, reagrupando las ecuaciones paraaislar las incógnitas se llega al siguiente sistema:
R1Q1 � Tc C T9 D 0
R2Q2 � 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 expresión:266666664
R1 0 0 0 �1 1 0
0 R2 0 0 0 �1 1
0 0 R3 0 �1 0 0
0 0 0 R4 0 �1 0
0 R5 0 0 0 0 �1
1 0 1 0 0 0 0
1 �1 0 �1 0 0 0
377777775
266666664
Q1
Q2
Q3
Q4
TcTpTw
377777775 D266666664
0
0
�Ta�Ta�TaQc
0
377777775– Los flujos de calor se obtendrán resolviendo este sistema.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
12/118
– En Matlab, si R1 D 100, R2 D 200, R3 D 50, R4 D 100 y R5 D 300;Ta D 50 y Qc D 25, por ejemplo, los datos a suministrarle pararesolver el sistema serían:» 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/118
– Interpretemos geométricamente 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 sistemarepresenta una recta en el espacio euclídeo de dimensión dos,según se describe en la figura.
x1
x2
a21x1 + a22x2 = b2
a11x1 + a12x2 = b1
La resolución del sistema tiene como objetivo la búsqueda delas coordenadas del punto donde se cortan esas dos rectas.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
14/118
– En la siguiente figura se pueden ver sistemas donde existendificultades para encontrar ese punto de intersección, al menosvisualmente.
Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.Fig 9.2
– Generalizando a Rn, la resolución de un sistema de ecuacioneslineales se puede interpretar como la búsqueda de lascoordenadas del(os) punto(s) de intersección de los hiperplanosasociados a cada una de las ecuaciones.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
15/118
– Interpretemos geométricamente el problema en el subespacioIm.A/.
Si se escribe el sistema de dos ecuaciones con dos incógnitasde la forma �
a11a21
�x1 C
�a12a22
�x2 D
�b1b2
�;
el problema es el de descomponer linealmente el vector b enlos vectores columna que definen las dos columnas de lamatriz de coeficientes.
[b1b2
]
[a12a22
]
[a11a21
]
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
16/118
– En Rn, el problema se refiere a la búsqueda de la descomposiciónlineal de un vector de n componentes según n vectores dados: losque forman la base de Im.A/ que definen los vectores columnade A.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
17/118
Índice
Cuál es el problema; consideraciones teóricas
Eliminación de Gauss
Matlab y los sistemas de ecuaciones lineales
Factorización LU
Solución 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/118
Métodos directos: Eliminación deGauss– Los métodos directos resuelven el problema en un número deetapas fijo.
– De ellos, el método clásico del álgebra lineal numérica pararesolver Ax D b, A 2 Rn�n, 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 ciertoscuerpos celestes.
– Supondremos que la matriz A es de rango completo, por lotanto invertible, y que si eventualmente no lo es elprocedimiento deberá detectarlo.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
19/118
– La mecánica del método consiste en aplicar al sistema
a11x1 C a12x2 C � � � C a1nxn D b1a21x1 C a22x2 C � � � C a2nxn D b2::: ::: ::: :::
an1x1 C an2x2 C � � � C annxn D bn
n transformaciones lineales que lo conviertan en otro más fácilde resolver.
Concretamente, transformarlo en un sistema triangularsuperior de 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/118
– Un sistema triangular superior, siempre y cuando se satisfaganlas condiciones
ui i ¤ 0; i D 1; : : : ; n;
es fácilmente resoluble de manera recurrente mediante lasfórmulas
xk D1
ukk
b0k �
nXiDkC1
ukixi
!; k D 1; : : : ; n:
Este proceso se conoce como sustitución inversa.
– El método de Gauss comporta pues n etapas con:
a) Multiplicación de una cualquiera de las ecuaciones del sistemapor un número distinto de cero.
b) Sustitución de una ecuación cualquiera del sistema por la queresulta de sumarle otra cualquiera.
c) Permutación 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/118
Ejemplo
– Se desea resolver el sistema
2x1 C x2 C 4x4 D 2
�4x1 � 2x2 C 3x3 � 7x4 D �9
4x1 C x2 � 2x3 C 8x4 D 2
� 3x2 � 12x3 � x4 D 2:
– Escrito en forma matricial, Ax D b, los distintos componentesson
A D
266642 1 0 4
�4 �2 3 �7
4 1 �2 8
0 �3 �12 �1
37775 ; b D
266642
�9
2
2
37775 y x D
26664x1x2x3x4
37775 :
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
22/118
– Reconfiguremos inicialmente la matriz A aumentándola unacolumna más: la que define el término independiente b, yllamemos a la nueva matriz resultante bA; es decir,
bA D ŒAjb� D26664
2 1 0 4 2
�4 �2 3 �7 �9
4 1 �2 8 2
0 �3 �12 �1 2
37775 :Apliquemos ahora la mecánica del método en n D 3 etapas.
Etapa 1
– Comprobemos que el elemento Oa11 —denominado elementopivote— no es cero.Si es distinto de cero, eliminemos los elementos 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/118
– Para ello, definamos para cada fila 2; : : : ; n los factores omultiplicadores
ri DOai1
Oa11; i D 2; : : : ; n:
– A continuación, restemos de las filas i D 2; : : : ; n, la primeramultiplicada por ri .Todos los elementos debajo de la diagonal principal de lacolumna 1 se anularán.
Los demás elementos de bA debajo de la primera fila tambiénse verán afectados de acuerdo con la siguiente expresión:
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 �2
r3 D Oa31= Oa11 D 4=2 D 2
r4 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/118
– Los coeficientes de la matriz bA que cambian de valor son:
en la 2a fila: Oa21 0
Oa22 Oa22 � r2 � Oa12 D �2 C 2 � 1 D 0
Oa23 Oa23 � r2 � Oa13 D 3 C 2 � 0 D 3
Oa24 Oa24 � r2 � Oa14 D �7 C 2 � 4 D 1
Oa25 Oa25 � r2 � Oa15 D �9 C 2 � 2 D �5I
en la 3a fila: Oa31 0
Oa32 Oa32 � r3 � Oa12 D 1 � 2 � 1 D �1
Oa33 Oa33 � r3 � Oa13 D �2 � 2 � 0 D �2
Oa34 Oa34 � r3 � Oa14 D 8 � 2 � 4 D 0
Oa35 Oa35 � r3 � Oa15 D 2 � 2 � 2 D �2I
en la 4a fila: Oa41 0
Oa42 Oa42 � r3 � Oa12 D �3 � 0 � 1 D �3
Oa43 Oa43 � r4 � Oa13 D �12 � 0 � 0 D �12
Oa44 Oa44 � r4 � Oa14 D �1 � 0 � 4 D �1
Oa45 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/118
– La nueva matriz bA1, resultado de transformar bA, es:bA1 D
266642 1 0 4 2
0 0 3 1 �5
0 �1 �2 0 �2
0 �3 �12 �1 2
37775 :
– Se hubiese obtenido exactamente el mismo resultado de haberpremultiplicado bA por la denominada transformación de Gaussque define la matriz
L1 D
26641 0 0 0
2 1 0 0
�2 0 1 0
0 0 0 1
3775 :Matriz triangular inferior unitaria, denominada matriz detransformación de Gauss.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
26/118
– La matriz L1 también se puede escribir de la forma L1 D I � ˛eT1 ,donde
˛ D
266640
�2
2
0
37775 y e1 D
266641
0
0
0
37775 :
– En efecto,
L1bA D 264 1 0 0 02 1 0 0�2 0 1 00 0 0 1
375264 2 1 0 4 2�4 �2 3 �7 �94 1 �2 8 20 �3 �12 �1 2
375 D264 2 1 0 4 20 0 3 1 �50 �1 �2 0 �20 �3 �12 �1 2
375 :
– En resumen, bA1 D L1cA.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
27/118
– La inversa de la matriz L1, por otro lado, como se puedecomprobar fácilmente, es
L�11 D
26641 0 0 0
�2 1 0 0
2 0 1 0
0 0 0 1
3775 :Obsérvese que es idéntica a L1 salvo por lo que respecta al signode los coeficientes de la primera columna debajo de la diagonalprincipal.
Etapa 2
– Hagamos cero los elementos debajo de la diagonal principal de la2a columna de bA1.
– Al intentar hacerlo observamos que el elemento pivote Oa122 escero, lo que nos impide proceder como en la etapa anterior.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
28/118
– Comprobemos en este caso si algún elemento de la columna 2por debajo de Oa122 es distinto de cero:
Si no hay ninguno, esta columna es combinación 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á
bA01 D2666642 1 0 4 2
0 �3 �12 �1 2
0 �1 �2 0 �2
0 0 3 1 �5
377775 :
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
29/118
– Esto mismo se obtiene premultiplicando bA1 por la permutación
P1 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 acontinuación, bA01, es: bA01 D P1L1cA:
– Apliquemos a continuación a la columna 2 la misma idea que ala columna 1 y hagamos cero sus elementos 3 a n.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
30/118
– Los nuevos multiplicadores saldrán de la expresión
ri DOa10
i2
Oa10
22
; i D 3; 4:
– Los nuevos valores de los elementos de la matriz bA01 por debajode la segunda fila se obtendrán aplicando la expresión
Oa10
ij Oa10
ij � ri � Oa10
2j ; i D 3; 4I j D 3; : : : ; 5:
– Los valores de los multiplicadores para el ejemplo son
r3 D Oa10
32= Oa10
22 D 1=3 y
r4 D Oa10
42= Oa10
22 D 0:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
31/118
– Los nuevos elementos de la matriz bA01 resultante:en la 3a fila: Oa1
0
32 0
Oa10
33 Oa10
33 � r3 � Oa10
23 D �2 C13� 12 D 2
Oa10
34 Oa10
34 � r3 � Oa10
24 D 0 C 13� 1 D 1=3
Oa10
35 Oa10
35 � r3 � Oa10
25 D �2 �13� 2 D �8=3I
en la 4a fila: Oa10
42 0
Oa10
43 Oa10
43 � r4 � Oa10
23 D 3 � 0 � 12 D 3
Oa10
44 Oa10
44 � r4 � Oa10
24 D 1 � 0 � 1 D 1
Oa10
45 Oa10
45 � r4 � Oa10
25 D �5 � 0 � 2 D �5:
– Obsérvese que, al ser r4 D 0, los cálculos para adaptar la cuartafila podrían haberse evitado.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
32/118
– La nueva matriz resultado de estas transformaciones es
bA2 D
266642 1 0 4 2
0 �3 �12 �1 2
0 0 2 1=3 �8=3
0 0 3 1 �5
37775 ;matriz que se expresa a partir de la inicial comobA2 D L2P1L1
cA;donde L2 D
264 1 0 0 00 1 0 00 �1=3 1 00 0 0 1
375 :
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
33/118
Etapa 3
– Para conseguir transformar el sistema original en uno triangularsuperior sólo 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= Oa
233 D 3=2:
– Los nuevos valores de los elementos de la matriz bA2 por debajode la tercera fila se obtendrán aplicando la expresión
Oa2ij Oa2ij � ri � Oa
23j ; 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/118
– En concreto, en la cuarta fila:
Oa243 0
Oa244 Oa244 � r4 � Oa234 D 1 � 3
2�13D 1=2
Oa245 Oa245 � r4 � Oa235 D �5 C
32�83D �1:
– La nueva matriz resultado de estas transformaciones es
bA3 D
2666642 1 0 4 2
0 �3 �12 �1 2
0 0 2 1=3 �8=3
0 0 0 1=2 �1
377775 :
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
35/118
– A este resultado se ha llegado después de aplicar a la matrizinicial bA una serie de transformaciones; concretamente:bA3 D L3L2P1L1
cA;donde
L3 D
266641 0 0 0
0 1 0 0
0 0 1 0
0 0 �3=2 1
37775 :
– En conclusión, la matriz original que definía el sistema, A, sepuede transformar en la triangular superior U aplicándole lasmismas transformaciones que a bA. 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/118
– Como a b también se le han efectuado las mismastransformaciones llegándose a b0, resolver el sistema deecuaciones original es equivalente a resolver
Ux D b0:
– En el ejemplo,2666642 1 0 4
0 �3 �12 �1
0 0 2 1=3
0 0 0 1=2
377775266664x1x2x3x4
377775 D266664
2
2
�8=3
�1
377775 :
– La solución se lleva a cabo mediante sustitución inversa.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
37/118
x4 D �2;
sustituyendo en la tercera ecuación,
x3 D�8=3 � .�2/.1=3/
2D �1;
y, a su vez, haciéndolo en la segunda,
x2 D2 � .�1/.�2/ � .�12/.�1/
�3D 4:
– Por último, sustituyendo los valores de las variables ya calculadosen la primera ecuación se obtiene
x1 D2 � 4.�2/ � 1.4/
2D 3:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
38/118
– La solución de nuestro ejemplo es pues26666664x1x2x3x4
37777775 D26666664
3
4
�1
�2
37777775 :u
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
39/118
Pivotación
– Veamos qué ocurre si resolvemos con el procedimiento estudiado�10�4 1
1 1
�„ ƒ‚ …
A
�x1x2
�„ƒ‚…x
D
�1
2
�„ƒ‚…b
;
en una máquina con tres dígitos significativos que efectúeredondeos.
– Aplicando la mecánica apuntada, en la primera etapa seobtendría una nueva matriz A1 y un nuevo vector b1; son:
A1 D
�10�4 1
0 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/118
– El número 1 � 104 D �9999, la máquina lo redondearía a �104; dela misma forma procedería con 2 � 104. La solución del sistemasería
x2 D�104
�104D 1
x1 D1 � x2
10�4D 0;
muy distinta de la real Œ0;99989999; 1;00010001�T .
– La elección 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 numérica del procedimiento,
Es por esto por lo que se escoge el de mayor magnitud deentre los debajo de la diagonal principal.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
41/118
– Para el caso de este último ejemplo, en la primera etapa, enlugar de operar sobre la matriz anterior, como el valor absolutodel elemento a21 es mayor que el del a11, se intercambiaría la fila1 con la 2, obteniéndose
A0 D
�1 1
10�4 1
�y b0 D
�2
1
�:
– Continuando con el procedimiento normal, después de la primeraetapa, se llegará a
A01 D
�1 1
0 1 � 10�4
�y b01 D
�2
1 � 2 � 10�4
�:
Por redondeos internos, la máquina representaría
A01 D
�1 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/118
– La la solución de este sistema de ecuaciones sería�x1x2
�D
�1
1
�:
Solución mucho mejor que la anterior, pues la real es
x2 D0,99980,9999
D 0,99989999
x1 D 1,00010001:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
– El proceso descrito se denomina pivotación parcial.
– Su por qué radica en la aritmética de precisión finita con la quetrabajan todos los ordenadores y en el hecho de que los factoreso multiplicadores antes introducidos son inversamenteproporcionales al elemento pivote: si éste es demasiado pequeñopuede amplificar los errores de redondeo a lo largo del proceso desolución.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
43/118
– Una segunda estrategia de pivotación es la conocida comopivotación total.
– Consiste en buscar en una etapa i no sólo el elemento de mayorvalor absoluto en la columna correspondiente, sino en todo loque queda por tratar de la matriz: el mKaxi�k�n; i�j�n 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 effect of roundoff, always choose the row that
puts the largest pivot element on the diagonal, i.e., find ip such
that |aip,i| = max(|ak,i|) for k = i, . . . , n
NMM: Solving Systems of Equations page 37
Pivotación 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
Pivotación total
– La pivotación total proporciona la estrategia óptima paraminimizar errores de redondeo.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
44/118
– Desde un punto de vista teórico, la eliminación de Gauss conpivotación total es, en general, un algoritmo numéricamenteestable.
– En la práctica, la pivotación parcial produce buenos resultados yexcelentes prestaciones numéricas por lo que rara vez se usa latotal.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
45/118
Algoritmo
�
� Transformación de la Matriz Aumentada ŒAjb��
for i D 1 to n � 1Determinar í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 nC 1
a.j; k/ a.j; k/ � � � a.i; k/end
endend�
� Sustitución Inversa.�
for j D n to 1
x.j /
[email protected] / � nXkDjC1
a.j; k/ � x.k/
1A�a.j; j /
end
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
46/118
– En código Matlab para cualquier sistema.
function [x]=Gauss(A,b)% Solución de Ax=b mediante eliminación de Gaussn=size(A,1); x=zeros(n,1);for i=1:n-1 % Transformación 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 % Sustitución 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/118
– De esta codificación conviene destacar dos elementosmejorables.
No es realmente necesario intercambiar las filas una vezelegido el elemento pivote de cada etapa; basta con tenerconstancia en cada momento dónde están las filas que seintercambian.
Tal como está estructurado el programa sólo se podríaresolver un sistema —el definido por el b dado— y no, comoes lo más habitual, distintos sistemas con la misma matriz Ay diversos términos independientes.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
48/118
– El primero se puede paliar mediante la introducción de vectoríndice, IPIV, de dimensión el número de ecuaciones, inicializado ala posición inicial en el sistema de cada una de las ecuaciones; esdecir,
IPIV D
26666641
2
3:::
n
3777775 :
– Cuando haya que intercambiar dos filas en un etapa, no se haráintercambiando físicamente los elementos de esas dos filas, sinohaciéndolo 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/118
– Si por ejemplo, en la primera etapa hay que utilizar como pivoteun elemento de la cuarta fila, una vez efectuado el cambio, elvector IPIV quedará:
IPIV D
266666664
4
2
3
1:::
n
377777775 :
– Si al final de un proceso de resolución de un sistema de cincoecuaciones con cinco incógnitas, el vector puntero resultase
IPIV D
26666644
2
5
1
3
3777775 ;
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
50/118
la matriz A0 que se obtendría no resultaría ser estrictamentetriangular superior.Tendría la forma que sigue.
– Para resolver el sistema que define Ax D b habría que aplicaresas mismas manipulaciones de filas al vector b o tenerlo encuenta.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
51/118
– Para evitar el segundo inconveniente, habría que guardaradecuadamente la información que definen los multiplicadoresasociados a cada fila de cada etapa.
Los i � 1 multiplicadores se pueden guardar en los lugaresvacíos —o 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 la matriz Asería:
A D
266642 1 0 4
�2 �3 �12 �1
2 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/118
Número de operaciones del método
– Dos de los factores más importantes que influyen en lasprestaciones de un algoritmo son:
Su estabilidad numérica ante los diversos errores.
La cantidad de tiempo necesaria para completar los cálculosque conlleva.
– Ambos factores dependen del número de operaciones aritméticasnecesarias para la aplicación del algoritmo.
– Los tiempos necesarios para realizar en un ordenador lamultiplicación y la división de dos números son aproximadamenteiguales y considerablemente mayores, en términos relativos, quelos requeridos para realizar la suma o diferencia, que tambiénson muy semejantes entre sí.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
53/118
– La eliminación de Gauss para resolver un sistema de ecuacioneslineales, en la primera etapa, realiza las operaciones que serepresentan simbólicamente en el esquema que sigue.
� � � � � � � �
� � � � � � � �::: ::: ::: ::: :::
� � � � � � � �
� � � � � � � �
!
� � � � � � � �
0 2 � � � 2 2 2::: ::: ::: ::: :::
0 2 � � � 2 2 2
0 2 � � � 2 2 2
– El símbolo 2 designa los elementos 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/118
– Si en la etapa i se está transformando una matriz n � n, lasoperaciones que en ella se realizan son:
n � i divisiones para el cálculo de los multiplica-dores;
.n � i/.n � i C 1/ multiplicaciones y restas para modificar loselementos de la matriz por debajo de la filai que no están en la propia columna i .
– En cada etapa se efectúan,
.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/118
– En n � 1 etapas de que consta el proceso, se haránn�1XiD1
.n � i/.n � i C 2/ D .n2 C 2n/
n�1XiD1
1 � 2.nC 1/
n�1XiD1
i C
n�1XiD1
i2
D .n2 C 2n/.n � 1/ � 2.nC 1/.n � 1/n
2
C.n � 1/n.2n � 1/
6
D2n3 C 3n2 � 5n
6
multiplicaciones y divisiones yn�1XiD1
.n � i/.n � i C 1/ D .n2 C n/
n�1XiD1
1 � .2nC 1/
n�1XiD1
i C
n�1XiD1
i2
D .n2 C n/.n � 1/ � .2nC 1/.n � 1/n
2
C.n � 1/n.2n � 1/
6
Dn3 � n
3
sumas y restas.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
56/118
– El comportamiento de estos valores para n grande tiende a
1
3n3.
– El proceso de sustitución inversa requiere .n � i/ multiplicacionesy .n � i � 1/ sumas, para cada término del sumatorio, y una restay una división.
El número total de operaciones de todo el proceso es
1C
n�1XiD1
..n � i/C 1/ Dn2 C n
2
multiplicaciones y divisiones yn�1XiD1
..n � i � 1/C 1/ Dn2 � n
2
sumas y restas.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
57/118
– Contando la totalidad de la transformación de la matriz delsistema y la sustitución inversa, la eliminación de Gauss requiere
2n3 C 3n2 � 5n
6Cn2 C n
2Dn3 C 2n2 � n
3
multiplicaciones y divisiones y
n3 � n
3Cn2 � n
2D2n3 C 3n2 � 5n
6
sumas y restas.
– El comportamiento de estas expresiones para valores grandes den es como
1
3n3
lo que da idea de la importante magnitud del número deoperaciones.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
58/118
– Aunque la cantidad n3=3 puede parecer muy grande, recordemoslas fórmulas de Cramer para la solución de sistemas:
xi Ddet.B i/
det.A/; donde B i D
26664a11 � � � a1i�1 b1 a1iC1 � � � a1na21 � � � a2i�1 b2 a2iC1 � � � a2n::: ::: ::: ::: :::
an1 � � � ani�1 bn aniC1 � � � ann
37775 :Mediante estas fórmulas se requieren:8<: .nC 1/Š sumas,
.nC 2/Š multiplicaciones yn divisiones.
Para diez ecuaciones con diez incógnitas se requerirán:8<: 740 operaciones utilizando eliminación de Gauss.500.000.000 operaciones, aproximadamente, aplicando
las fórmulas de Cramer.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
59/118
Método de Gauss-Jordan
– Es una extensión natural de la eliminación de Gauss que consisteen eliminar de cada columna de la matriz de coeficientes delsistema no sólo los elementos no nulos que están debajo de ladiagonal sino también los que están encima.
– Una etapa i de la eliminación de Gauss estaba caracterizada porla matriz
Li D I � ˛ieTi ;
donde
˛i D
26666640:::
aiiC1 i=aii i
:::
aini=aii i
3777775 fila i C 1 y ei D
26666640:::
1:::
0
3777775 fila i :
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
60/118
– En la etapa i de este método, la matriz de transformación deGauss-Jordan es la dada por
T i D I � ˛ieTi ;
donde
˛i D
2666664ai1i=a
ii i
:::
1=aii i:::
aini=aii i
3777775 fila i y ei D
26666640:::
1:::
0
3777775 fila i :
– Si se tiene en cuenta que A0D A y An
D I, se tendrá que
T n�1 � � �T 2T 1A D I ;
por lo que el método obtiene directamente la matriz inversa:
A�1 D T n�1 � � �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/118
Índice
Cuál es el problema; consideraciones teóricas
Eliminación de Gauss
Matlab y los sistemas de ecuaciones lineales
Factorización LU
Solución 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/118
Matlab y los sistemas de ecuacioneslineales
– Para resolver un sistema Ax D b con Matlab sólo 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/118
– Utilizando el script Gauss que hemos presentado:
>> Gauss(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/118
Índice
Cuál es el problema; consideraciones teóricas
Eliminación de Gauss
Matlab y los sistemas de ecuaciones lineales
Factorización LU
Solución 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/118
Factorización LU– El cálculo de A D LU se conoce como factorización odescomposición 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 través 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 sólocambia es el término independiente.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
66/118
La factorización LU y la eliminación de Gauss
– Una forma indirecta de conseguir esta factorización LU es lapropia eliminación de Gauss.
En efecto, mediante unas permutaciones y unastransformaciones definidas por matrices elementalestriangulares inferiores el método conseguía:
Ln�1Pn�1 � � �L1P1A D U :
De este proceso, haciendo
P D Pn�1 � � �P1 yL D P.Ln�1Pn�1 � � �L2P2L1P1/
�1;
se puede comprobar que se obtiene la factorización
PA D LU :
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
67/118
Existencia y unicidad de la factorización LU
Teorema. Sea A una matriz cuadrada regular de orden n. Existe unamatriz de permutación P y dos matrices, una triangular inferior yotra triangular superior, L y U , respectivamente, tales que
PA D LU :
La matriz L tiene todos los elementos de la diagonal principal iguala 1 (triangular inferior unitaria).
Lema. La matriz A admite una factorización LU si y sólo si secumple que det.Ak/ ¤ 0; k D 1; : : : ; n:
Teorema. Si una matriz regular A de orden n admite una factoriza-ción A D LU , donde L es una matriz triangular inferior de elemen-tos diagonales 1 y U una triangular superior, esa factorización esúnica.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
68/118
Métodos numéricos directos para laobtención de factorizaciones LU
Método de Crout. Versión LU 1
– Supongamos que se desea obtener la factorización en la formaLU 1, donde U 1 designa una matriz triangular superior en la quetodos los elementos 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/118
– Si la matriz A es de orden 3 y se quiere factorizarla de la forma24 a11 a12 a13a21 a22 a23a31 a32 a33
35 D 24 l11 0 0
l21 l22 0
l31 l32 l33
3524 1 u12 u130 1 u230 0 1
35 ;usando las reglas de multiplicación de matrices se obtendrá:
1a col. de L: l11 D a11l21 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 �
i�1XjD1
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/118
– En general, las fórmulas de recurrencia que se pueden deducir deeste proceso, denominado factorización LU de Crout, son:
li1 D ai1; i D 1; 2; : : : ; n;
u1j D a1j=l11; j > 1;
lik D aik �
k�1XpD1
lipupk; i � k;
ukj D
0@akj � k�1XpD1
lkpupj
1A�lkk; j > k:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
71/118
– Plasmadas en el algoritmo de Crout para factorizar una matrizregular An�n 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/ �
k�1XpD1
l.i; p/u.p; k/
endfor i D k C 1 to n
u.k; i/
[email protected]; i/ � k�1XpD1
l.k; p/u.p; i/
1A�l.k; k/
endend
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
72/118
– La versión Matlab de este algoritmo es la que sigue.
function [L U]=LUCrout(a)% Factorización 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/118
– Ahora bien, como apuntábamos en la eliminación de Gauss, sepuede aprovechar la estructura de la matriz A para guardar enella las nuevas matrices L y U . El mismo algoritmo quedaría así.
function [L U]=Crout_1(A)% Factorización 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/118
– Factorizar 24 10 10 20
20 25 40
30 50 61
35da como resultado
LU D
24 1020 5
30 20 1
3524 1 1 2
1 0
1
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/118
Ejemplo
– Se desea factorizar la matriz
A D
24 0,001 2,000 3,000-1,000 3,712 4,623-2,000 1,072 5,643
35en una máquina u ordenador con cuatro dígitos significativos.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
76/118
– Las operaciones que se realizan en la máquina son:
l11 D 0,001Il21 D -1,000Il31 D -2,000I
u12 D f l
�2,0000,001
�D 2000I
u13 D f l
�3,0000,001
�D 3000I
l22 D f l Œ3,712C .1,000/.2000/� D 2004Il32 D f l Œ1,072C .2,000/.2000/� D 4001I
u23 D f l
�4,623C .1,000/.3000/
2004
�D 1,500 y
l33 D f lŒ5,643C (2,000)(3,000) � (4,001)(1,500)� D 5,642:
– Obsérvese que el cálculo de l33 conlleva la pérdida de tres dígitospor redondeo: el valor que debería 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/118
Pivotación
– El ejemplo pone de manifiesto que, aunque se sepa que unamatriz no es singular y que su factorización LU existeteóricamente, los errores de redondeo que se pueden producir altrabajar en una máquina pueden dar al traste con el resultado.
– Es aconsejable realizar pivotación. Al final de un proceso conpivotación se obtendría
PA D LU
es decir, no la factorización 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/118
– El algoritmo de Crout con pivotación parcial es el de la tabla
for k D 1 to nfor i D k to n
l.i; k/ a.i; k/ �
k�1XpD1
l.i; p/u.p; k/
endDeterminar í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 to n
u.k; i/
[email protected]; i/ � k�1XpD1
l.k; p/u.p; i/
1A�l.k; k/
endend
function [L U p]=CroutP(a)% Factorización LU por Crout con pivotaciónn=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/118
– Si se factoriza la matriz 24 10 10 20
20 25 40
30 50 61
35 ;al final de este proceso, el vector IPVT.�/, que indica laspivotaciones realizadas, es Œ3, 2, 1�T .
>> A=[10 10 20;20 25 40;30 50 61];>> [L U p]=CroutP(A)L =
30.0000 0 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/118
– La matriz PA realmente factorizada es264 30 50 6120 25 40
10 10 20
375 D264 3020 �8;333310 �6;6667 0; 2
375264 1 1;6667 2;03331 0;0800
1
375 :
– El algoritmo de Crout requiere O.n3=3/multiplicaciones/divisiones y sumas/restas para la factorizaciónde la matriz.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
81/118
Método de Crout. Versión L1U– Si se quiere conseguir la factorización L1U de una matriz 3 � 3,24 a11 a12 a13
a21 a22 a23a31 a32 a33
35 D 24 1 0 0
l21 1 0
l31 l32 1
3524 u11 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 �
j�1XiD1
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/118
– Las fórmulas de recurrencia que se pueden deducir de esteproceso son:
u1j D a1j ; j D 1; 2; : : : ; n;
li1 D ai1=u11; j > 1;
ukj D akj �
k�1XpD1
lkpupj ; j � k;
lik D
0@aik � k�1XpD1
lipupk
1A�ukk; i > k:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
83/118
– El algoritmo de Crout para factorizar una matriz regular An�n enla forma L1U es el que sigue.
for k D 1 to nfor j D k to n
u.k; j / a.k; j / �
k�1XpD1
l.k; p/u.p; j /
endfor i D k C 1 to n
l.i; k/
[email protected]; k/ � k�1XpD1
l.i; p/u.p; k/
1A�u.k; k/
endend
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
84/118
– Su implementación en Matlab:
function [L,U]=Croutl1u(a)% Factorización 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/118
– La versión del algoritmo con pivotación en Matlab es esta.
function [L U p]=CroutP1(a)% Factorización L1U por Crout con pivotaciónn=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/118
– 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/118
– 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/118
Matlab y la factorización LU
– Como acabamos de ver, para resolver un sistema lineal deecuaciones Ax D b con Matlab, mediante la factorización LU ,sólo hay que utilizar [L U P]=lu(A), obteniéndose la solucióndel sistema original 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
89/118
– 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
90/118
Índice
Cuál es el problema; consideraciones teóricas
Eliminación de Gauss
Matlab y los sistemas de ecuaciones lineales
Factorización LU
Solución 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
91/118
Solución de sistemas modificados– Si en un sistema Ax D b se modifica el vector b pero no lamatriz, no es necesario rehacer la factorización LU para resolverel nuevo sistema.
– Si se modifica ligeramente la matriz A, por ejemplo el elemento(j; k), con lo que A D A � ˛ejeTk , puede que no sea necesariotampoco recalcular la factorización en su totalidad.
La fórmula de Sherman-Morrison-Woodbury proporciona lainversa de una matriz en términos de los vectores de unamodificación de rango uno –uvT– a la misma:�
A � uvT��1D
A�1CA�1u�1 � vTA�1u
��1vTA�1:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
92/118
– Para resolver el nuevo sistema .A � uvT /x D b, usando lafórmula, se obtendría
x D�A � uvT
��1b
D A�1bCA�1u�1 � vTA�1u
��1vTA�1b;
operación que podría 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 factorización.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
93/118
Ejemplo
– Consideremos la matriz
A D
24 2 4 �2
4 9 �3
�2 �3 7
35 D 24 1 0 0
2 1 0
�1 1 1
35„ ƒ‚ …
L
24 2 4 �2
0 1 1
0 0 4
35„ ƒ‚ …
U
a la que se le efectúa una modificación consistente en cambiar elcoeficiente (3,2) por un -1.
– En este caso
u D
24 0
0
�2
35 y v D
24 010
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
94/118
– Con la factorización LU de A, se resuelve Az D u y Ay D b,dando
z D
24 �3=21=2�1=2
35 y y D
24 �122
35 :– Por último,
x D y CvTy
1 � vT zz D
24 �122
35C 2
1 � 1=2
24 �3=21=2�1=2
35 D 24 �740
35 :u
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
95/118
Índice
Cuál es el problema; consideraciones teóricas
Eliminación de Gauss
Matlab y los sistemas de ecuaciones lineales
Factorización LU
Solución 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
96/118
Refinamiento iterativo– Si se tiene una solución x0 del sistema de ecuaciones linealesAx D b, el vector de residuos es
r0 D b �Ax0:
– Si este vector no cumple unos requisitos de precisión que nosinteresen, se pude resolver el sistema Az0 D r0 y hacer
x1 D x0C z0:
– Esta nueva solución será mejor que la anterior pues
Ax1 D A.x0 C z0/ D Ax0 CAz0
D .b � r0/C r0 D b:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
97/118
– Esta forma de actuar sugiere seguir iterando hasta conseguir quela solución se aproxime tanto como se quiera a la esperada,teniendo en cuenta, claro, los estándares de precisión de lamáquina donde se esté trabajando.
% Script de Refinamiento Iterativo
n=6;format shortA=hilb(n); % Matriz de Hilbert (muy mal condicionada)b=A*ones(n,1); % Elegimos término independiente para sol. x=1.pausex=A\b % Solución, 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 solución; difiere bastantepause
xex=ones(n,1); % Calculemos cuántonorm(xex-x1,2) % Como magnitud calculemos la norma 2 de la desviaci.norm(xex-x,2)pause
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
98/118
res=b-A*x1; % Hagamos una iteración del Refinamiento iterativox1=x1+B\resnorm(xex-x1,2)pause
res=b-A*x1; % Hagamos otra iteración del Refinamiento iterativoformat longx1=x1+B\resnorm(xex-x1,2)pause
res=b-A*x1; % Hagamos otra iteración 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
99/118
Índice
Cuál es el problema; consideraciones teóricas
Eliminación de Gauss
Matlab y los sistemas de ecuaciones lineales
Factorización LU
Solución 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
100/118
Sistemas con matrices especiales
Matrices simétricas
Factorización LDLT
Lema. Si todas las submatrices principales de una matriz A 2 Rn�n
son regulares, existen dos matrices triangulares inferiores unitariasúnicas, L y M , y otra diagonal también única, D D diag.d1; : : : ; dn/,tales que A D LDM T .
Teorema. Si A admite una factorización LDM T y es simétrica, L DM .
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
101/118
– Para derivar unas fórmulas de recurrencia, a partir de un ejemplosimbólico de orden 3,24 a11 a12 a13a21 a22 a23
a31 a32 a33
35 D 24 1 0 0
l21 1 0
l31 l32 1
3524 d11 d22d33
3524 1 l21 l310 1 l320 0 1
35 ;operando de acuerdo con las reglas de multiplicación matricial seobtiene que
a11 D d11
a21 D l21d11
a31 D l31d11
a22 D l221d11 C d22
a32 D l31l21d11 C l32d22
a33 D l231d11 C l232d22 C d33:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
102/118
– Generalizando se obtiene el algoritmo de la tabla.
for k D 1 to n
d.k/ a.k; k/ �
k�1XpD1
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/ � k�1XpD1
a.i; p/a.k; p/d.p/
1A�d.k/
endend
– Requiere O.n3=6/ multiplicaciones y divisiones y sumas y restas.
– Si no se efectúan pivotaciones, los métodos expuestos hastaahora para factorizar una matriz pueden fallar por la posiblepresencia de elementos pivote muy pequeños, o por laacumulación de errores de redondeo importantes.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
103/118
Factorización de Cholesky
– Recordemos que una matriz se dice definida positiva, si paratodo x ¤ 0 se cumple que
xTAx > 0:
Todos los valores propios de una matriz definida positiva sonpositivos.
– Las matrices simétricas definidas positivas admiten unadescomposición de la forma
A D GTG ;
donde G es una matriz triangular superior.
– Esta descomposición fue formulada por André Louis Cholesky(1875-1918), comandante del ejército francés de la época,durante la ocupación internacional de Creta en 1906–09.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
104/118
– Las matrices simétricas definidas positivas se presentanhabitualmente en:
Problemas relacionados con el análisis de sistemas eléctricosde generación y transporte de energía.
Ajuste de funciones por mínimos cuadrados.
Análisis de estructuras mecánicas.
En muchos procedimientos de optimización lineal y no lineal.
– En general, en todas aquellas aplicaciones donde al modelizar unsistema, la expresión xTAx mide la energía presente o disponibleen un entorno determinado: esta energía habitualmente es unacantidad positiva.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
105/118
Lema. Las submatrices principales de una matriz definida positivason definidas positivas.
Teorema. Si A es una matriz definida positiva de orden n, tiene unadescomposición de la forma LDM T , siendo todos los elementos dela matriz diagonal D positivos.
Teorema. Si A es una matriz simétrica definida positiva de ordenn, existe una única matriz triangular superior, G , con todos suselementos 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
106/118
– Para determinar el algoritmo de descomposición de Cholesky deuna forma directa, procedamos a simularlo con ladescomposición simbólica de una matriz 3 � 3.
– Si se desea obtener la factorización24 a11 a12 a13a12 a22 a23a13 a23 a33
35 D 24 g11 0 0
g12 g22 0
g13 g23 g33
3524 g11 g12 g130 g22 g230 0 g33
35 ;operando de acuerdo con las reglas de multiplicación matricial seobtiene que:
a11 D g211a12 D g11g12
a13 D g11g13
a22 D g212 C g222
a23 D g12g13 C g22g23
a33 D g213 C g223 C g
233:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
107/118
– Generalizando este proceso se obtiene el algoritmo que describela tabla.
for i D 1 to n
g.i; i/
vuuuta.i; i/ � i�1XkD1
g2.k; i/
for j D i C 1 to n
g.i; j /
[email protected]; j / � i�1ikD1
g.k; i/g.k; j /
1CA�g.i; i/
endend
– El algoritmo requiere O.n3=6/ operaciones demultiplicación+división y de suma+resta.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
108/118
– Este algoritmo en Matlab sería como sigue.
function G=Chols_1(A)% Factorización 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
109/118
– La factorización de 266645 1 �2 0
1 2 0 0
�2 0 4 1
0 0 1 3
37775 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
110/118
Matlab y la factorización de Cholesky
– Para resolver un sistema lineal de ecuaciones Ax D b conMatlab utilizando la factorización de Cholesky hay que utilizarla función G=chol(A).
– La solución del sistema correspondiente se puede obtener,teniendo en 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
111/118
– Para utilizar esta operación con un ejemplo de los que estamosmanejando, habría 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
112/118
Matrices simétricas semidefinidas positivas
– Una matriz A se dice semidefinida positiva, si para todo x ¤ 0,xTAx � 0.
Teorema. Si A 2 Rn�n es simétrica semidefinida positiva, se cumple
jaij j � .ai i C ajj /=2
jaij 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 habría que hacer nada más en la columna k.
En la práctica, los errores de redondeo internos impiden losceros exactos por lo que se recurre a la pivotación.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
113/118
Pivotación
– Para mantener la simetría, las pivotaciones han de sersimétricas: si se intercambian dos filas, también hay queintercambiar las columnas simétricas: A PAPT .
– La pivotación en Cholesky se lleva adelante así:
En cada etapa k del proceso se determina el ele-mento de mayor valor de la diagonal principal,mKaxk�j�n ajj :
Si no es cero, se intercambian las fi-las/columnas p y k, siempre y cuando k ¤ p;
si es cero, el resto de la matriz a factorizarsería nula y no se haría nada más.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
114/118
– Este es el algoritmo de Cholesky con pivotación para matricessemidefinidas positivas.
for i D 1 to nDeterminar índice p 2 fi; i C 1; ng tal que ja.p; p/j D mKaxi�j�nfja.j; j /jgif a.p; p/ > 0Intercambiar filas/columnas p y i .
g.i; i/
sa.i; i/ �
i�1XkD1
g2.k; i/
for j D i C 1 to n
g.i; j /
[email protected]; j / �i�1ikD1
g.k; i/g.k; j /
1CCA�g.i; i/
endend
end
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
115/118
Matrices simétricas indefinidas
– Una matriz A se dice indefinida si para algún vector x ¤ 0 laforma cuadrática xTAx es positiva y para otros negativa.
– Para factorizar este tipo de matrices se recurre adescomposiciones de pivotación diagonal en bloques de la forma
PAPTD LBLT
donde la matriz L es triangular inferior unitaria y la matriz B estridiagonal, o diagonal en bloques, con bloques de dimensión1 � 1 ó 2 � 2, bidiagonal en este caso.
– Casi todos los códigos modernos utilizan alguna variedad dematriz bidiagonal B en bloques, aunque todavía se usan muchorutinas que implementan algún método en el que esa matriz estridiagonal (T ).
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
116/118
– Los métodos más conocidos se citan a continuación.
Método Estrategia Operaciones
Parlett y Reid PAPTD LTLT O.n3=3/
Aasen PAPTD LTLT O.n3=6/
Bunch y Parlett PAPTD LBLT O.n3=6/CO.n3=6/ compara.
Bunch y Kaufman PAPTD LBLT O.n3=6/C .n2 � 1/ compara.
– El del Bunch y Kaufman (1977), en alguna de sus variantes, esel más utilizado y el que emplean los códigos profesionales parafactorizar matrices simétricas.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
117/118
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
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 <= nrho = max(rho,max(max(abs(A(k+s:n,k+s:n)))));
endelse % Nothing to do, lambda=0
s = 1; D(k,k) = A(k,k);endk = k + s;if k == n, D(n,n) = A(n,n); break, end
endif nargout >= 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
118/118
– 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
>>