SlideShare a Scribd company logo
1 of 118
Download to read offline
1/118
Métodos Matemáticos de Especialidad
Ingeniería Eléctrica
Sistemas de ecuaciones lineales
Métodos directos de solución
José Luis de la Fuente O’Connor
jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Escuela Técnica Superior de Ingenieros Industriales
Universidad Politécnica de Madrid
Clase_sisli_11.pdf
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
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
4/118
Cuál es el problema; consideraciones
teóricas
– Se trata de dar solución a sistemas de ecuaciones del tipo
a11x1 C a12x2 C C a1nxn D b1
a21x1 C a22x2 C C a2nxn D b2
::: ::: ::: :::
am1x1 C am2x2 C C amnxn D bm;
lo que significa determinar los valores de las variables x1; : : : ; xn
que hacen que se cumplan todas las igualdades.
– A los números aij se les denomina coeficientes del sistema y a
los bi términos independientes.
5/118
– Si se introducen las matrices
A D
2
6
6
6
4
a11 a12 a1n
a21 a22 a2n
::: ::: :::
am1 am2 amn
3
7
7
7
5
; x D
2
6
6
6
4
x1
x2
:::
xn
3
7
7
7
5
y b D
2
6
6
6
4
b1
b2
:::
xm
3
7
7
7
5
;
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
.
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
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
7/118
– Recordemos algunos resultados de la teoría de álgebra lineal.
Teorema. (Compatibilidad de un sistema de ecuaciones lineales) La
ecuació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 soluciones
de 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 ;.
8/118
Teorema. La ecuación Ax D 0, Am n
, n > m, siempre tiene una
solución no trivial.
Teorema. Si A es una matriz cuadrada de orden n, las siguientes
condiciones son equivalentes:
1. rango.A/ D n.
2. ker.A/ D ;.
3. Los vectores columna de A son linealmente independientes.
4. Los vectores fila de A son linealmente independientes.
5. Existe una matriz de orden n, A 1
, tal que
A 1
A D AA 1
D I:
9/118
Ejemplo
– Hay que modelizar el sistema de refrigeración de una tarjeta
electrónica para poder usar un reloj con la mayor frecuencia de
oscilación posible.
– Simplificadamente, adoptamos el modelo físico y matemático de
la figura en el que se esquematiza un tiristor o un transistor
montado en una placa disipadora de calor.
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
c
Qc
Τa
Q3 R3
Τp
Τa
Τw
Τa
Q4 R4 Q5 R5
Q1 Q2
R2
10/118
– Si el sistema necesita Qc watios de potencia, suponiendo un
modelo resistivo del flujo de aire entre los nudos del sistema,
aplicando los principios de conservación de la energía, se
obtienen las ecuaciones que siguen.
Q1 D
1
R1
.Tc Tp/ Q4 D
1
R4
.Tp Ta/ Qc D Q1 C Q3
Q2 D
1
R2
.Tp Tw/ Q2 D
1
R5
.Tw Ta/ Q1 D Q2 C Q4
Q3 D
1
R3
.Tc Ta/
– Se conoce Qc, al igual que Ta. Las resistencias se pueden
conocer sabiendo el material de las placas y sus propiedades.
– Las incógnitas son entonces Q1, Q2, Q3, Q4, Tc, Tp y Tw.
11/118
– Como hay siete ecuaciones, reagrupando las ecuaciones para
aislar las incógnitas se llega al siguiente sistema:
R1Q1 Tc C T9 D 0
R2Q2 Tp C Tw D 0
R3Q3 Tc D Ta
R4Q4 Tp D Ta
R5Q2 Tw D Ta
Q1 C Q3 D Qc
Q1 Q2 Q4 D 0:
– En forma matricial, el sistema tiene la siguiente expresión:
2
6
6
6
6
6
6
6
4
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
3
7
7
7
7
7
7
7
5
2
6
6
6
6
6
6
6
4
Q1
Q2
Q3
Q4
Tc
Tp
Tw
3
7
7
7
7
7
7
7
5
D
2
6
6
6
6
6
6
6
4
0
0
Ta
Ta
Ta
Qc
0
3
7
7
7
7
7
7
7
5
– Los flujos de calor se obtendrán resolviendo este sistema.
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 para
resolver 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 0
0 200 0 0 0 -1 1
0 0 50 0 -1 0 0
0 0 0 100 0 -1 0
0 300 0 0 0 0 -1
1 0 1 0 0 0 0
1 -1 0 -1 0 0 0
» b=[0;0;-50;-50;-50;25;0]
b =
0
0
-50
-50
-50
25
0
>> x=Ab
x =
1.0e+003 *
0.00535714285714
0.00089285714286
0.01964285714286
0.00446428571429
1.03214285714286
0.49642857142857
0.31785714285714
13/118
– Interpretemos geométricamente el problema de resolver en dos
dimensiones un sistema de ecuaciones lineales cualquiera
a11x1 C a12x2 D b1
a21x1 C a22x2 D b2:
Cada una de las ecuaciones que componen el sistema
representa una recta en el espacio 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 de
las coordenadas del punto donde se cortan esas dos rectas.
14/118
– En la siguiente figura se pueden ver sistemas donde existen
dificultades para encontrar ese punto de intersección, al menos
visualmente.
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 ecuaciones
lineales se puede interpretar como la búsqueda de las
coordenadas del(os) punto(s) de intersección de los hiperplanos
asociados a cada una de las ecuaciones.
15/118
– Interpretemos geométricamente el problema en el subespacio
Im.A/.
Si se escribe el sistema de dos ecuaciones con dos incógnitas
de la forma Ä
a11
a21
x1 C
Ä
a12
a22
x2 D
Ä
b1
b2
;
el problema es el de descomponer linealmente el vector b en
los vectores columna que definen las dos columnas de la
matriz de coeficientes.
b1
b2
a12
a22
a11
a21
16/118
– En Rn
, el problema se refiere a la búsqueda de la descomposición
lineal de un vector de n componentes según n vectores dados: los
que forman la base de Im.A/ que definen los vectores columna
de A.
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
18/118
Métodos directos: Eliminación de
Gauss
– Los métodos directos resuelven el problema en un número de
etapas fijo.
– De ellos, el método clásico del álgebra lineal numérica para
resolver Ax D b, A 2 Rn n
, x 2 Rn
y b 2 Rn
, es el debido a Carl
Friedrich Gauss (1777-1855), quien lo aplicó por primera vez en
1809 con motivo de unos estudios sobre órbitas de ciertos
cuerpos celestes.
– Supondremos que la matriz A es de rango completo, por lo
tanto invertible, y que si eventualmente no lo es el
procedimiento deberá detectarlo.
19/118
– La mecánica del método consiste en aplicar al sistema
a11x1 C a12x2 C C a1nxn D b1
a21x1 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ácil
de resolver.
Concretamente, transformarlo en un sistema triangular
superior de la forma
u11x1 C u12x2 C C u1nxn D b0
1
u22x2 C C u2nxn D b0
2
::: :::
unnxn D b0
n;
o, escrito en forma matricial,
U x D b0.
20/118
– Un sistema triangular superior, siempre y cuando se satisfagan
las condiciones
uii ¤ 0; i D 1; : : : ; n;
es fácilmente resoluble de manera recurrente mediante las
fórmulas
xk D
1
ukk
b0
k
nX
iDkC1
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 sistema
por un número distinto de cero.
b) Sustitución de una ecuación cualquiera del sistema por la que
resulta de sumarle otra cualquiera.
c) Permutación del orden en que aparecen en el sistema dos
ecuaciones cualesquiera del mismo.
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 componentes
son
A D
2
6
6
6
4
2 1 0 4
4 2 3 7
4 1 2 8
0 3 12 1
3
7
7
7
5
; b D
2
6
6
6
4
2
9
2
2
3
7
7
7
5
y x D
2
6
6
6
4
x1
x2
x3
x4
3
7
7
7
5
:
22/118
– Reconfiguremos inicialmente la matriz A aumentándola una
columna más: la que define el término independiente b, y
llamemos a la nueva matriz resultante bA; es decir,
bA D ŒAjb D
2
6
6
6
4
2 1 0 4 2
4 2 3 7 9
4 1 2 8 2
0 3 12 1 2
3
7
7
7
5
:
Apliquemos ahora la mecánica del método en n D 3 etapas.
Etapa 1
– Comprobemos que el elemento Oa11 —denominado elemento
pivote— no es cero.
Si es distinto de cero, eliminemos los elementos de la primera
columna por debajo de ese Oa11.
23/118
– Para ello, definamos para cada fila 2; : : : ; n los factores o
multiplicadores
ri D
Oai1
Oa11
; i D 2; : : : ; n:
– A continuación, restemos de las filas i D 2; : : : ; n, la primera
multiplicada por ri.
Todos los elementos debajo de la diagonal principal de la
columna 1 se anularán.
Los demás elementos de bA debajo de la primera fila también
se verán afectados de acuerdo con la siguiente expresión:
Oaij Oaij ri Oa1j ; i D 2; : : : ; nI j D 2; : : : ; n C 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:
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:
25/118
– La nueva matriz bA1, resultado de transformar bA, es:
bA1 D
2
6
6
6
4
2 1 0 4 2
0 0 3 1 5
0 1 2 0 2
0 3 12 1 2
3
7
7
7
5
:
– Se hubiese obtenido exactamente el mismo resultado de haber
premultiplicado bA por la denominada transformación de Gauss
que define la matriz
L1 D
2
6
6
4
1 0 0 0
2 1 0 0
2 0 1 0
0 0 0 1
3
7
7
5 :
Matriz triangular inferior unitaria, denominada matriz de
transformación de Gauss.
26/118
– La matriz L1 también se puede escribir de la forma L1 D I ˛eT
1 ,
donde
˛ D
2
6
6
6
4
0
2
2
0
3
7
7
7
5
y e1 D
2
6
6
6
4
1
0
0
0
3
7
7
7
5
:
– En efecto,
L1bA D
2
6
4
1 0 0 0
2 1 0 0
2 0 1 0
0 0 0 1
3
7
5
2
6
4
2 1 0 4 2
4 2 3 7 9
4 1 2 8 2
0 3 12 1 2
3
7
5 D
2
6
4
2 1 0 4 2
0 0 3 1 5
0 1 2 0 2
0 3 12 1 2
3
7
5 :
– En resumen, bA1 D L1
cA.
27/118
– La inversa de la matriz L1, por otro lado, como se puede
comprobar fácilmente, es
L 1
1 D
2
6
6
4
1 0 0 0
2 1 0 0
2 0 1 0
0 0 0 1
3
7
7
5 :
Obsérvese que es idéntica a L1 salvo por lo que respecta al signo
de los coeficientes de la primera columna debajo de la diagonal
principal.
Etapa 2
– Hagamos cero los elementos debajo de la diagonal principal de la
2a columna de bA1.
– Al intentar hacerlo observamos que el elemento pivote Oa1
22 es
cero, lo que nos impide proceder como en la etapa anterior.
28/118
– Comprobemos en este caso si algún elemento de la columna 2
por debajo de Oa1
22 es distinto de cero:
Si no hay ninguno, esta columna es combinación lineal de la
primera y por tanto la matriz es singular.
Si hay varios, escojamos el de mayor valor absoluto e
intercambiemos la fila de ese elemento con la segunda.
– En el ejemplo, el elemento de mayor valor absoluto debajo de la
diagonal principal en la segunda columna, 3, se encuentra en la
fila 4. Intercambiamos esa fila 4 con la 2. Se obtendrá
bA0
1 D
2
6
6
6
6
4
2 1 0 4 2
0 3 12 1 2
0 1 2 0 2
0 0 3 1 5
3
7
7
7
7
5
:
29/118
– Esto mismo se obtiene premultiplicando bA1 por la permutación
P1 D
2
6
6
4
1 0 0 0
0 0 0 1
0 0 1 0
0 1 0 0
3
7
7
5 :
– Recapitulemos: la matriz con la que vamos a operar a
continuación, bA0
1, es:
bA0
1 D P1L1
c
A:
– Apliquemos a continuación a la columna 2 la misma idea que a
la columna 1 y hagamos cero sus elementos 3 a n.
30/118
– Los nuevos multiplicadores saldrán de la expresión
ri D
Oa10
i2
Oa10
22
; i D 3; 4:
– Los nuevos valores de los elementos de la matriz bA0
1 por debajo
de 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:
31/118
– Los nuevos elementos de la matriz bA0
1 resultante:
en la 3a fila: Oa10
32 0
Oa10
33 Oa10
33 r3 Oa10
23 D 2 C 1
3
12 D 2
Oa10
34 Oa10
34 r3 Oa10
24 D 0 C 1
3
1 D 1=3
Oa10
35 Oa10
35 r3 Oa10
25 D 2 1
3
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 cuarta
fila podrían haberse evitado.
32/118
– La nueva matriz resultado de estas transformaciones es
bA2 D
2
6
6
6
4
2 1 0 4 2
0 3 12 1 2
0 0 2 1=3 8=3
0 0 3 1 5
3
7
7
7
5
;
matriz que se expresa a partir de la inicial como
bA2 D L2P1L1
cA;
donde L2 D
2
6
4
1 0 0 0
0 1 0 0
0 1=3 1 0
0 0 0 1
3
7
5 :
33/118
Etapa 3
– Para conseguir transformar el sistema original en uno triangular
superior sólo resta anular el elemento Oa2
43.
– El elemento de la diagonal principal Oa2
33 es distinto de cero, luego
procedemos a calcular el multiplicador r4:
r4 D Oa2
43=Oa2
33 D 3=2:
– Los nuevos valores de los elementos de la matriz bA2 por debajo
de la tercera fila se obtendrán aplicando la expresión
Oa2
ij Oa2
ij ri Oa2
3j ; i D 4I j D 4; 5:
34/118
– En concreto, en la cuarta fila:
Oa2
43 0
Oa2
44 Oa2
44 r4 Oa2
34 D 1 3
2
1
3
D 1=2
Oa2
45 Oa2
45 r4 Oa2
35 D 5 C 3
2
8
3
D 1:
– La nueva matriz resultado de estas transformaciones es
bA3 D
2
6
6
6
6
4
2 1 0 4 2
0 3 12 1 2
0 0 2 1=3 8=3
0 0 0 1=2 1
3
7
7
7
7
5
:
35/118
– A este resultado se ha llegado después de aplicar a la matriz
inicial bA una serie de transformaciones; concretamente:
bA3 D L3L2P1L1
cA;
donde
L3 D
2
6
6
6
4
1 0 0 0
0 1 0 0
0 0 1 0
0 0 3=2 1
3
7
7
7
5
:
– En conclusión, la matriz original que definía el sistema, A, se
puede transformar en la triangular superior U aplicándole las
mismas transformaciones que a bA. Es decir,
U D L3L2P1L1A:
36/118
– Como a b también se le han efectuado las mismas
transformaciones llegándose a b0
, resolver el sistema de
ecuaciones original es equivalente a resolver
U x D b0
:
– En el ejemplo,
2
6
6
6
6
4
2 1 0 4
0 3 12 1
0 0 2 1=3
0 0 0 1=2
3
7
7
7
7
5
2
6
6
6
6
4
x1
x2
x3
x4
3
7
7
7
7
5
D
2
6
6
6
6
4
2
2
8=3
1
3
7
7
7
7
5
:
– La solución se lleva a cabo mediante sustitución inversa.
37/118
x4 D 2;
sustituyendo en la tercera ecuación,
x3 D
8=3 . 2/.1=3/
2
D 1;
y, a su vez, haciéndolo en la segunda,
x2 D
2 . 1/. 2/ . 12/. 1/
3
D 4:
– Por último, sustituyendo los valores de las variables ya calculados
en la primera ecuación se obtiene
x1 D
2 4. 2/ 1.4/
2
D 3:
38/118
– La solución de nuestro ejemplo es pues
2
6
6
6
6
6
6
4
x1
x2
x3
x4
3
7
7
7
7
7
7
5
D
2
6
6
6
6
6
6
4
3
4
1
2
3
7
7
7
7
7
7
5
:
u
39/118
Pivotación
– Veamos qué ocurre si resolvemos con el procedimiento estudiado
Ä
10 4 1
1 1
„ ƒ‚ …
A
Ä
x1
x2„ƒ‚…
x
D
Ä
1
2
„ƒ‚…
b
;
en una máquina con tres dígitos significativos que efectúe
redondeos.
– Aplicando la mecánica apuntada, en la primera etapa se
obtendrí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 :
40/118
– El número 1 104
D 9999, la máquina lo redondearía a 104
; de
la misma forma procedería con 2 104
. La solución del sistema
sería
x2 D
104
104
D 1
x1 D
1 x2
10 4
D 0;
muy distinta de la real Œ0;99989999; 1;00010001T
.
– La elección del pivote busca que los multiplicadores no sean en
magnitud mucho mayores que 1 con el fin de tener en cuenta los
errores de redondeo y la estabilidad numérica del procedimiento,
Es por esto por lo que se escoge el de mayor magnitud de
entre los debajo de la diagonal principal.
41/118
– Para el caso de este último ejemplo, en la primera etapa, en
lugar de operar sobre la matriz anterior, como el valor absoluto
del elemento a21 es mayor que el del a11, se intercambiaría la fila
1 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 primera
etapa, se llegará a
A0
1 D
Ä
1 1
0 1 10 4 y b0
1 D
Ä
2
1 2 10 4 :
Por redondeos internos, la máquina representaría
A0
1 D
Ä
1 1
0 1
y b0
1 D
Ä
2
1
:
42/118
– La la solución de este sistema de ecuaciones sería
Ä
x1
x2
D
Ä
1
1
:
Solución mucho mejor que la anterior, pues la real es
x2 D
0,9998
0,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 que
trabajan todos los ordenadores y en el hecho de que los factores
o multiplicadores antes introducidos son inversamente
proporcionales al elemento pivote: si éste es demasiado pequeño
puede amplificar los errores de redondeo a lo largo del proceso de
solución.
43/118
– Una segunda estrategia de pivotación es la conocida como
pivotación total.
– Consiste en buscar en una etapa i no sólo el elemento de mayor
valor absoluto en la columna correspondiente, sino en todo lo
que 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 in
forward elimination.
Rows to search for a
more favorable pivot
element.
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
Pivotación parcial
Full Pivoting
0
*
Rows c
forwar
Columns to search for a more
favorable pivot element.
Row
Row
more
elem
*
Pivotación total
– La pivotación total proporciona la estrategia óptima para
minimizar errores de redondeo.
44/118
– Desde un punto de vista teórico, la eliminación de Gauss con
pivotación total es, en general, un algoritmo numéricamente
estable.
– En la práctica, la pivotación parcial produce buenos resultados y
excelentes prestaciones numéricas por lo que rara vez se usa la
total.
45/118
Algoritmo
Transformación de la Matriz Aumentada ŒAjb
for i D 1 to n 1
Determinar índice p 2 fi; i C 1; : : : ; ng tal que ja.p; i/j D mKaxiÄjÄn ja.j; i/j.
Intercambiar filas p e i.
for j D i C 1 to n
Á D a.j; i/=a.i; i/
for k D i C 1 to n C 1
a.j; k/ a.j; k/ Á a.i; k/
end
end
end
Sustitución Inversa.
for j D n to 1
x.j/
0
@b.j/
nX
kDjC1
a.j; k/ x.k/
1
A a.j; j/
end
46/118
– En código Matlab para cualquier sistema.
function [x]=Gauss(A,b)
% Solución de Ax=b mediante eliminación de Gauss
n=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]);
end
j=i+1:n;
A(j,i)=A(j,i)/A(i,i);
A(j,j)=A(j,j)-A(j,i)*A(i,j);
b(j)=b(j)-b(i)*A(j,i);
end
for i=n:-1:1 % Sustitución inversa
x(i)=(b(i)-A(i,i+1:n)*x(i+1:n))/A(i,i);
end
47/118
– De esta codificación conviene destacar dos elementos
mejorables.
No es realmente necesario intercambiar las filas una vez
elegido el elemento pivote de cada etapa; basta con tener
constancia en cada momento dónde están las filas que se
intercambian.
Tal como está estructurado el programa sólo se podría
resolver un sistema —el definido por el b dado— y no, como
es lo más habitual, distintos sistemas con la misma matriz A
y diversos términos independientes.
48/118
– El primero se puede paliar mediante la introducción de vector
índice, IPIV, de dimensión el número de ecuaciones, inicializado a
la posición inicial en el sistema de cada una de las ecuaciones; es
decir,
IPIV D
2
6
6
6
6
6
4
1
2
3
:::
n
3
7
7
7
7
7
5
:
– Cuando haya que intercambiar dos filas en un etapa, no se hará
intercambiando físicamente los elementos de esas dos filas, sino
haciéndolo en las correspondientes de IPIV.
49/118
– Si por ejemplo, en la primera etapa hay que utilizar como pivote
un elemento de la cuarta fila, una vez efectuado el cambio, el
vector IPIV quedará:
IPIV D
2
6
6
6
6
6
6
6
4
4
2
3
1
:::
n
3
7
7
7
7
7
7
7
5
:
– Si al final de un proceso de resolución de un sistema de cinco
ecuaciones con cinco incógnitas, el vector puntero resultase
IPIV D
2
6
6
6
6
6
4
4
2
5
1
3
3
7
7
7
7
7
5
;
50/118
la matriz A0
que se obtendría no resultaría ser estrictamente
triangular superior.
Tendría la forma que sigue.
– Para resolver el sistema que define Ax D b habría que aplicar
esas mismas manipulaciones de filas al vector b o tenerlo en
cuenta.
51/118
– Para evitar el segundo inconveniente, habría que guardar
adecuadamente la información que definen los multiplicadores
asociados a cada fila de cada etapa.
Los i 1 multiplicadores se pueden guardar en los lugares
vacíos —o mejor dicho, que se hacen cero— que provocan las
transformaciones que definen: en la etapa i, debajo de la
diagonal principal en la columna i.
En el ejemplo, con esta idea, al final del proceso la matriz A
sería:
A D
2
6
6
6
4
2 1 0 4
2 3 12 1
2 1=3 2 1=3
0 0 3=2 1=2
3
7
7
7
5
:
Los multiplicadores distintos de cero que se han calculado en
todo el proceso son -2, 2, 1/3 y 3/2.
52/118
Número de operaciones del método
– Dos de los factores más importantes que influyen en las
prestaciones de un algoritmo son:
Su estabilidad numérica ante los diversos errores.
La cantidad de tiempo necesaria para completar los cálculos
que conlleva.
– Ambos factores dependen del número de operaciones aritméticas
necesarias para la aplicación del algoritmo.
– Los tiempos necesarios para realizar en un ordenador la
multiplicación y la división de dos números son aproximadamente
iguales y considerablemente mayores, en términos relativos, que
los requeridos para realizar la suma o diferencia, que también
son muy semejantes entre sí.
53/118
– La eliminación de Gauss para resolver un sistema de ecuaciones
lineales, en la primera etapa, realiza las operaciones que se
representan 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 ven
afectados en esa etapa y que, en principio, son distintos de cero.
54/118
– Si en la etapa i se está transformando una matriz n n, las
operaciones que en ella se realizan son:
n i divisiones para el cálculo de los multiplica-
dores;
.n i/.n i C 1/ multiplicaciones y restas para modificar los
elementos de la matriz por debajo de la fila
i 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.
55/118
– En n 1 etapas de que consta el proceso, se harán
n 1X
iD1
.n i/.n i C 2/ D .n2
C 2n/
n 1X
iD1
1 2.n C 1/
n 1X
iD1
i C
n 1X
iD1
i2
D .n2
C 2n/.n 1/ 2.n C 1/
.n 1/n
2
C
.n 1/n.2n 1/
6
D
2n3
C 3n2
5n
6
multiplicaciones y divisiones y
n 1X
iD1
.n i/.n i C 1/ D .n2
C n/
n 1X
iD1
1 .2n C 1/
n 1X
iD1
i C
n 1X
iD1
i2
D .n2
C n/.n 1/ .2n C 1/
.n 1/n
2
C
.n 1/n.2n 1/
6
D
n3
n
3
sumas y restas.
56/118
– El comportamiento de estos valores para n grande tiende a
1
3
n3.
– El proceso de sustitución inversa requiere .n i/ multiplicaciones
y .n i 1/ sumas, para cada término del sumatorio, y una resta
y una división.
El número total de operaciones de todo el proceso es
1 C
n 1X
iD1
..n i/ C 1/ D
n2
C n
2
multiplicaciones y divisiones y
n 1X
iD1
..n i 1/ C 1/ D
n2
n
2
sumas y restas.
57/118
– Contando la totalidad de la transformación de la matriz del
sistema y la sustitución inversa, la eliminación de Gauss requiere
2n3
C 3n2
5n
6
C
n2
C n
2
D
n3
C 2n2
n
3
multiplicaciones y divisiones y
n3
n
3
C
n2
n
2
D
2n3
C 3n2
5n
6
sumas y restas.
– El comportamiento de estas expresiones para valores grandes de
n es como
1
3
n3
lo que da idea de la importante magnitud del número de
operaciones.
58/118
– Aunque la cantidad n3
=3 puede parecer muy grande, recordemos
las fórmulas de Cramer para la solución de sistemas:
xi D
det.Bi/
det.A/
; donde Bi D
2
6
6
6
4
a11 a1i 1 b1 a1iC1 a1n
a21 a2i 1 b2 a2iC1 a2n
::: ::: ::: ::: :::
an1 ani 1 bn aniC1 ann
3
7
7
7
5
:
Mediante estas fórmulas se requieren:
8
<
:
.n C 1/Š sumas,
.n C 2/Š multiplicaciones y
n 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.
59/118
Método de Gauss-Jordan
– Es una extensión natural de la eliminación de Gauss que consiste
en eliminar de cada columna de la matriz de coeficientes del
sistema no sólo los elementos no nulos que están debajo de la
diagonal sino también los que están encima.
– Una etapa i de la eliminación de Gauss estaba caracterizada por
la matriz
Li D I ˛ieT
i ;
donde
˛i D
2
6
6
6
6
6
4
0
:::
ai
iC1 i=ai
ii
:::
ai
ni=ai
ii
3
7
7
7
7
7
5
fila i C 1 y ei D
2
6
6
6
6
6
4
0
:::
1
:::
0
3
7
7
7
7
7
5
fila i :
60/118
– En la etapa i de este método, la matriz de transformación de
Gauss-Jordan es la dada por
T i D I ˛ieT
i ;
donde
˛i D
2
6
6
6
6
6
4
ai
1i=ai
ii
:::
1=ai
ii
:::
ai
ni=ai
ii
3
7
7
7
7
7
5
fila i y ei D
2
6
6
6
6
6
4
0
:::
1
:::
0
3
7
7
7
7
7
5
fila i :
– Si se tiene en cuenta que A0
D 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/ .
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
62/118
Matlab y los sistemas de ecuaciones
lineales
– 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];
>> Ab
ans =
3.0000
4.0000
-1.0000
-2.0000
63/118
– Utilizando el script Gauss que hemos presentado:
>> Gauss(A,b)
ans =
3.0000
4.0000
-1.0000
-2.0000
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
65/118
Factorización LU
– El cálculo de A D LU se conoce como factorización o
descomposición LU .
Para resolver un sistema de ecuaciones lineales Ax D b, si
A D LU , el problema se convierte en el de resolver LU x D b
a través de dos sistemas de ecuaciones triangulares:
U x D y y Ly D b:
Esto es muy útil cuando se requiere resolver sistemas de
ecuaciones en los que la matriz A es siempre la misma y sólo
cambia es el término independiente.
66/118
La factorización LU y la eliminación de Gauss
– Una forma indirecta de conseguir esta factorización LU es la
propia eliminación de Gauss.
En efecto, mediante unas permutaciones y unas
transformaciones definidas por matrices elementales
triangulares inferiores el método conseguía:
Ln 1Pn 1 L1P1A D U :
De este proceso, haciendo
P D Pn 1 P1 y
L D P.Ln 1Pn 1 L2P2L1P1/ 1
;
se puede comprobar que se obtiene la factorización
PA D LU :
67/118
Existencia y unicidad de la factorización LU
Teorema. Sea A una matriz cuadrada regular de orden n. Existe una
matriz de permutación P y dos matrices, una triangular inferior y
otra triangular superior, L y U , respectivamente, tales que
PA D LU :
La matriz L tiene todos los elementos de la diagonal principal igual
a 1 (triangular inferior unitaria).
Lema. La matriz A admite una factorización LU si y sólo si se
cumple 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.
68/118
Métodos numéricos directos para la
obtención de factorizaciones LU
Método de Crout. Versión LU 1
– Supongamos que se desea obtener la factorización en la forma
LU 1, donde U 1 designa una matriz triangular superior en la que
todos los elementos de la diagonal principal son 1.
69/118
– Si la matriz A es de orden 3 y se quiere factorizarla de la forma
2
4
a11 a12 a13
a21 a22 a23
a31 a32 a33
3
5 D
2
4
l11 0 0
l21 l22 0
l31 l32 l33
3
5
2
4
1 u12 u13
0 1 u23
0 0 1
3
5 ;
usando las reglas de multiplicación de matrices se obtendrá:
1a col. de L: l11 D a11
l21 D a21
l31 D a31I
2a fila de U :
l11u12 D a12
l11u13 D a13
! u1j D a1j =l11; j D 2; 3I
2a col. de L:
l21u12 C l22 D a22
l31u12 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 1X
j D1
lij uji; i D 3:
70/118
– En general, las fórmulas de recurrencia que se pueden deducir de
este 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 1X
pD1
lipupk; i k;
ukj D
0
@akj
k 1X
pD1
lkpupj
1
A lkk; j > k:
71/118
– Plasmadas en el algoritmo de Crout para factorizar una matriz
regular An n
en la forma LU 1 resulta el de la tabla.
for k D 1 to n
for i D k to n
l.i; k/ a.i; k/
k 1X
pD1
l.i; p/u.p; k/
end
for i D k C 1 to n
u.k; i/
0
@a.k; i/
k 1X
pD1
l.k; p/u.p; i/
1
A l.k; k/
end
end
72/118
– La versión Matlab de este algoritmo es la que sigue.
function [L U]=LUCrout(a)
% Factorización LU por Crout
n=size(a,1); L=zeros(n); U=eye(n);
for k=1:n
for i=k:n
L(i,k)=a(i,k)-L(i,1:k-1)*U(1:k-1,k);
end
for i=k+1:n
U(k,i)=(a(k,i)-L(k,1:k-1)*U(1:k-1,i))/L(k,k);
end
end
73/118
– Ahora bien, como apuntábamos en la eliminación de Gauss, se
puede aprovechar la estructura de la matriz A para guardar en
ella las nuevas matrices L y U . El mismo algoritmo quedaría así.
function [L U]=Crout_1(A)
% Factorización LU por Crout
n=size(A,1);
for k=1:n
i=k:n; A(i,k)=A(i,k)-A(i,1:k-1)*A(1:k-1,k);
i=k+1:n; A(k,i)=(A(k,i)-A(k,1:k-1)*A(1:k-1,i))/A(k,k);
end
L=tril(A,0); U=triu(A,1)+eye(n,n);
74/118
– Factorizar 2
4
10 10 20
20 25 40
30 50 61
3
5
da como resultado
LU D
2
4
10
20 5
30 20 1
3
5
2
4
1 1 2
1 0
1
3
5 :
>> A=[10 10 20;20 25 40;30 50 61];
>> [L,U]=Crout_1(A)
L =
10 0 0
20 5 0
30 20 1
U =
1 1 2
0 1 0
0 0 1
>>
75/118
Ejemplo
– Se desea factorizar la matriz
A D
2
4
0,001 2,000 3,000
-1,000 3,712 4,623
-2,000 1,072 5,643
3
5
en una máquina u ordenador con cuatro dígitos significativos.
76/118
– Las operaciones que se realizan en la máquina son:
l11 D 0,001I
l21 D -1,000I
l31 D -2,000I
u12 D f l
Â
2,000
0,001
Ã
D 2000I
u13 D f l
Â
3,000
0,001
Ã
D 3000I
l22 D f l Œ3,712 C .1,000/.2000/ D 2004I
l32 D f l Œ1,072 C .2,000/.2000/ D 4001I
u23 D f l
Â
4,623 C .1,000/.3000/
2004
Ã
D 1,500 y
l33 D f lŒ5,643 C (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ígitos
por redondeo: el valor que debería obtenerse es 5,922.
77/118
Pivotación
– El ejemplo pone de manifiesto que, aunque se sepa que una
matriz no es singular y que su factorización LU existe
teóricamente, los errores de redondeo que se pueden producir al
trabajar en una máquina pueden dar al traste con el resultado.
– Es aconsejable realizar pivotación. Al final de un proceso con
pivotación se obtendría
PA D LU
es decir, no la factorización LU de la matriz original sino de PA.
78/118
– El algoritmo de Crout con pivotación parcial es el de la tabla
for k D 1 to n
for i D k to n
l.i; k/ a.i; k/
k 1X
pD1
l.i; p/u.p; k/
end
Determinar índice p 2 fk; k C 1; : : : ; ng tal que ja.p; i/j D mKaxiÄj Än ja.j; i/j.
Intercambiar filas p y k.
for i D k C 1 to n
u.k; i/
0
@a.k; i/
k 1X
pD1
l.k; p/u.p; i/
1
A l.k; k/
end
end
function [L U p]=CroutP(a)
% Factorización LU por Crout con pivotación
n=size(a,1); p=1:n;
for k=1:n
i=k:n; a(i,k)=a(i,k)-a(i,1:k-1)*a(1:k-1,k);
[r,m]=max(abs(a(k:n,k))); m=m+k-1;
if a(m,k)==0, continue, end
if k~=m, a([k m],:)=a([m k],:); p([k m])=p([m k]); end
i=k+1:n; a(k,i)=(a(k,i)-a(k,1:k-1)*a(1:k-1,i))/a(k,k);
end
L=tril(a,0); U=triu(a,1)+eye(n,n);
79/118
– Si se factoriza la matriz
2
4
10 10 20
20 25 40
30 50 61
3
5 ;
al final de este proceso, el vector IPVT. /, que indica las
pivotaciones realizadas, es Œ3, 2, 1T
.
>> A=[10 10 20;20 25 40;30 50 61];
>> [L U p]=CroutP(A)
L =
30.0000 0 0
20.0000 -8.3333 0
10.0000 -6.6667 0.2000
U =
1.0000 1.6667 2.0333
0 1.0000 0.0800
p =
3 2 1
>>
80/118
– La matriz PA realmente factorizada es
2
6
4
30 50 61
20 25 40
10 10 20
3
7
5 D
2
6
4
30
20 8;3333
10 6;6667 0; 2
3
7
5
2
6
4
1 1;6667 2;0333
1 0;0800
1
3
7
5 :
– El algoritmo de Crout requiere O.n3
=3/
multiplicaciones/divisiones y sumas/restas para la factorización
de la matriz.
81/118
Método de Crout. Versión L1U
– Si se quiere conseguir la factorización L1U de una matriz 3 3,
2
4
a11 a12 a13
a21 a22 a23
a31 a32 a33
3
5 D
2
4
1 0 0
l21 1 0
l31 l32 1
3
5
2
4
u11 u12 u13
0 u22 u23
0 0 u33
3
5 ;
operando:
1a fila de U : u11 D a11
u12 D a12
u13 D a13I
1a col. de L:
l21u11 D a21
l31u11 D a31
! li1 D ai1=u11; i D 2; 3I
2a fila de U :
l21u12 C u22 D a22
l21u13 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 1
X
iD1
l3iuij ; j D
82/118
– Las fórmulas de recurrencia que se pueden deducir de este
proceso son:
u1j D a1j ; j D 1; 2; : : : ; n;
li1 D ai1=u11; j > 1;
ukj D akj
k 1X
pD1
lkpupj ; j k;
lik D
0
@aik
k 1X
pD1
lipupk
1
A ukk; i > k:
83/118
– El algoritmo de Crout para factorizar una matriz regular An n
en
la forma L1U es el que sigue.
for k D 1 to n
for j D k to n
u.k; j/ a.k; j/
k 1X
pD1
l.k; p/u.p; j/
end
for i D k C 1 to n
l.i; k/
0
@a.i; k/
k 1X
pD1
l.i; p/u.p; k/
1
A u.k; k/
end
end
84/118
– Su implementación en Matlab:
function [L,U]=Croutl1u(a)
% Factorización L1U por Crout
n=size(a,1);
for k=1:n-1
i=k+1:n;
a(i,k)=a(i,k)/a(k,k);
a(i,i)=a(i,i)-a(i,k)*a(k,i);
end
L=tril(a,-1)+eye(n,n); U=triu(a);
El resultado con la matriz precedente es:
>> [L U]=Croutl1u(A)
L =
1 0 0
2 1 0
3 4 1
U =
10 10 20
0 5 0
0 0 1
>> L*U
ans =
10 10 20
20 25 40
30 50 61
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ón
n=size(a,1); p=1:n;
for k=1:n-1
[r,m]=max(abs(a(k:n,k)));
m=m+k-1;
if a(m,k)==0, continue, end
if k~=m, a([k m],:)=a([m k],:); p([k m])=p([m k]); end
i=k+1:n; a(i,k)=a(i,k)/a(k,k);
j=k+1:n; a(i,j)=a(i,j)-a(i,k)*a(k,j);
end
L=tril(a,-1)+eye(n,n); U=triu(a);
86/118
– El resultado con este script para el último ejemplo:
>> [L U p]=CroutP1(A)
L =
1.0000 0 0
0.6667 1.0000 0
0.3333 0.8000 1.0000
U =
30.0000 50.0000 61.0000
0 -8.3333 -0.6667
0 0 0.2000
p =
3 2 1
>> L(p,:)*U
ans =
10 10 20
20 25 40
30 50 61
87/118
– Con los recursos de Matlab:
>> [L U P]=lu(A)
L =
1.0000 0 0
0.6667 1.0000 0
0.3333 0.8000 1.0000
U =
30.0000 50.0000 61.0000
0 -8.3333 -0.6667
0 0 0.2000
P =
0 0 1
0 1 0
1 0 0
>> P*L*U
ans =
10 10 20
20 25 40
30 50 61
88/118
Matlab y la factorización LU
– Como acabamos de ver, para resolver un sistema lineal de
ecuaciones Ax D b con Matlab, mediante la factorización LU ,
sólo hay que utilizar [L U P]=lu(A), obteniéndose la solución
del sistema original haciendo
x=U(L(P’*b))
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 0
0 1.0000 0 0
0 0 1.0000 0
0 0.3333 0.6667 1.0000
U =
2.0000 1.0000 0 4.0000
0 -3.0000 -12.0000 -1.0000
0 0 3.0000 1.0000
0 0 0 -0.3333
P =
1 0 0 0
0 1 0 0
0 0 0 1
0 0 1 0
>> x=U(L(P’*b))
x =
3.0000
4.0000
-1.0000
-2.0000
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
91/118
Solución de sistemas modificados
– Si en un sistema Ax D b se modifica el vector b pero no la
matriz, no es necesario rehacer la factorización LU para resolver
el nuevo sistema.
– Si se modifica ligeramente la matriz A, por ejemplo el elemento
(j; k), con lo que A D A ˛ej eT
k , puede que no sea necesario
tampoco recalcular la factorización en su totalidad.
La fórmula de Sherman-Morrison-Woodbury proporciona la
inversa de una matriz en términos de los vectores de una
modificación de rango uno –uvT
– a la misma:
A uvT
Á 1
D
A 1 C A 1u 1 vT A 1u
Á 1
vT A 1:
92/118
– Para resolver el nuevo sistema .A uvT
/x D b, usando la
fórmula, se obtendría
x D A uvT
Á 1
b
D A 1b C A 1u 1 vT A 1u
Á 1
vT A 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 ..vT
y/=.1 vT
z//z.
– Como A ya está factorizada, este procedimiento requiere solo
sustituciones inversas y productos interiores; es decir O.n2
/
operaciones frente a las O.n3
=3/ de la factorización.
93/118
Ejemplo
– Consideremos la matriz
A D
2
4
2 4 2
4 9 3
2 3 7
3
5 D
2
4
1 0 0
2 1 0
1 1 1
3
5
„ ƒ‚ …
L
2
4
2 4 2
0 1 1
0 0 4
3
5
„ ƒ‚ …
U
a la que se le efectúa una modificación consistente en cambiar el
coeficiente (3,2) por un -1.
– En este caso
u D
2
4
0
0
2
3
5 y v D
2
4
0
1
0
3
5 ;
con lo que la matriz resultante es A uvT
.
94/118
– Con la factorización LU de A, se resuelve Az D u y Ay D b,
dando
z D
2
4
3=2
1=2
1=2
3
5 y y D
2
4
1
2
2
3
5 :
– Por último,
x D y C
vT
y
1 vT z
z D
2
4
1
2
2
3
5 C
2
1 1=2
2
4
3=2
1=2
1=2
3
5 D
2
4
7
4
0
3
5 :
u
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
96/118
Refinamiento iterativo
– Si se tiene una solución x0 del sistema de ecuaciones lineales
Ax D b, el vector de residuos es
r0 D b Ax0:
– Si este vector no cumple unos requisitos de precisión que nos
interesen, se pude resolver el sistema Az0 D r0 y hacer
x1 D x0 C z0:
– Esta nueva solución será mejor que la anterior pues
Ax1 D A.x0 C z0/ D Ax0 C Az0
D .b r0/ C r0 D b:
97/118
– Esta forma de actuar sugiere seguir iterando hasta conseguir que
la solución se aproxime tanto como se quiera a la esperada,
teniendo en cuenta, claro, los estándares de precisión de la
máquina donde se esté trabajando.
% Script de Refinamiento Iterativo
n=6;
format short
A=hilb(n); % Matriz de Hilbert (muy mal condicionada)
b=A*ones(n,1); % Elegimos término independiente para sol. x=1.
pause
x=Ab % Solución, evidentemente, =1
B=A; % En B está A perturbada un poquito
B(6,1)=B(6,1)+1.e-06;
pause
x1=Bb % Veamos la nueva solución; difiere bastante
pause
xex=ones(n,1); % Calculemos cuánto
norm(xex-x1,2) % Como magnitud calculemos la norma 2 de la desviaci.
norm(xex-x,2)
pause
98/118
res=b-A*x1; % Hagamos una iteración del Refinamiento iterativo
x1=x1+Bres
norm(xex-x1,2)
pause
res=b-A*x1; % Hagamos otra iteración del Refinamiento iterativo
format long
x1=x1+Bres
norm(xex-x1,2)
pause
res=b-A*x1; % Hagamos otra iteración del Refinamiento iterativo
x1=x1+Bres
norm(xex-x1,2)
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
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 LDMT
.
Teorema. Si A admite una factorización LDMT
y es simétrica, L D
M.
101/118
– Para derivar unas fórmulas de recurrencia, a partir de un ejemplo
simbólico de orden 3,
2
4
a11 a12 a13
a21 a22 a23
a31 a32 a33
3
5 D
2
4
1 0 0
l21 1 0
l31 l32 1
3
5
2
4
d11
d22
d33
3
5
2
4
1 l21 l31
0 1 l32
0 0 1
3
5 ;
operando de acuerdo con las reglas de multiplicación matricial se
obtiene que
a11 D d11
a21 D l21d11
a31 D l31d11
a22 D l2
21d11 C d22
a32 D l31l21d11 C l32d22
a33 D l2
31d11 C l2
32d22 C d33:
102/118
– Generalizando se obtiene el algoritmo de la tabla.
for k D 1 to n
d.k/ a.k; k/
k 1X
pD1
a2
.k; p/d.p/
if d.k/ D 0 then stop
for i D k C 1 to n
a.i; k/
0
@a.i; k/
k 1X
pD1
a.i; p/a.k; p/d.p/
1
A d.k/
end
end
– Requiere O.n3
=6/ multiplicaciones y divisiones y sumas y restas.
– Si no se efectúan pivotaciones, los métodos expuestos hasta
ahora para factorizar una matriz pueden fallar por la posible
presencia de elementos pivote muy pequeños, o por la
acumulación de errores de redondeo importantes.
103/118
Factorización de Cholesky
– Recordemos que una matriz se dice definida positiva, si para
todo x ¤ 0 se cumple que
xT Ax > 0:
Todos los valores propios de una matriz definida positiva son
positivos.
– Las matrices simétricas definidas positivas admiten una
descomposición de la forma
A D GT G;
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.
104/118
– Las matrices simétricas definidas positivas se presentan
habitualmente en:
Problemas relacionados con el análisis de sistemas eléctricos
de 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 un
sistema, la expresión xT
Ax mide la energía presente o disponible
en un entorno determinado: esta energía habitualmente es una
cantidad positiva.
105/118
Lema. Las submatrices principales de una matriz definida positiva
son definidas positivas.
Teorema. Si A es una matriz definida positiva de orden n, tiene una
descomposición de la forma LDMT
, siendo todos los elementos de
la matriz diagonal D positivos.
Teorema. Si A es una matriz simétrica definida positiva de orden
n, existe una única matriz triangular superior, G, con todos sus
elementos diagonales positivos, tal que A D GT
G.
106/118
– Para determinar el algoritmo de descomposición de Cholesky de
una forma directa, procedamos a simularlo con la
descomposición simbólica de una matriz 3 3.
– Si se desea obtener la factorización
2
4
a11 a12 a13
a12 a22 a23
a13 a23 a33
3
5 D
2
4
g11 0 0
g12 g22 0
g13 g23 g33
3
5
2
4
g11 g12 g13
0 g22 g23
0 0 g33
3
5 ;
operando de acuerdo con las reglas de multiplicación matricial se
obtiene que:
a11 D g2
11
a12 D g11g12
a13 D g11g13
a22 D g2
12 C g2
22
a23 D g12g13 C g22g23
a33 D g2
13 C g2
23 C g2
33:
107/118
– Generalizando este proceso se obtiene el algoritmo que describe
la tabla.
for i D 1 to n
g.i; i/
v
u
u
u
ta.i; i/
i 1X
kD1
g2
.k; i/
for j D i C 1 to n
g.i; j/
0
B
@a.i; j/
i 1i
kD1
g.k; i/g.k; j/
1
C
A g.i; i/
end
end
– El algoritmo requiere O.n3
=6/ operaciones de
multiplicación+división y de suma+resta.
108/118
– Este algoritmo en Matlab sería como sigue.
function G=Chols_1(A)
% Factorización de Cholesky
n=size(A,1);
for i=1:n, j=i+1:n;
A(i,i)=sqrt(A(i,i));
A(i,j)=A(i,j)/A(i,i);
A(j,j)=A(j,j)-A(i,j)’*A(i,j);
end
G=triu(A);
109/118
– La factorización de 2
6
6
6
4
5 1 2 0
1 2 0 0
2 0 4 1
0 0 1 3
3
7
7
7
5
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 0
0 1.3416 0.2981 0
0 0 1.7638 0.5669
0 0 0 1.6366
>> G=chol(A)
G =
2.2361 0.4472 -0.8944 0
0 1.3416 0.2981 0
0 0 1.7638 0.5669
0 0 0 1.6366
>>
110/118
Matlab y la factorización de Cholesky
– Para resolver un sistema lineal de ecuaciones Ax D b con
Matlab utilizando la factorización de Cholesky hay que utilizar
la función G=chol(A).
– La solución del sistema correspondiente se puede obtener,
teniendo en cuenta que se realiza A D GT
G, haciendo
x=G(G’b)
111/118
– Para utilizar esta operación con un ejemplo de los que estamos
manejando, 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 0
0 1.3416 0.2981 0
0 0 1.7638 0.5669
0 0 0 1.6366
>> x=G(G’b)
x =
1.0000
2.0000
3.0000
4.0000
112/118
Matrices simétricas semidefinidas positivas
– Una matriz A se dice semidefinida positiva, si para todo x ¤ 0,
xT
Ax 0.
Teorema. Si A 2 Rn n
es simétrica semidefinida positiva, se cumple
jaij j Ä .aii C ajj /=2
jaij j Ä
p
aiiajj .i ¤ j/
mKax
i;j
jaij j D mKax
i
aii
aii D 0 ) aij D aji D 0; j D 1; : : : ; n:
– Si el algoritmo de Cholesky se aplica a una matriz semidefinida
positiva, y en un paso akk es cero, entonces 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 los
ceros exactos por lo que se recurre a la pivotación.
113/118
Pivotación
– Para mantener la simetría, las pivotaciones han de ser
simétricas: si se intercambian dos filas, también hay que
intercambiar 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 factorizar
sería nula y no se haría nada más.
114/118
– Este es el algoritmo de Cholesky con pivotación para matrices
semidefinidas positivas.
for i D 1 to n
Determinar índice p 2 fi; i C 1; ng tal que ja.p; p/j D mKaxiÄj Änfja.j; j/jg
if a.p; p/ > 0
Intercambiar filas/columnas p y i.
g.i; i/
s
a.i; i/
i 1X
kD1
g2
.k; i/
for j D i C 1 to n
g.i; j/
0
B
B
@a.i; j/
i 1i
kD1
g.k; i/g.k; j/
1
C
C
A g.i; i/
end
end
end
115/118
Matrices simétricas indefinidas
– Una matriz A se dice indefinida si para algún vector x ¤ 0 la
forma cuadrática xT
Ax es positiva y para otros negativa.
– Para factorizar este tipo de matrices se recurre a
descomposiciones de pivotación diagonal en bloques de la forma
PAPT
D LBLT
donde la matriz L es triangular inferior unitaria y la matriz B es
tridiagonal, o diagonal en bloques, con bloques de dimensión
1 1 ó 2 2, bidiagonal en este caso.
– Casi todos los códigos modernos utilizan alguna variedad de
matriz bidiagonal B en bloques, aunque todavía se usan mucho
rutinas que implementan algún método en el que esa matriz es
tridiagonal (T ).
116/118
– Los métodos más conocidos se citan a continuación.
Método Estrategia Operaciones
Parlett y Reid PAPT
D LT LT
O.n3
=3/
Aasen PAPT
D LT LT
O.n3
=6/
Bunch y Parlett PAPT
D LBLT
O.n3
=6/ C O.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
el más utilizado y el que emplean los códigos profesionales para
factorizar matrices simétricas.
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
end
if swap
A([m1 m2],:) = A([m2 m1],:); L([m1 m2],:) = L([m2 m1],:);
A(:,[m1 m2]) = A(:,[m2 m1]); L(:,[m1 m2]) = L(:,[m2 m1]);
pp([m1 m2]) = pp([m2 m1]);
end
if s == 1 % s = 1
D(k,k) = A(k,k);
A(k+1:n,k) = A(k+1:n,k)/A(k,k); L(k+1:n,k) = A(k+1:n,k);
i = k+1:n; A(i,i) = A(i,i) - A(i,k)*A(k,i);
else % s = 2
E = A(k:k+1,k:k+1); D(k:k+1,k:k+1) = E;
C = A(k+2:n,k:k+1); temp = C/E;
L(k+2:n,k:k+1) = temp;
A(k+2:n,k+2:n) = A(k+2:n,k+2:n) - temp*C’;
end
if k+s <= n
rho = max(rho,max(max(abs(A(k+s:n,k+s:n)))));
end
else % Nothing to do, lambda=0
s = 1; D(k,k) = A(k,k);
end
k = k + s;
if k == n, D(n,n) = A(n,n); break, end
end
if nargout >= 3, P = eye(n); P = P(pp,:); end
rho = rho/normA;
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.0000
0.1111 0.1429 0.2000 0.3333 1.0000 -1.0000
0.1429 0.2000 0.3333 1.0000 -1.0000 -0.3333
0.2000 0.3333 1.0000 -1.0000 -0.3333 -0.2000
0.3333 1.0000 -1.0000 -0.3333 -0.2000 -0.1429
1.0000 -1.0000 -0.3333 -0.2000 -0.1429 -0.1111
>> cond(A)
ans =
2.2185
>> [L D P rho]=diagpiv(A)
L =
1.0000 0 0 0 0 0
0 1.0000 0 0 0 0
-0.1760 0.2160 1.0000 0 0 0
-0.3143 0.1714 -1.1905 1.0000 0 0
-0.1048 0.3429 0.2646 -0.6667 1.0000 0
-0.9778 0.2000 -0.6173 0.6222 0 1.0000
D =
0.0909 1.0000 0 0 0 0
1.0000 -0.1111 0 0 0 0
0 0 -0.9216 0 0 0
0 0 0 1.7415 0 0
0 0 0 0 -0.8256 1.9264
0 0 0 0 1.9264 0.1284
P =
1 0 0 0 0 0
0 0 0 0 0 1
0 0 0 1 0 0
0 0 1 0 0 0
0 0 0 0 1 0
0 1 0 0 0 0
rho =
1.9264
>> eig(A)
ans =
-1.5708
-1.5705
-1.4438
0.7080
1.5622
1.5708
>>

More Related Content

What's hot

Ejercicios jacobi
Ejercicios jacobiEjercicios jacobi
Ejercicios jacobidjp951
 
Serie de taylor
Serie de taylorSerie de taylor
Serie de taylorEdwin Esmc
 
Ecuaciones diferenciales de cauchy euler
Ecuaciones diferenciales de cauchy eulerEcuaciones diferenciales de cauchy euler
Ecuaciones diferenciales de cauchy eulerJoonser
 
Aplicación de Integrales Definidas
Aplicación de Integrales DefinidasAplicación de Integrales Definidas
Aplicación de Integrales DefinidasEmma
 
Coeficientes indeterminados
Coeficientes indeterminadosCoeficientes indeterminados
Coeficientes indeterminadosRicardo Garibay
 
265131074 derivadas-parciales (1)
265131074 derivadas-parciales (1)265131074 derivadas-parciales (1)
265131074 derivadas-parciales (1)Manuel Miranda
 
MÉTODO DE LAS POTENCIAS
MÉTODO DE LAS POTENCIASMÉTODO DE LAS POTENCIAS
MÉTODO DE LAS POTENCIASFdeT Formación
 
Método numérico - regla de simpson
Método numérico  - regla de simpsonMétodo numérico  - regla de simpson
Método numérico - regla de simpsonJoe Arroyo Suárez
 
Resolución de ecuaciones diferenciales con MATLAB R2015a
Resolución de ecuaciones diferenciales  con  MATLAB  R2015aResolución de ecuaciones diferenciales  con  MATLAB  R2015a
Resolución de ecuaciones diferenciales con MATLAB R2015aJoanny Ibarbia Pardo
 
Método de gauss y gauss seidel
Método de gauss y gauss seidelMétodo de gauss y gauss seidel
Método de gauss y gauss seidelLilly Kwang
 
Analisis de fourier para señales
Analisis de fourier para señalesAnalisis de fourier para señales
Analisis de fourier para señalesdoc digitus
 
Ejemplo del Método de Bisección
Ejemplo del Método de BisecciónEjemplo del Método de Bisección
Ejemplo del Método de BisecciónDaniela Medina
 
Métodos numéricos - Interpolación
Métodos numéricos - InterpolaciónMétodos numéricos - Interpolación
Métodos numéricos - InterpolaciónDavid A. Baxin López
 
Factorizacion lu
Factorizacion luFactorizacion lu
Factorizacion lujonathann89
 
Ecuaciones Diferenciales - La Transformada de Laplace
Ecuaciones Diferenciales - La Transformada de LaplaceEcuaciones Diferenciales - La Transformada de Laplace
Ecuaciones Diferenciales - La Transformada de LaplaceKike Prieto
 
Transformada de Laplace ejercicios resueltos
Transformada de Laplace ejercicios resueltosTransformada de Laplace ejercicios resueltos
Transformada de Laplace ejercicios resueltosPedro González
 
Aplicaciones de las ecuaciones diferenciales
Aplicaciones de las ecuaciones diferencialesAplicaciones de las ecuaciones diferenciales
Aplicaciones de las ecuaciones diferencialesVirgilio Granda
 
Rotacional de un campo vectorial
Rotacional de un campo vectorialRotacional de un campo vectorial
Rotacional de un campo vectorialEmma
 

What's hot (20)

Newton Raphson-ejercicios resueltos.
Newton Raphson-ejercicios resueltos.Newton Raphson-ejercicios resueltos.
Newton Raphson-ejercicios resueltos.
 
Ejercicios jacobi
Ejercicios jacobiEjercicios jacobi
Ejercicios jacobi
 
Serie de taylor
Serie de taylorSerie de taylor
Serie de taylor
 
Ecuaciones diferenciales de cauchy euler
Ecuaciones diferenciales de cauchy eulerEcuaciones diferenciales de cauchy euler
Ecuaciones diferenciales de cauchy euler
 
Aplicación de Integrales Definidas
Aplicación de Integrales DefinidasAplicación de Integrales Definidas
Aplicación de Integrales Definidas
 
Coeficientes indeterminados
Coeficientes indeterminadosCoeficientes indeterminados
Coeficientes indeterminados
 
265131074 derivadas-parciales (1)
265131074 derivadas-parciales (1)265131074 derivadas-parciales (1)
265131074 derivadas-parciales (1)
 
MÉTODO DE LAS POTENCIAS
MÉTODO DE LAS POTENCIASMÉTODO DE LAS POTENCIAS
MÉTODO DE LAS POTENCIAS
 
Método numérico - regla de simpson
Método numérico  - regla de simpsonMétodo numérico  - regla de simpson
Método numérico - regla de simpson
 
Resolución de ecuaciones diferenciales con MATLAB R2015a
Resolución de ecuaciones diferenciales  con  MATLAB  R2015aResolución de ecuaciones diferenciales  con  MATLAB  R2015a
Resolución de ecuaciones diferenciales con MATLAB R2015a
 
Método de gauss y gauss seidel
Método de gauss y gauss seidelMétodo de gauss y gauss seidel
Método de gauss y gauss seidel
 
Analisis de fourier para señales
Analisis de fourier para señalesAnalisis de fourier para señales
Analisis de fourier para señales
 
Ejemplo del Método de Bisección
Ejemplo del Método de BisecciónEjemplo del Método de Bisección
Ejemplo del Método de Bisección
 
Métodos numéricos - Interpolación
Métodos numéricos - InterpolaciónMétodos numéricos - Interpolación
Métodos numéricos - Interpolación
 
Factorizacion lu
Factorizacion luFactorizacion lu
Factorizacion lu
 
Transformada de Laplace
Transformada de LaplaceTransformada de Laplace
Transformada de Laplace
 
Ecuaciones Diferenciales - La Transformada de Laplace
Ecuaciones Diferenciales - La Transformada de LaplaceEcuaciones Diferenciales - La Transformada de Laplace
Ecuaciones Diferenciales - La Transformada de Laplace
 
Transformada de Laplace ejercicios resueltos
Transformada de Laplace ejercicios resueltosTransformada de Laplace ejercicios resueltos
Transformada de Laplace ejercicios resueltos
 
Aplicaciones de las ecuaciones diferenciales
Aplicaciones de las ecuaciones diferencialesAplicaciones de las ecuaciones diferenciales
Aplicaciones de las ecuaciones diferenciales
 
Rotacional de un campo vectorial
Rotacional de un campo vectorialRotacional de un campo vectorial
Rotacional de un campo vectorial
 

Similar to Métodos directos de solución de sistemas de ecuaciones lineales

NÚMEROS REALES II
NÚMEROS REALES IINÚMEROS REALES II
NÚMEROS REALES IICESAR V
 
I fase control ii ecuaciones en diferencias (3)
I fase control ii ecuaciones en diferencias (3)I fase control ii ecuaciones en diferencias (3)
I fase control ii ecuaciones en diferencias (3)ricardozegarra7
 
sistemas_lineales_Print_I2020.pdf
sistemas_lineales_Print_I2020.pdfsistemas_lineales_Print_I2020.pdf
sistemas_lineales_Print_I2020.pdfjorge816356
 
Sistemas de ecuauciones dif.
Sistemas de ecuauciones dif.Sistemas de ecuauciones dif.
Sistemas de ecuauciones dif.verdonica
 
Modelo de discusión
Modelo de discusiónModelo de discusión
Modelo de discusióngrueda5
 
Álgebra 2 bachillerato Evau.
Álgebra 2 bachillerato Evau.Álgebra 2 bachillerato Evau.
Álgebra 2 bachillerato Evau.David Valledor
 
primer parcial de algebra del cbc ciencias economicas
primer parcial de algebra del cbc ciencias economicasprimer parcial de algebra del cbc ciencias economicas
primer parcial de algebra del cbc ciencias economicasapuntescbc
 
Sistemas lineales iterativos
Sistemas lineales iterativosSistemas lineales iterativos
Sistemas lineales iterativoshome
 
Metodos numericos 4
Metodos numericos 4Metodos numericos 4
Metodos numericos 4monica
 
Metodos numericos 4
Metodos numericos 4Metodos numericos 4
Metodos numericos 4monica
 

Similar to Métodos directos de solución de sistemas de ecuaciones lineales (20)

NÚMEROS REALES II
NÚMEROS REALES IINÚMEROS REALES II
NÚMEROS REALES II
 
Teoría de matrices
Teoría de matricesTeoría de matrices
Teoría de matrices
 
I fase control ii ecuaciones en diferencias (3)
I fase control ii ecuaciones en diferencias (3)I fase control ii ecuaciones en diferencias (3)
I fase control ii ecuaciones en diferencias (3)
 
sistemas_lineales_Print_I2020.pdf
sistemas_lineales_Print_I2020.pdfsistemas_lineales_Print_I2020.pdf
sistemas_lineales_Print_I2020.pdf
 
Unidad 3 sistemas lineales
Unidad 3 sistemas linealesUnidad 3 sistemas lineales
Unidad 3 sistemas lineales
 
Algebra lineal
Algebra linealAlgebra lineal
Algebra lineal
 
Sistemas de ecuauciones dif.
Sistemas de ecuauciones dif.Sistemas de ecuauciones dif.
Sistemas de ecuauciones dif.
 
GUIA 1 MATRICES CESAR VALLEJO
GUIA 1 MATRICES CESAR VALLEJOGUIA 1 MATRICES CESAR VALLEJO
GUIA 1 MATRICES CESAR VALLEJO
 
Lugar_geometrico_de_las_raices.pdf
Lugar_geometrico_de_las_raices.pdfLugar_geometrico_de_las_raices.pdf
Lugar_geometrico_de_las_raices.pdf
 
Modelo de discusión
Modelo de discusiónModelo de discusión
Modelo de discusión
 
4 modelado
4 modelado4 modelado
4 modelado
 
Álgebra 2 bachillerato Evau.
Álgebra 2 bachillerato Evau.Álgebra 2 bachillerato Evau.
Álgebra 2 bachillerato Evau.
 
primer parcial de algebra del cbc ciencias economicas
primer parcial de algebra del cbc ciencias economicasprimer parcial de algebra del cbc ciencias economicas
primer parcial de algebra del cbc ciencias economicas
 
Sistemas lineales iterativos
Sistemas lineales iterativosSistemas lineales iterativos
Sistemas lineales iterativos
 
Metodo Jacobiano
Metodo JacobianoMetodo Jacobiano
Metodo Jacobiano
 
Metodo Jacobiano
Metodo JacobianoMetodo Jacobiano
Metodo Jacobiano
 
Metodos numericos 4
Metodos numericos 4Metodos numericos 4
Metodos numericos 4
 
Metodos numericos 4
Metodos numericos 4Metodos numericos 4
Metodos numericos 4
 
Problemas de matematicas
Problemas de matematicasProblemas de matematicas
Problemas de matematicas
 
Problemas de matematicas
Problemas de matematicasProblemas de matematicas
Problemas de matematicas
 

Métodos directos de solución de sistemas de ecuaciones lineales

  • 1. 1/118 Métodos Matemáticos de Especialidad Ingeniería Eléctrica Sistemas de ecuaciones lineales Métodos directos de solución José Luis de la Fuente O’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Escuela Técnica Superior de Ingenieros Industriales Universidad Politécnica de Madrid Clase_sisli_11.pdf
  • 2. 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
  • 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
  • 4. 4/118 Cuál es el problema; consideraciones teóricas – Se trata de dar solución a sistemas de ecuaciones del tipo a11x1 C a12x2 C C a1nxn D b1 a21x1 C a22x2 C C a2nxn D b2 ::: ::: ::: ::: am1x1 C am2x2 C C amnxn D bm; lo que significa determinar los valores de las variables x1; : : : ; xn que hacen que se cumplan todas las igualdades. – A los números aij se les denomina coeficientes del sistema y a los bi términos independientes.
  • 5. 5/118 – Si se introducen las matrices A D 2 6 6 6 4 a11 a12 a1n a21 a22 a2n ::: ::: ::: am1 am2 amn 3 7 7 7 5 ; x D 2 6 6 6 4 x1 x2 ::: xn 3 7 7 7 5 y b D 2 6 6 6 4 b1 b2 ::: xm 3 7 7 7 5 ; 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 .
  • 6. 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 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
  • 7. 7/118 – Recordemos algunos resultados de la teoría de álgebra lineal. Teorema. (Compatibilidad de un sistema de ecuaciones lineales) La ecuació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 soluciones de 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 ;.
  • 8. 8/118 Teorema. La ecuación Ax D 0, Am n , n > m, siempre tiene una solución no trivial. Teorema. Si A es una matriz cuadrada de orden n, las siguientes condiciones son equivalentes: 1. rango.A/ D n. 2. ker.A/ D ;. 3. Los vectores columna de A son linealmente independientes. 4. Los vectores fila de A son linealmente independientes. 5. Existe una matriz de orden n, A 1 , tal que A 1 A D AA 1 D I:
  • 9. 9/118 Ejemplo – Hay que modelizar el sistema de refrigeración de una tarjeta electrónica para poder usar un reloj con la mayor frecuencia de oscilación posible. – Simplificadamente, adoptamos el modelo físico y matemático de la figura en el que se esquematiza un tiristor o un transistor montado en una placa disipadora de calor. 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 c Qc Τa Q3 R3 Τp Τa Τw Τa Q4 R4 Q5 R5 Q1 Q2 R2
  • 10. 10/118 – Si el sistema necesita Qc watios de potencia, suponiendo un modelo resistivo del flujo de aire entre los nudos del sistema, aplicando los principios de conservación de la energía, se obtienen las ecuaciones que siguen. Q1 D 1 R1 .Tc Tp/ Q4 D 1 R4 .Tp Ta/ Qc D Q1 C Q3 Q2 D 1 R2 .Tp Tw/ Q2 D 1 R5 .Tw Ta/ Q1 D Q2 C Q4 Q3 D 1 R3 .Tc Ta/ – Se conoce Qc, al igual que Ta. Las resistencias se pueden conocer sabiendo el material de las placas y sus propiedades. – Las incógnitas son entonces Q1, Q2, Q3, Q4, Tc, Tp y Tw.
  • 11. 11/118 – Como hay siete ecuaciones, reagrupando las ecuaciones para aislar las incógnitas se llega al siguiente sistema: R1Q1 Tc C T9 D 0 R2Q2 Tp C Tw D 0 R3Q3 Tc D Ta R4Q4 Tp D Ta R5Q2 Tw D Ta Q1 C Q3 D Qc Q1 Q2 Q4 D 0: – En forma matricial, el sistema tiene la siguiente expresión: 2 6 6 6 6 6 6 6 4 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 3 7 7 7 7 7 7 7 5 2 6 6 6 6 6 6 6 4 Q1 Q2 Q3 Q4 Tc Tp Tw 3 7 7 7 7 7 7 7 5 D 2 6 6 6 6 6 6 6 4 0 0 Ta Ta Ta Qc 0 3 7 7 7 7 7 7 7 5 – Los flujos de calor se obtendrán resolviendo este sistema.
  • 12. 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 para resolver 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 0 0 200 0 0 0 -1 1 0 0 50 0 -1 0 0 0 0 0 100 0 -1 0 0 300 0 0 0 0 -1 1 0 1 0 0 0 0 1 -1 0 -1 0 0 0 » b=[0;0;-50;-50;-50;25;0] b = 0 0 -50 -50 -50 25 0 >> x=Ab x = 1.0e+003 * 0.00535714285714 0.00089285714286 0.01964285714286 0.00446428571429 1.03214285714286 0.49642857142857 0.31785714285714
  • 13. 13/118 – Interpretemos geométricamente el problema de resolver en dos dimensiones un sistema de ecuaciones lineales cualquiera a11x1 C a12x2 D b1 a21x1 C a22x2 D b2: Cada una de las ecuaciones que componen el sistema representa una recta en el espacio 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 de las coordenadas del punto donde se cortan esas dos rectas.
  • 14. 14/118 – En la siguiente figura se pueden ver sistemas donde existen dificultades para encontrar ese punto de intersección, al menos visualmente. 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 ecuaciones lineales se puede interpretar como la búsqueda de las coordenadas del(os) punto(s) de intersección de los hiperplanos asociados a cada una de las ecuaciones.
  • 15. 15/118 – Interpretemos geométricamente el problema en el subespacio Im.A/. Si se escribe el sistema de dos ecuaciones con dos incógnitas de la forma Ä a11 a21 x1 C Ä a12 a22 x2 D Ä b1 b2 ; el problema es el de descomponer linealmente el vector b en los vectores columna que definen las dos columnas de la matriz de coeficientes. b1 b2 a12 a22 a11 a21
  • 16. 16/118 – En Rn , el problema se refiere a la búsqueda de la descomposición lineal de un vector de n componentes según n vectores dados: los que forman la base de Im.A/ que definen los vectores columna de A.
  • 17. 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
  • 18. 18/118 Métodos directos: Eliminación de Gauss – Los métodos directos resuelven el problema en un número de etapas fijo. – De ellos, el método clásico del álgebra lineal numérica para resolver Ax D b, A 2 Rn n , x 2 Rn y b 2 Rn , es el debido a Carl Friedrich Gauss (1777-1855), quien lo aplicó por primera vez en 1809 con motivo de unos estudios sobre órbitas de ciertos cuerpos celestes. – Supondremos que la matriz A es de rango completo, por lo tanto invertible, y que si eventualmente no lo es el procedimiento deberá detectarlo.
  • 19. 19/118 – La mecánica del método consiste en aplicar al sistema a11x1 C a12x2 C C a1nxn D b1 a21x1 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ácil de resolver. Concretamente, transformarlo en un sistema triangular superior de la forma u11x1 C u12x2 C C u1nxn D b0 1 u22x2 C C u2nxn D b0 2 ::: ::: unnxn D b0 n; o, escrito en forma matricial, U x D b0.
  • 20. 20/118 – Un sistema triangular superior, siempre y cuando se satisfagan las condiciones uii ¤ 0; i D 1; : : : ; n; es fácilmente resoluble de manera recurrente mediante las fórmulas xk D 1 ukk b0 k nX iDkC1 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 sistema por un número distinto de cero. b) Sustitución de una ecuación cualquiera del sistema por la que resulta de sumarle otra cualquiera. c) Permutación del orden en que aparecen en el sistema dos ecuaciones cualesquiera del mismo.
  • 21. 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 componentes son A D 2 6 6 6 4 2 1 0 4 4 2 3 7 4 1 2 8 0 3 12 1 3 7 7 7 5 ; b D 2 6 6 6 4 2 9 2 2 3 7 7 7 5 y x D 2 6 6 6 4 x1 x2 x3 x4 3 7 7 7 5 :
  • 22. 22/118 – Reconfiguremos inicialmente la matriz A aumentándola una columna más: la que define el término independiente b, y llamemos a la nueva matriz resultante bA; es decir, bA D ŒAjb D 2 6 6 6 4 2 1 0 4 2 4 2 3 7 9 4 1 2 8 2 0 3 12 1 2 3 7 7 7 5 : Apliquemos ahora la mecánica del método en n D 3 etapas. Etapa 1 – Comprobemos que el elemento Oa11 —denominado elemento pivote— no es cero. Si es distinto de cero, eliminemos los elementos de la primera columna por debajo de ese Oa11.
  • 23. 23/118 – Para ello, definamos para cada fila 2; : : : ; n los factores o multiplicadores ri D Oai1 Oa11 ; i D 2; : : : ; n: – A continuación, restemos de las filas i D 2; : : : ; n, la primera multiplicada por ri. Todos los elementos debajo de la diagonal principal de la columna 1 se anularán. Los demás elementos de bA debajo de la primera fila también se verán afectados de acuerdo con la siguiente expresión: Oaij Oaij ri Oa1j ; i D 2; : : : ; nI j D 2; : : : ; n C 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:
  • 24. 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:
  • 25. 25/118 – La nueva matriz bA1, resultado de transformar bA, es: bA1 D 2 6 6 6 4 2 1 0 4 2 0 0 3 1 5 0 1 2 0 2 0 3 12 1 2 3 7 7 7 5 : – Se hubiese obtenido exactamente el mismo resultado de haber premultiplicado bA por la denominada transformación de Gauss que define la matriz L1 D 2 6 6 4 1 0 0 0 2 1 0 0 2 0 1 0 0 0 0 1 3 7 7 5 : Matriz triangular inferior unitaria, denominada matriz de transformación de Gauss.
  • 26. 26/118 – La matriz L1 también se puede escribir de la forma L1 D I ˛eT 1 , donde ˛ D 2 6 6 6 4 0 2 2 0 3 7 7 7 5 y e1 D 2 6 6 6 4 1 0 0 0 3 7 7 7 5 : – En efecto, L1bA D 2 6 4 1 0 0 0 2 1 0 0 2 0 1 0 0 0 0 1 3 7 5 2 6 4 2 1 0 4 2 4 2 3 7 9 4 1 2 8 2 0 3 12 1 2 3 7 5 D 2 6 4 2 1 0 4 2 0 0 3 1 5 0 1 2 0 2 0 3 12 1 2 3 7 5 : – En resumen, bA1 D L1 cA.
  • 27. 27/118 – La inversa de la matriz L1, por otro lado, como se puede comprobar fácilmente, es L 1 1 D 2 6 6 4 1 0 0 0 2 1 0 0 2 0 1 0 0 0 0 1 3 7 7 5 : Obsérvese que es idéntica a L1 salvo por lo que respecta al signo de los coeficientes de la primera columna debajo de la diagonal principal. Etapa 2 – Hagamos cero los elementos debajo de la diagonal principal de la 2a columna de bA1. – Al intentar hacerlo observamos que el elemento pivote Oa1 22 es cero, lo que nos impide proceder como en la etapa anterior.
  • 28. 28/118 – Comprobemos en este caso si algún elemento de la columna 2 por debajo de Oa1 22 es distinto de cero: Si no hay ninguno, esta columna es combinación lineal de la primera y por tanto la matriz es singular. Si hay varios, escojamos el de mayor valor absoluto e intercambiemos la fila de ese elemento con la segunda. – En el ejemplo, el elemento de mayor valor absoluto debajo de la diagonal principal en la segunda columna, 3, se encuentra en la fila 4. Intercambiamos esa fila 4 con la 2. Se obtendrá bA0 1 D 2 6 6 6 6 4 2 1 0 4 2 0 3 12 1 2 0 1 2 0 2 0 0 3 1 5 3 7 7 7 7 5 :
  • 29. 29/118 – Esto mismo se obtiene premultiplicando bA1 por la permutación P1 D 2 6 6 4 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 3 7 7 5 : – Recapitulemos: la matriz con la que vamos a operar a continuación, bA0 1, es: bA0 1 D P1L1 c A: – Apliquemos a continuación a la columna 2 la misma idea que a la columna 1 y hagamos cero sus elementos 3 a n.
  • 30. 30/118 – Los nuevos multiplicadores saldrán de la expresión ri D Oa10 i2 Oa10 22 ; i D 3; 4: – Los nuevos valores de los elementos de la matriz bA0 1 por debajo de 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:
  • 31. 31/118 – Los nuevos elementos de la matriz bA0 1 resultante: en la 3a fila: Oa10 32 0 Oa10 33 Oa10 33 r3 Oa10 23 D 2 C 1 3 12 D 2 Oa10 34 Oa10 34 r3 Oa10 24 D 0 C 1 3 1 D 1=3 Oa10 35 Oa10 35 r3 Oa10 25 D 2 1 3 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 cuarta fila podrían haberse evitado.
  • 32. 32/118 – La nueva matriz resultado de estas transformaciones es bA2 D 2 6 6 6 4 2 1 0 4 2 0 3 12 1 2 0 0 2 1=3 8=3 0 0 3 1 5 3 7 7 7 5 ; matriz que se expresa a partir de la inicial como bA2 D L2P1L1 cA; donde L2 D 2 6 4 1 0 0 0 0 1 0 0 0 1=3 1 0 0 0 0 1 3 7 5 :
  • 33. 33/118 Etapa 3 – Para conseguir transformar el sistema original en uno triangular superior sólo resta anular el elemento Oa2 43. – El elemento de la diagonal principal Oa2 33 es distinto de cero, luego procedemos a calcular el multiplicador r4: r4 D Oa2 43=Oa2 33 D 3=2: – Los nuevos valores de los elementos de la matriz bA2 por debajo de la tercera fila se obtendrán aplicando la expresión Oa2 ij Oa2 ij ri Oa2 3j ; i D 4I j D 4; 5:
  • 34. 34/118 – En concreto, en la cuarta fila: Oa2 43 0 Oa2 44 Oa2 44 r4 Oa2 34 D 1 3 2 1 3 D 1=2 Oa2 45 Oa2 45 r4 Oa2 35 D 5 C 3 2 8 3 D 1: – La nueva matriz resultado de estas transformaciones es bA3 D 2 6 6 6 6 4 2 1 0 4 2 0 3 12 1 2 0 0 2 1=3 8=3 0 0 0 1=2 1 3 7 7 7 7 5 :
  • 35. 35/118 – A este resultado se ha llegado después de aplicar a la matriz inicial bA una serie de transformaciones; concretamente: bA3 D L3L2P1L1 cA; donde L3 D 2 6 6 6 4 1 0 0 0 0 1 0 0 0 0 1 0 0 0 3=2 1 3 7 7 7 5 : – En conclusión, la matriz original que definía el sistema, A, se puede transformar en la triangular superior U aplicándole las mismas transformaciones que a bA. Es decir, U D L3L2P1L1A:
  • 36. 36/118 – Como a b también se le han efectuado las mismas transformaciones llegándose a b0 , resolver el sistema de ecuaciones original es equivalente a resolver U x D b0 : – En el ejemplo, 2 6 6 6 6 4 2 1 0 4 0 3 12 1 0 0 2 1=3 0 0 0 1=2 3 7 7 7 7 5 2 6 6 6 6 4 x1 x2 x3 x4 3 7 7 7 7 5 D 2 6 6 6 6 4 2 2 8=3 1 3 7 7 7 7 5 : – La solución se lleva a cabo mediante sustitución inversa.
  • 37. 37/118 x4 D 2; sustituyendo en la tercera ecuación, x3 D 8=3 . 2/.1=3/ 2 D 1; y, a su vez, haciéndolo en la segunda, x2 D 2 . 1/. 2/ . 12/. 1/ 3 D 4: – Por último, sustituyendo los valores de las variables ya calculados en la primera ecuación se obtiene x1 D 2 4. 2/ 1.4/ 2 D 3:
  • 38. 38/118 – La solución de nuestro ejemplo es pues 2 6 6 6 6 6 6 4 x1 x2 x3 x4 3 7 7 7 7 7 7 5 D 2 6 6 6 6 6 6 4 3 4 1 2 3 7 7 7 7 7 7 5 : u
  • 39. 39/118 Pivotación – Veamos qué ocurre si resolvemos con el procedimiento estudiado Ä 10 4 1 1 1 „ ƒ‚ … A Ä x1 x2„ƒ‚… x D Ä 1 2 „ƒ‚… b ; en una máquina con tres dígitos significativos que efectúe redondeos. – Aplicando la mecánica apuntada, en la primera etapa se obtendrí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 :
  • 40. 40/118 – El número 1 104 D 9999, la máquina lo redondearía a 104 ; de la misma forma procedería con 2 104 . La solución del sistema sería x2 D 104 104 D 1 x1 D 1 x2 10 4 D 0; muy distinta de la real Œ0;99989999; 1;00010001T . – La elección del pivote busca que los multiplicadores no sean en magnitud mucho mayores que 1 con el fin de tener en cuenta los errores de redondeo y la estabilidad numérica del procedimiento, Es por esto por lo que se escoge el de mayor magnitud de entre los debajo de la diagonal principal.
  • 41. 41/118 – Para el caso de este último ejemplo, en la primera etapa, en lugar de operar sobre la matriz anterior, como el valor absoluto del elemento a21 es mayor que el del a11, se intercambiaría la fila 1 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 primera etapa, se llegará a A0 1 D Ä 1 1 0 1 10 4 y b0 1 D Ä 2 1 2 10 4 : Por redondeos internos, la máquina representaría A0 1 D Ä 1 1 0 1 y b0 1 D Ä 2 1 :
  • 42. 42/118 – La la solución de este sistema de ecuaciones sería Ä x1 x2 D Ä 1 1 : Solución mucho mejor que la anterior, pues la real es x2 D 0,9998 0,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 que trabajan todos los ordenadores y en el hecho de que los factores o multiplicadores antes introducidos son inversamente proporcionales al elemento pivote: si éste es demasiado pequeño puede amplificar los errores de redondeo a lo largo del proceso de solución.
  • 43. 43/118 – Una segunda estrategia de pivotación es la conocida como pivotación total. – Consiste en buscar en una etapa i no sólo el elemento de mayor valor absoluto en la columna correspondiente, sino en todo lo que 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 in forward elimination. Rows to search for a more favorable pivot element. 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 Pivotación parcial Full Pivoting 0 * Rows c forwar Columns to search for a more favorable pivot element. Row Row more elem * Pivotación total – La pivotación total proporciona la estrategia óptima para minimizar errores de redondeo.
  • 44. 44/118 – Desde un punto de vista teórico, la eliminación de Gauss con pivotación total es, en general, un algoritmo numéricamente estable. – En la práctica, la pivotación parcial produce buenos resultados y excelentes prestaciones numéricas por lo que rara vez se usa la total.
  • 45. 45/118 Algoritmo Transformación de la Matriz Aumentada ŒAjb for i D 1 to n 1 Determinar índice p 2 fi; i C 1; : : : ; ng tal que ja.p; i/j D mKaxiÄjÄn ja.j; i/j. Intercambiar filas p e i. for j D i C 1 to n Á D a.j; i/=a.i; i/ for k D i C 1 to n C 1 a.j; k/ a.j; k/ Á a.i; k/ end end end Sustitución Inversa. for j D n to 1 x.j/ 0 @b.j/ nX kDjC1 a.j; k/ x.k/ 1 A a.j; j/ end
  • 46. 46/118 – En código Matlab para cualquier sistema. function [x]=Gauss(A,b) % Solución de Ax=b mediante eliminación de Gauss n=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]); end j=i+1:n; A(j,i)=A(j,i)/A(i,i); A(j,j)=A(j,j)-A(j,i)*A(i,j); b(j)=b(j)-b(i)*A(j,i); end for i=n:-1:1 % Sustitución inversa x(i)=(b(i)-A(i,i+1:n)*x(i+1:n))/A(i,i); end
  • 47. 47/118 – De esta codificación conviene destacar dos elementos mejorables. No es realmente necesario intercambiar las filas una vez elegido el elemento pivote de cada etapa; basta con tener constancia en cada momento dónde están las filas que se intercambian. Tal como está estructurado el programa sólo se podría resolver un sistema —el definido por el b dado— y no, como es lo más habitual, distintos sistemas con la misma matriz A y diversos términos independientes.
  • 48. 48/118 – El primero se puede paliar mediante la introducción de vector índice, IPIV, de dimensión el número de ecuaciones, inicializado a la posición inicial en el sistema de cada una de las ecuaciones; es decir, IPIV D 2 6 6 6 6 6 4 1 2 3 ::: n 3 7 7 7 7 7 5 : – Cuando haya que intercambiar dos filas en un etapa, no se hará intercambiando físicamente los elementos de esas dos filas, sino haciéndolo en las correspondientes de IPIV.
  • 49. 49/118 – Si por ejemplo, en la primera etapa hay que utilizar como pivote un elemento de la cuarta fila, una vez efectuado el cambio, el vector IPIV quedará: IPIV D 2 6 6 6 6 6 6 6 4 4 2 3 1 ::: n 3 7 7 7 7 7 7 7 5 : – Si al final de un proceso de resolución de un sistema de cinco ecuaciones con cinco incógnitas, el vector puntero resultase IPIV D 2 6 6 6 6 6 4 4 2 5 1 3 3 7 7 7 7 7 5 ;
  • 50. 50/118 la matriz A0 que se obtendría no resultaría ser estrictamente triangular superior. Tendría la forma que sigue. – Para resolver el sistema que define Ax D b habría que aplicar esas mismas manipulaciones de filas al vector b o tenerlo en cuenta.
  • 51. 51/118 – Para evitar el segundo inconveniente, habría que guardar adecuadamente la información que definen los multiplicadores asociados a cada fila de cada etapa. Los i 1 multiplicadores se pueden guardar en los lugares vacíos —o mejor dicho, que se hacen cero— que provocan las transformaciones que definen: en la etapa i, debajo de la diagonal principal en la columna i. En el ejemplo, con esta idea, al final del proceso la matriz A sería: A D 2 6 6 6 4 2 1 0 4 2 3 12 1 2 1=3 2 1=3 0 0 3=2 1=2 3 7 7 7 5 : Los multiplicadores distintos de cero que se han calculado en todo el proceso son -2, 2, 1/3 y 3/2.
  • 52. 52/118 Número de operaciones del método – Dos de los factores más importantes que influyen en las prestaciones de un algoritmo son: Su estabilidad numérica ante los diversos errores. La cantidad de tiempo necesaria para completar los cálculos que conlleva. – Ambos factores dependen del número de operaciones aritméticas necesarias para la aplicación del algoritmo. – Los tiempos necesarios para realizar en un ordenador la multiplicación y la división de dos números son aproximadamente iguales y considerablemente mayores, en términos relativos, que los requeridos para realizar la suma o diferencia, que también son muy semejantes entre sí.
  • 53. 53/118 – La eliminación de Gauss para resolver un sistema de ecuaciones lineales, en la primera etapa, realiza las operaciones que se representan 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 ven afectados en esa etapa y que, en principio, son distintos de cero.
  • 54. 54/118 – Si en la etapa i se está transformando una matriz n n, las operaciones que en ella se realizan son: n i divisiones para el cálculo de los multiplica- dores; .n i/.n i C 1/ multiplicaciones y restas para modificar los elementos de la matriz por debajo de la fila i 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.
  • 55. 55/118 – En n 1 etapas de que consta el proceso, se harán n 1X iD1 .n i/.n i C 2/ D .n2 C 2n/ n 1X iD1 1 2.n C 1/ n 1X iD1 i C n 1X iD1 i2 D .n2 C 2n/.n 1/ 2.n C 1/ .n 1/n 2 C .n 1/n.2n 1/ 6 D 2n3 C 3n2 5n 6 multiplicaciones y divisiones y n 1X iD1 .n i/.n i C 1/ D .n2 C n/ n 1X iD1 1 .2n C 1/ n 1X iD1 i C n 1X iD1 i2 D .n2 C n/.n 1/ .2n C 1/ .n 1/n 2 C .n 1/n.2n 1/ 6 D n3 n 3 sumas y restas.
  • 56. 56/118 – El comportamiento de estos valores para n grande tiende a 1 3 n3. – El proceso de sustitución inversa requiere .n i/ multiplicaciones y .n i 1/ sumas, para cada término del sumatorio, y una resta y una división. El número total de operaciones de todo el proceso es 1 C n 1X iD1 ..n i/ C 1/ D n2 C n 2 multiplicaciones y divisiones y n 1X iD1 ..n i 1/ C 1/ D n2 n 2 sumas y restas.
  • 57. 57/118 – Contando la totalidad de la transformación de la matriz del sistema y la sustitución inversa, la eliminación de Gauss requiere 2n3 C 3n2 5n 6 C n2 C n 2 D n3 C 2n2 n 3 multiplicaciones y divisiones y n3 n 3 C n2 n 2 D 2n3 C 3n2 5n 6 sumas y restas. – El comportamiento de estas expresiones para valores grandes de n es como 1 3 n3 lo que da idea de la importante magnitud del número de operaciones.
  • 58. 58/118 – Aunque la cantidad n3 =3 puede parecer muy grande, recordemos las fórmulas de Cramer para la solución de sistemas: xi D det.Bi/ det.A/ ; donde Bi D 2 6 6 6 4 a11 a1i 1 b1 a1iC1 a1n a21 a2i 1 b2 a2iC1 a2n ::: ::: ::: ::: ::: an1 ani 1 bn aniC1 ann 3 7 7 7 5 : Mediante estas fórmulas se requieren: 8 < : .n C 1/Š sumas, .n C 2/Š multiplicaciones y n 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.
  • 59. 59/118 Método de Gauss-Jordan – Es una extensión natural de la eliminación de Gauss que consiste en eliminar de cada columna de la matriz de coeficientes del sistema no sólo los elementos no nulos que están debajo de la diagonal sino también los que están encima. – Una etapa i de la eliminación de Gauss estaba caracterizada por la matriz Li D I ˛ieT i ; donde ˛i D 2 6 6 6 6 6 4 0 ::: ai iC1 i=ai ii ::: ai ni=ai ii 3 7 7 7 7 7 5 fila i C 1 y ei D 2 6 6 6 6 6 4 0 ::: 1 ::: 0 3 7 7 7 7 7 5 fila i :
  • 60. 60/118 – En la etapa i de este método, la matriz de transformación de Gauss-Jordan es la dada por T i D I ˛ieT i ; donde ˛i D 2 6 6 6 6 6 4 ai 1i=ai ii ::: 1=ai ii ::: ai ni=ai ii 3 7 7 7 7 7 5 fila i y ei D 2 6 6 6 6 6 4 0 ::: 1 ::: 0 3 7 7 7 7 7 5 fila i : – Si se tiene en cuenta que A0 D 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/ .
  • 61. 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
  • 62. 62/118 Matlab y los sistemas de ecuaciones lineales – 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]; >> Ab ans = 3.0000 4.0000 -1.0000 -2.0000
  • 63. 63/118 – Utilizando el script Gauss que hemos presentado: >> Gauss(A,b) ans = 3.0000 4.0000 -1.0000 -2.0000
  • 64. 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
  • 65. 65/118 Factorización LU – El cálculo de A D LU se conoce como factorización o descomposición LU . Para resolver un sistema de ecuaciones lineales Ax D b, si A D LU , el problema se convierte en el de resolver LU x D b a través de dos sistemas de ecuaciones triangulares: U x D y y Ly D b: Esto es muy útil cuando se requiere resolver sistemas de ecuaciones en los que la matriz A es siempre la misma y sólo cambia es el término independiente.
  • 66. 66/118 La factorización LU y la eliminación de Gauss – Una forma indirecta de conseguir esta factorización LU es la propia eliminación de Gauss. En efecto, mediante unas permutaciones y unas transformaciones definidas por matrices elementales triangulares inferiores el método conseguía: Ln 1Pn 1 L1P1A D U : De este proceso, haciendo P D Pn 1 P1 y L D P.Ln 1Pn 1 L2P2L1P1/ 1 ; se puede comprobar que se obtiene la factorización PA D LU :
  • 67. 67/118 Existencia y unicidad de la factorización LU Teorema. Sea A una matriz cuadrada regular de orden n. Existe una matriz de permutación P y dos matrices, una triangular inferior y otra triangular superior, L y U , respectivamente, tales que PA D LU : La matriz L tiene todos los elementos de la diagonal principal igual a 1 (triangular inferior unitaria). Lema. La matriz A admite una factorización LU si y sólo si se cumple 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.
  • 68. 68/118 Métodos numéricos directos para la obtención de factorizaciones LU Método de Crout. Versión LU 1 – Supongamos que se desea obtener la factorización en la forma LU 1, donde U 1 designa una matriz triangular superior en la que todos los elementos de la diagonal principal son 1.
  • 69. 69/118 – Si la matriz A es de orden 3 y se quiere factorizarla de la forma 2 4 a11 a12 a13 a21 a22 a23 a31 a32 a33 3 5 D 2 4 l11 0 0 l21 l22 0 l31 l32 l33 3 5 2 4 1 u12 u13 0 1 u23 0 0 1 3 5 ; usando las reglas de multiplicación de matrices se obtendrá: 1a col. de L: l11 D a11 l21 D a21 l31 D a31I 2a fila de U : l11u12 D a12 l11u13 D a13 ! u1j D a1j =l11; j D 2; 3I 2a col. de L: l21u12 C l22 D a22 l31u12 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 1X j D1 lij uji; i D 3:
  • 70. 70/118 – En general, las fórmulas de recurrencia que se pueden deducir de este 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 1X pD1 lipupk; i k; ukj D 0 @akj k 1X pD1 lkpupj 1 A lkk; j > k:
  • 71. 71/118 – Plasmadas en el algoritmo de Crout para factorizar una matriz regular An n en la forma LU 1 resulta el de la tabla. for k D 1 to n for i D k to n l.i; k/ a.i; k/ k 1X pD1 l.i; p/u.p; k/ end for i D k C 1 to n u.k; i/ 0 @a.k; i/ k 1X pD1 l.k; p/u.p; i/ 1 A l.k; k/ end end
  • 72. 72/118 – La versión Matlab de este algoritmo es la que sigue. function [L U]=LUCrout(a) % Factorización LU por Crout n=size(a,1); L=zeros(n); U=eye(n); for k=1:n for i=k:n L(i,k)=a(i,k)-L(i,1:k-1)*U(1:k-1,k); end for i=k+1:n U(k,i)=(a(k,i)-L(k,1:k-1)*U(1:k-1,i))/L(k,k); end end
  • 73. 73/118 – Ahora bien, como apuntábamos en la eliminación de Gauss, se puede aprovechar la estructura de la matriz A para guardar en ella las nuevas matrices L y U . El mismo algoritmo quedaría así. function [L U]=Crout_1(A) % Factorización LU por Crout n=size(A,1); for k=1:n i=k:n; A(i,k)=A(i,k)-A(i,1:k-1)*A(1:k-1,k); i=k+1:n; A(k,i)=(A(k,i)-A(k,1:k-1)*A(1:k-1,i))/A(k,k); end L=tril(A,0); U=triu(A,1)+eye(n,n);
  • 74. 74/118 – Factorizar 2 4 10 10 20 20 25 40 30 50 61 3 5 da como resultado LU D 2 4 10 20 5 30 20 1 3 5 2 4 1 1 2 1 0 1 3 5 : >> A=[10 10 20;20 25 40;30 50 61]; >> [L,U]=Crout_1(A) L = 10 0 0 20 5 0 30 20 1 U = 1 1 2 0 1 0 0 0 1 >>
  • 75. 75/118 Ejemplo – Se desea factorizar la matriz A D 2 4 0,001 2,000 3,000 -1,000 3,712 4,623 -2,000 1,072 5,643 3 5 en una máquina u ordenador con cuatro dígitos significativos.
  • 76. 76/118 – Las operaciones que se realizan en la máquina son: l11 D 0,001I l21 D -1,000I l31 D -2,000I u12 D f l  2,000 0,001 à D 2000I u13 D f l  3,000 0,001 à D 3000I l22 D f l Œ3,712 C .1,000/.2000/ D 2004I l32 D f l Œ1,072 C .2,000/.2000/ D 4001I u23 D f l  4,623 C .1,000/.3000/ 2004 à D 1,500 y l33 D f lŒ5,643 C (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ígitos por redondeo: el valor que debería obtenerse es 5,922.
  • 77. 77/118 Pivotación – El ejemplo pone de manifiesto que, aunque se sepa que una matriz no es singular y que su factorización LU existe teóricamente, los errores de redondeo que se pueden producir al trabajar en una máquina pueden dar al traste con el resultado. – Es aconsejable realizar pivotación. Al final de un proceso con pivotación se obtendría PA D LU es decir, no la factorización LU de la matriz original sino de PA.
  • 78. 78/118 – El algoritmo de Crout con pivotación parcial es el de la tabla for k D 1 to n for i D k to n l.i; k/ a.i; k/ k 1X pD1 l.i; p/u.p; k/ end Determinar índice p 2 fk; k C 1; : : : ; ng tal que ja.p; i/j D mKaxiÄj Än ja.j; i/j. Intercambiar filas p y k. for i D k C 1 to n u.k; i/ 0 @a.k; i/ k 1X pD1 l.k; p/u.p; i/ 1 A l.k; k/ end end function [L U p]=CroutP(a) % Factorización LU por Crout con pivotación n=size(a,1); p=1:n; for k=1:n i=k:n; a(i,k)=a(i,k)-a(i,1:k-1)*a(1:k-1,k); [r,m]=max(abs(a(k:n,k))); m=m+k-1; if a(m,k)==0, continue, end if k~=m, a([k m],:)=a([m k],:); p([k m])=p([m k]); end i=k+1:n; a(k,i)=(a(k,i)-a(k,1:k-1)*a(1:k-1,i))/a(k,k); end L=tril(a,0); U=triu(a,1)+eye(n,n);
  • 79. 79/118 – Si se factoriza la matriz 2 4 10 10 20 20 25 40 30 50 61 3 5 ; al final de este proceso, el vector IPVT. /, que indica las pivotaciones realizadas, es Œ3, 2, 1T . >> A=[10 10 20;20 25 40;30 50 61]; >> [L U p]=CroutP(A) L = 30.0000 0 0 20.0000 -8.3333 0 10.0000 -6.6667 0.2000 U = 1.0000 1.6667 2.0333 0 1.0000 0.0800 p = 3 2 1 >>
  • 80. 80/118 – La matriz PA realmente factorizada es 2 6 4 30 50 61 20 25 40 10 10 20 3 7 5 D 2 6 4 30 20 8;3333 10 6;6667 0; 2 3 7 5 2 6 4 1 1;6667 2;0333 1 0;0800 1 3 7 5 : – El algoritmo de Crout requiere O.n3 =3/ multiplicaciones/divisiones y sumas/restas para la factorización de la matriz.
  • 81. 81/118 Método de Crout. Versión L1U – Si se quiere conseguir la factorización L1U de una matriz 3 3, 2 4 a11 a12 a13 a21 a22 a23 a31 a32 a33 3 5 D 2 4 1 0 0 l21 1 0 l31 l32 1 3 5 2 4 u11 u12 u13 0 u22 u23 0 0 u33 3 5 ; operando: 1a fila de U : u11 D a11 u12 D a12 u13 D a13I 1a col. de L: l21u11 D a21 l31u11 D a31 ! li1 D ai1=u11; i D 2; 3I 2a fila de U : l21u12 C u22 D a22 l21u13 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 1 X iD1 l3iuij ; j D
  • 82. 82/118 – Las fórmulas de recurrencia que se pueden deducir de este proceso son: u1j D a1j ; j D 1; 2; : : : ; n; li1 D ai1=u11; j > 1; ukj D akj k 1X pD1 lkpupj ; j k; lik D 0 @aik k 1X pD1 lipupk 1 A ukk; i > k:
  • 83. 83/118 – El algoritmo de Crout para factorizar una matriz regular An n en la forma L1U es el que sigue. for k D 1 to n for j D k to n u.k; j/ a.k; j/ k 1X pD1 l.k; p/u.p; j/ end for i D k C 1 to n l.i; k/ 0 @a.i; k/ k 1X pD1 l.i; p/u.p; k/ 1 A u.k; k/ end end
  • 84. 84/118 – Su implementación en Matlab: function [L,U]=Croutl1u(a) % Factorización L1U por Crout n=size(a,1); for k=1:n-1 i=k+1:n; a(i,k)=a(i,k)/a(k,k); a(i,i)=a(i,i)-a(i,k)*a(k,i); end L=tril(a,-1)+eye(n,n); U=triu(a); El resultado con la matriz precedente es: >> [L U]=Croutl1u(A) L = 1 0 0 2 1 0 3 4 1 U = 10 10 20 0 5 0 0 0 1 >> L*U ans = 10 10 20 20 25 40 30 50 61
  • 85. 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ón n=size(a,1); p=1:n; for k=1:n-1 [r,m]=max(abs(a(k:n,k))); m=m+k-1; if a(m,k)==0, continue, end if k~=m, a([k m],:)=a([m k],:); p([k m])=p([m k]); end i=k+1:n; a(i,k)=a(i,k)/a(k,k); j=k+1:n; a(i,j)=a(i,j)-a(i,k)*a(k,j); end L=tril(a,-1)+eye(n,n); U=triu(a);
  • 86. 86/118 – El resultado con este script para el último ejemplo: >> [L U p]=CroutP1(A) L = 1.0000 0 0 0.6667 1.0000 0 0.3333 0.8000 1.0000 U = 30.0000 50.0000 61.0000 0 -8.3333 -0.6667 0 0 0.2000 p = 3 2 1 >> L(p,:)*U ans = 10 10 20 20 25 40 30 50 61
  • 87. 87/118 – Con los recursos de Matlab: >> [L U P]=lu(A) L = 1.0000 0 0 0.6667 1.0000 0 0.3333 0.8000 1.0000 U = 30.0000 50.0000 61.0000 0 -8.3333 -0.6667 0 0 0.2000 P = 0 0 1 0 1 0 1 0 0 >> P*L*U ans = 10 10 20 20 25 40 30 50 61
  • 88. 88/118 Matlab y la factorización LU – Como acabamos de ver, para resolver un sistema lineal de ecuaciones Ax D b con Matlab, mediante la factorización LU , sólo hay que utilizar [L U P]=lu(A), obteniéndose la solución del sistema original haciendo x=U(L(P’*b))
  • 89. 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 0 0 1.0000 0 0 0 0 1.0000 0 0 0.3333 0.6667 1.0000 U = 2.0000 1.0000 0 4.0000 0 -3.0000 -12.0000 -1.0000 0 0 3.0000 1.0000 0 0 0 -0.3333 P = 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 >> x=U(L(P’*b)) x = 3.0000 4.0000 -1.0000 -2.0000
  • 90. 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
  • 91. 91/118 Solución de sistemas modificados – Si en un sistema Ax D b se modifica el vector b pero no la matriz, no es necesario rehacer la factorización LU para resolver el nuevo sistema. – Si se modifica ligeramente la matriz A, por ejemplo el elemento (j; k), con lo que A D A ˛ej eT k , puede que no sea necesario tampoco recalcular la factorización en su totalidad. La fórmula de Sherman-Morrison-Woodbury proporciona la inversa de una matriz en términos de los vectores de una modificación de rango uno –uvT – a la misma: A uvT Á 1 D A 1 C A 1u 1 vT A 1u Á 1 vT A 1:
  • 92. 92/118 – Para resolver el nuevo sistema .A uvT /x D b, usando la fórmula, se obtendría x D A uvT Á 1 b D A 1b C A 1u 1 vT A 1u Á 1 vT A 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 ..vT y/=.1 vT z//z. – Como A ya está factorizada, este procedimiento requiere solo sustituciones inversas y productos interiores; es decir O.n2 / operaciones frente a las O.n3 =3/ de la factorización.
  • 93. 93/118 Ejemplo – Consideremos la matriz A D 2 4 2 4 2 4 9 3 2 3 7 3 5 D 2 4 1 0 0 2 1 0 1 1 1 3 5 „ ƒ‚ … L 2 4 2 4 2 0 1 1 0 0 4 3 5 „ ƒ‚ … U a la que se le efectúa una modificación consistente en cambiar el coeficiente (3,2) por un -1. – En este caso u D 2 4 0 0 2 3 5 y v D 2 4 0 1 0 3 5 ; con lo que la matriz resultante es A uvT .
  • 94. 94/118 – Con la factorización LU de A, se resuelve Az D u y Ay D b, dando z D 2 4 3=2 1=2 1=2 3 5 y y D 2 4 1 2 2 3 5 : – Por último, x D y C vT y 1 vT z z D 2 4 1 2 2 3 5 C 2 1 1=2 2 4 3=2 1=2 1=2 3 5 D 2 4 7 4 0 3 5 : u
  • 95. 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
  • 96. 96/118 Refinamiento iterativo – Si se tiene una solución x0 del sistema de ecuaciones lineales Ax D b, el vector de residuos es r0 D b Ax0: – Si este vector no cumple unos requisitos de precisión que nos interesen, se pude resolver el sistema Az0 D r0 y hacer x1 D x0 C z0: – Esta nueva solución será mejor que la anterior pues Ax1 D A.x0 C z0/ D Ax0 C Az0 D .b r0/ C r0 D b:
  • 97. 97/118 – Esta forma de actuar sugiere seguir iterando hasta conseguir que la solución se aproxime tanto como se quiera a la esperada, teniendo en cuenta, claro, los estándares de precisión de la máquina donde se esté trabajando. % Script de Refinamiento Iterativo n=6; format short A=hilb(n); % Matriz de Hilbert (muy mal condicionada) b=A*ones(n,1); % Elegimos término independiente para sol. x=1. pause x=Ab % Solución, evidentemente, =1 B=A; % En B está A perturbada un poquito B(6,1)=B(6,1)+1.e-06; pause x1=Bb % Veamos la nueva solución; difiere bastante pause xex=ones(n,1); % Calculemos cuánto norm(xex-x1,2) % Como magnitud calculemos la norma 2 de la desviaci. norm(xex-x,2) pause
  • 98. 98/118 res=b-A*x1; % Hagamos una iteración del Refinamiento iterativo x1=x1+Bres norm(xex-x1,2) pause res=b-A*x1; % Hagamos otra iteración del Refinamiento iterativo format long x1=x1+Bres norm(xex-x1,2) pause res=b-A*x1; % Hagamos otra iteración del Refinamiento iterativo x1=x1+Bres norm(xex-x1,2)
  • 99. 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
  • 100. 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 LDMT . Teorema. Si A admite una factorización LDMT y es simétrica, L D M.
  • 101. 101/118 – Para derivar unas fórmulas de recurrencia, a partir de un ejemplo simbólico de orden 3, 2 4 a11 a12 a13 a21 a22 a23 a31 a32 a33 3 5 D 2 4 1 0 0 l21 1 0 l31 l32 1 3 5 2 4 d11 d22 d33 3 5 2 4 1 l21 l31 0 1 l32 0 0 1 3 5 ; operando de acuerdo con las reglas de multiplicación matricial se obtiene que a11 D d11 a21 D l21d11 a31 D l31d11 a22 D l2 21d11 C d22 a32 D l31l21d11 C l32d22 a33 D l2 31d11 C l2 32d22 C d33:
  • 102. 102/118 – Generalizando se obtiene el algoritmo de la tabla. for k D 1 to n d.k/ a.k; k/ k 1X pD1 a2 .k; p/d.p/ if d.k/ D 0 then stop for i D k C 1 to n a.i; k/ 0 @a.i; k/ k 1X pD1 a.i; p/a.k; p/d.p/ 1 A d.k/ end end – Requiere O.n3 =6/ multiplicaciones y divisiones y sumas y restas. – Si no se efectúan pivotaciones, los métodos expuestos hasta ahora para factorizar una matriz pueden fallar por la posible presencia de elementos pivote muy pequeños, o por la acumulación de errores de redondeo importantes.
  • 103. 103/118 Factorización de Cholesky – Recordemos que una matriz se dice definida positiva, si para todo x ¤ 0 se cumple que xT Ax > 0: Todos los valores propios de una matriz definida positiva son positivos. – Las matrices simétricas definidas positivas admiten una descomposición de la forma A D GT G; 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.
  • 104. 104/118 – Las matrices simétricas definidas positivas se presentan habitualmente en: Problemas relacionados con el análisis de sistemas eléctricos de 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 un sistema, la expresión xT Ax mide la energía presente o disponible en un entorno determinado: esta energía habitualmente es una cantidad positiva.
  • 105. 105/118 Lema. Las submatrices principales de una matriz definida positiva son definidas positivas. Teorema. Si A es una matriz definida positiva de orden n, tiene una descomposición de la forma LDMT , siendo todos los elementos de la matriz diagonal D positivos. Teorema. Si A es una matriz simétrica definida positiva de orden n, existe una única matriz triangular superior, G, con todos sus elementos diagonales positivos, tal que A D GT G.
  • 106. 106/118 – Para determinar el algoritmo de descomposición de Cholesky de una forma directa, procedamos a simularlo con la descomposición simbólica de una matriz 3 3. – Si se desea obtener la factorización 2 4 a11 a12 a13 a12 a22 a23 a13 a23 a33 3 5 D 2 4 g11 0 0 g12 g22 0 g13 g23 g33 3 5 2 4 g11 g12 g13 0 g22 g23 0 0 g33 3 5 ; operando de acuerdo con las reglas de multiplicación matricial se obtiene que: a11 D g2 11 a12 D g11g12 a13 D g11g13 a22 D g2 12 C g2 22 a23 D g12g13 C g22g23 a33 D g2 13 C g2 23 C g2 33:
  • 107. 107/118 – Generalizando este proceso se obtiene el algoritmo que describe la tabla. for i D 1 to n g.i; i/ v u u u ta.i; i/ i 1X kD1 g2 .k; i/ for j D i C 1 to n g.i; j/ 0 B @a.i; j/ i 1i kD1 g.k; i/g.k; j/ 1 C A g.i; i/ end end – El algoritmo requiere O.n3 =6/ operaciones de multiplicación+división y de suma+resta.
  • 108. 108/118 – Este algoritmo en Matlab sería como sigue. function G=Chols_1(A) % Factorización de Cholesky n=size(A,1); for i=1:n, j=i+1:n; A(i,i)=sqrt(A(i,i)); A(i,j)=A(i,j)/A(i,i); A(j,j)=A(j,j)-A(i,j)’*A(i,j); end G=triu(A);
  • 109. 109/118 – La factorización de 2 6 6 6 4 5 1 2 0 1 2 0 0 2 0 4 1 0 0 1 3 3 7 7 7 5 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 0 0 1.3416 0.2981 0 0 0 1.7638 0.5669 0 0 0 1.6366 >> G=chol(A) G = 2.2361 0.4472 -0.8944 0 0 1.3416 0.2981 0 0 0 1.7638 0.5669 0 0 0 1.6366 >>
  • 110. 110/118 Matlab y la factorización de Cholesky – Para resolver un sistema lineal de ecuaciones Ax D b con Matlab utilizando la factorización de Cholesky hay que utilizar la función G=chol(A). – La solución del sistema correspondiente se puede obtener, teniendo en cuenta que se realiza A D GT G, haciendo x=G(G’b)
  • 111. 111/118 – Para utilizar esta operación con un ejemplo de los que estamos manejando, 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 0 0 1.3416 0.2981 0 0 0 1.7638 0.5669 0 0 0 1.6366 >> x=G(G’b) x = 1.0000 2.0000 3.0000 4.0000
  • 112. 112/118 Matrices simétricas semidefinidas positivas – Una matriz A se dice semidefinida positiva, si para todo x ¤ 0, xT Ax 0. Teorema. Si A 2 Rn n es simétrica semidefinida positiva, se cumple jaij j Ä .aii C ajj /=2 jaij j Ä p aiiajj .i ¤ j/ mKax i;j jaij j D mKax i aii aii D 0 ) aij D aji D 0; j D 1; : : : ; n: – Si el algoritmo de Cholesky se aplica a una matriz semidefinida positiva, y en un paso akk es cero, entonces 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 los ceros exactos por lo que se recurre a la pivotación.
  • 113. 113/118 Pivotación – Para mantener la simetría, las pivotaciones han de ser simétricas: si se intercambian dos filas, también hay que intercambiar 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 factorizar sería nula y no se haría nada más.
  • 114. 114/118 – Este es el algoritmo de Cholesky con pivotación para matrices semidefinidas positivas. for i D 1 to n Determinar índice p 2 fi; i C 1; ng tal que ja.p; p/j D mKaxiÄj Änfja.j; j/jg if a.p; p/ > 0 Intercambiar filas/columnas p y i. g.i; i/ s a.i; i/ i 1X kD1 g2 .k; i/ for j D i C 1 to n g.i; j/ 0 B B @a.i; j/ i 1i kD1 g.k; i/g.k; j/ 1 C C A g.i; i/ end end end
  • 115. 115/118 Matrices simétricas indefinidas – Una matriz A se dice indefinida si para algún vector x ¤ 0 la forma cuadrática xT Ax es positiva y para otros negativa. – Para factorizar este tipo de matrices se recurre a descomposiciones de pivotación diagonal en bloques de la forma PAPT D LBLT donde la matriz L es triangular inferior unitaria y la matriz B es tridiagonal, o diagonal en bloques, con bloques de dimensión 1 1 ó 2 2, bidiagonal en este caso. – Casi todos los códigos modernos utilizan alguna variedad de matriz bidiagonal B en bloques, aunque todavía se usan mucho rutinas que implementan algún método en el que esa matriz es tridiagonal (T ).
  • 116. 116/118 – Los métodos más conocidos se citan a continuación. Método Estrategia Operaciones Parlett y Reid PAPT D LT LT O.n3 =3/ Aasen PAPT D LT LT O.n3 =6/ Bunch y Parlett PAPT D LBLT O.n3 =6/ C O.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 el más utilizado y el que emplean los códigos profesionales para factorizar matrices simétricas.
  • 117. 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 end if swap A([m1 m2],:) = A([m2 m1],:); L([m1 m2],:) = L([m2 m1],:); A(:,[m1 m2]) = A(:,[m2 m1]); L(:,[m1 m2]) = L(:,[m2 m1]); pp([m1 m2]) = pp([m2 m1]); end if s == 1 % s = 1 D(k,k) = A(k,k); A(k+1:n,k) = A(k+1:n,k)/A(k,k); L(k+1:n,k) = A(k+1:n,k); i = k+1:n; A(i,i) = A(i,i) - A(i,k)*A(k,i); else % s = 2 E = A(k:k+1,k:k+1); D(k:k+1,k:k+1) = E; C = A(k+2:n,k:k+1); temp = C/E; L(k+2:n,k:k+1) = temp; A(k+2:n,k+2:n) = A(k+2:n,k+2:n) - temp*C’; end if k+s <= n rho = max(rho,max(max(abs(A(k+s:n,k+s:n))))); end else % Nothing to do, lambda=0 s = 1; D(k,k) = A(k,k); end k = k + s; if k == n, D(n,n) = A(n,n); break, end end if nargout >= 3, P = eye(n); P = P(pp,:); end rho = rho/normA;
  • 118. 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.0000 0.1111 0.1429 0.2000 0.3333 1.0000 -1.0000 0.1429 0.2000 0.3333 1.0000 -1.0000 -0.3333 0.2000 0.3333 1.0000 -1.0000 -0.3333 -0.2000 0.3333 1.0000 -1.0000 -0.3333 -0.2000 -0.1429 1.0000 -1.0000 -0.3333 -0.2000 -0.1429 -0.1111 >> cond(A) ans = 2.2185 >> [L D P rho]=diagpiv(A) L = 1.0000 0 0 0 0 0 0 1.0000 0 0 0 0 -0.1760 0.2160 1.0000 0 0 0 -0.3143 0.1714 -1.1905 1.0000 0 0 -0.1048 0.3429 0.2646 -0.6667 1.0000 0 -0.9778 0.2000 -0.6173 0.6222 0 1.0000 D = 0.0909 1.0000 0 0 0 0 1.0000 -0.1111 0 0 0 0 0 0 -0.9216 0 0 0 0 0 0 1.7415 0 0 0 0 0 0 -0.8256 1.9264 0 0 0 0 1.9264 0.1284 P = 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 rho = 1.9264 >> eig(A) ans = -1.5708 -1.5705 -1.4438 0.7080 1.5622 1.5708 >>