118
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 [email protected] [email protected] Escuela Técnica Superior de Ingenieros Industriales Universidad Politécnica de Madrid Clase_sisli_11.pdf

Clase sisli 11

Embed Size (px)

Citation preview

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

1/118

Métodos Matemáticos de Especialidad

Ingeniería Eléctrica

Sistemas de ecuaciones linealesMétodos directos de solución

José Luis de la Fuente O’Connor

[email protected]

[email protected]

Escuela Técnica Superior de Ingenieros Industriales

Universidad Politécnica de Madrid

Clase_sisli_11.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

2/118

Índice

Cuál es el problema; consideraciones teóricas

Eliminación de Gauss

� Pivotación� Algoritmo� Número de operaciones�Método de Gauss-Jordan

Matlab y los sistemas de ecuaciones lineales

Factorización LU

�Métodos explícitos para su obtenciónı Método de Crout

ı Método de Doolittle

�Matlab y la factorización LU

Solución de sistemas modificados

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

3/118

Refinamiento iterativo

Sistemas con matrices especiales

�Matrices simétricası Factorización LDLT

ı Factorización de Cholesky: matrices simétricas definidas positivas

˘ Matlab y la factorización de Cholesky

ı Matrices simétricas semidefinidas positivas

ı Matrices simétricas indefinidas

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

4/118

Cuál es el problema; consideracionesteóricas

– Se trata de dar solución a sistemas de ecuaciones del tipo

a11x1 C a12x2 C � � � C a1nxn D b1a21x1 C a22x2 C � � � C a2nxn D b2::: ::: ::: :::

am1x1 C am2x2 C � � � C amnxn D bm;

lo que significa determinar los valores de las variables x1; : : : ; xnque hacen que se cumplan todas las igualdades.

– A los números aij se les denomina coeficientes del sistema y alos bi términos independientes.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

5/118

– Si se introducen las matrices

A D

26664a11 a12 � � � a1na21 a22 � � � a2n::: ::: :::

am1 am2 � � � amn

37775 ; x D

26664x1x2:::

xn

37775 y b D

26664b1b2:::

xm

37775 ;el sistema se puede representar de forma más compacta por

Ax D b:

– En general se supondrá que la matriz de coeficientes A 2 Rm�n,x 2 Rn y b 2 Rm.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

6/118

– Casos posibles:

· =

m < n

rango(A) = m < n

· =

m < n

rango(A) < m < n

· =m > n

rango(A) = n < m

· =m > n

rango(A) < n < m

· =

m = n

rango(A) = m = n

· =

m = n

rango(A) < m = n

3a 3b

2a 2b

1a 1b

· =

m < n

rango(A) = m < n

· =

m < n

rango(A) < m < n

· =m > n

rango(A) = n < m

· =m > n

rango(A) < n < m

· =

m = n

rango(A) = m = n

· =

m = n

rango(A) < m = n

3a 3b

2a 2b

1a 1b

· =

m < n

rango(A) = m < n

· =

m < n

rango(A) < m < n

· =m > n

rango(A) = n < m

· =m > n

rango(A) < n < m

· =

m = n

rango(A) = m = n

· =

m = n

rango(A) < m = n

3a 3b

2a 2b

1a 1b

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

7/118

– Recordemos algunos resultados de la teoría de álgebra lineal.

Teorema. (Compatibilidad de un sistema de ecuaciones lineales) Laecuación Ax D b admite solución si y sólo si

rango.Ajb/ D rango.A/:

Corolario. Si Am�n tiene rango m, Ax D b siempre tiene solución.

Teorema. Si x0 es una solución de Ax D b, el conjunto de solucionesde la ecuación está dado por x0 C ker.A/.

Corolario. Una solución de Ax D b es única si y sólo si ker.A/ D ;.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

8/118

Teorema. La ecuación Ax D 0, Am�n, n > m, siempre tiene unasolución no trivial.

Teorema. Si A es una matriz cuadrada de orden n, las siguientescondiciones son equivalentes:

1. rango.A/ D n.

2. ker.A/ D ;.

3. Los vectores columna de A son linealmente independientes.

4. Los vectores fila de A son linealmente independientes.

5. Existe una matriz de orden n, A�1, tal que

A�1A D AA�1 D I :

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

9/118

Ejemplo

– Hay que modelizar el sistema de refrigeración de una tarjetaelectrónica para poder usar un reloj con la mayor frecuencia deoscilación posible.

– Simplificadamente, adoptamos el modelo físico y matemático dela figura en el que se esquematiza un tiristor o un transistormontado en una placa disipadora de calor.

Thermal Model of an IC Package (1)

Objective: Find the temperature of an integrated circuit (IC)package mounted on a heat spreader. The system of equations is

obtained from a thermal resistive network model.

Physical Model: Mathematical Model:

Tp Tw

aire

temperatura Ta

cQc

Τa

Q3 R3

Τp

Τa

Τw

Τa

Q4 R4 Q5 R5

Q1 Q2

R2

NMM: Solving Systems of Equations page 7

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

10/118

– Si el sistema necesita Qc watios de potencia, suponiendo unmodelo resistivo del flujo de aire entre los nudos del sistema,aplicando los principios de conservación de la energía, seobtienen las ecuaciones que siguen.

Q1 D1

R1.Tc � Tp/ Q4 D

1

R4.Tp � Ta/ Qc D Q1CQ3

Q2 D1

R2.Tp � Tw/ Q2 D

1

R5.Tw � Ta/ Q1 D Q2CQ4

Q3 D1

R3.Tc � Ta/

– Se conoce Qc, al igual que Ta. Las resistencias se puedenconocer sabiendo el material de las placas y sus propiedades.

– Las incógnitas son entonces Q1, Q2, Q3, Q4, Tc, Tp y Tw.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

11/118

– Como hay siete ecuaciones, reagrupando las ecuaciones paraaislar las incógnitas se llega al siguiente sistema:

R1Q1 � Tc C T9 D 0

R2Q2 � Tp C Tw D 0

R3Q3 � Tc D �TaR4Q4 � Tp D �TaR5Q2 � Tw D �TaQ1 CQ3 D Qc

Q1 �Q2 �Q4 D 0:

– En forma matricial, el sistema tiene la siguiente expresión:266666664

R1 0 0 0 �1 1 0

0 R2 0 0 0 �1 1

0 0 R3 0 �1 0 0

0 0 0 R4 0 �1 0

0 R5 0 0 0 0 �1

1 0 1 0 0 0 0

1 �1 0 �1 0 0 0

377777775

266666664

Q1

Q2

Q3

Q4

TcTpTw

377777775 D266666664

0

0

�Ta�Ta�TaQc

0

377777775– Los flujos de calor se obtendrán resolviendo este sistema.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

12/118

– En Matlab, si R1 D 100, R2 D 200, R3 D 50, R4 D 100 y R5 D 300;Ta D 50 y Qc D 25, por ejemplo, los datos a suministrarle pararesolver el sistema serían:» A=[100 0 0 0 -1 1 0; 0 200 0 0 0 -1 1; 0 0 50 0 -1 0 0;...0 0 0 100 0 -1 0; 0 300 0 0 0 0 -1; 1 0 1 0 0 0 0;1 -1 0 -1 0 0 0]

A =100 0 0 0 -1 1 00 200 0 0 0 -1 10 0 50 0 -1 0 00 0 0 100 0 -1 00 300 0 0 0 0 -11 0 1 0 0 0 01 -1 0 -1 0 0 0

» b=[0;0;-50;-50;-50;25;0]b =

00

-50-50-50250

>> x=A\bx =1.0e+003 *0.005357142857140.000892857142860.019642857142860.004464285714291.032142857142860.496428571428570.31785714285714

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

13/118

– Interpretemos geométricamente el problema de resolver en dosdimensiones un sistema de ecuaciones lineales cualquiera

a11x1 C a12x2 D b1a21x1 C a22x2 D b2:

Cada una de las ecuaciones que componen el sistemarepresenta una recta en el espacio euclídeo de dimensión dos,según se describe en la figura.

x1

x2

a21x1 + a22x2 = b2

a11x1 + a12x2 = b1

La resolución del sistema tiene como objetivo la búsqueda delas coordenadas del punto donde se cortan esas dos rectas.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

14/118

– En la siguiente figura se pueden ver sistemas donde existendificultades para encontrar ese punto de intersección, al menosvisualmente.

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

– Generalizando a Rn, la resolución de un sistema de ecuacioneslineales se puede interpretar como la búsqueda de lascoordenadas del(os) punto(s) de intersección de los hiperplanosasociados a cada una de las ecuaciones.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

15/118

– Interpretemos geométricamente el problema en el subespacioIm.A/.

Si se escribe el sistema de dos ecuaciones con dos incógnitasde la forma �

a11a21

�x1 C

�a12a22

�x2 D

�b1b2

�;

el problema es el de descomponer linealmente el vector b enlos vectores columna que definen las dos columnas de lamatriz de coeficientes.

[b1b2

]

[a12a22

]

[a11a21

]

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

16/118

– En Rn, el problema se refiere a la búsqueda de la descomposiciónlineal de un vector de n componentes según n vectores dados: losque forman la base de Im.A/ que definen los vectores columnade A.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

17/118

Índice

Cuál es el problema; consideraciones teóricas

Eliminación de Gauss

Matlab y los sistemas de ecuaciones lineales

Factorización LU

Solución de sistemas modificados

Refinamiento iterativo

Sistemas con matrices especiales

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

18/118

Métodos directos: Eliminación deGauss– Los métodos directos resuelven el problema en un número deetapas fijo.

– De ellos, el método clásico del álgebra lineal numérica pararesolver Ax D b, A 2 Rn�n, x 2 Rn y b 2 Rn, es el debido a CarlFriedrich Gauss (1777-1855), quien lo aplicó por primera vez en1809 con motivo de unos estudios sobre órbitas de ciertoscuerpos celestes.

– Supondremos que la matriz A es de rango completo, por lotanto invertible, y que si eventualmente no lo es elprocedimiento deberá detectarlo.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

19/118

– La mecánica del método consiste en aplicar al sistema

a11x1 C a12x2 C � � � C a1nxn D b1a21x1 C a22x2 C � � � C a2nxn D b2::: ::: ::: :::

an1x1 C an2x2 C � � � C annxn D bn

n transformaciones lineales que lo conviertan en otro más fácilde resolver.

Concretamente, transformarlo en un sistema triangularsuperior de la forma

u11x1 C u12x2 C � � � C u1nxn D b01u22x2 C � � � C u2nxn D b02

::: :::

unnxn D b0n;

o, escrito en forma matricial,

Ux D b0.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

20/118

– Un sistema triangular superior, siempre y cuando se satisfaganlas condiciones

ui i ¤ 0; i D 1; : : : ; n;

es fácilmente resoluble de manera recurrente mediante lasfórmulas

xk D1

ukk

b0k �

nXiDkC1

ukixi

!; k D 1; : : : ; n:

Este proceso se conoce como sustitución inversa.

– El método de Gauss comporta pues n etapas con:

a) Multiplicación de una cualquiera de las ecuaciones del sistemapor un número distinto de cero.

b) Sustitución de una ecuación cualquiera del sistema por la queresulta de sumarle otra cualquiera.

c) Permutación del orden en que aparecen en el sistema dosecuaciones cualesquiera del mismo.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

21/118

Ejemplo

– Se desea resolver el sistema

2x1 C x2 C 4x4 D 2

�4x1 � 2x2 C 3x3 � 7x4 D �9

4x1 C x2 � 2x3 C 8x4 D 2

� 3x2 � 12x3 � x4 D 2:

– Escrito en forma matricial, Ax D b, los distintos componentesson

A D

266642 1 0 4

�4 �2 3 �7

4 1 �2 8

0 �3 �12 �1

37775 ; b D

266642

�9

2

2

37775 y x D

26664x1x2x3x4

37775 :

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

22/118

– Reconfiguremos inicialmente la matriz A aumentándola unacolumna más: la que define el término independiente b, yllamemos a la nueva matriz resultante bA; es decir,

bA D ŒAjb� D26664

2 1 0 4 2

�4 �2 3 �7 �9

4 1 �2 8 2

0 �3 �12 �1 2

37775 :Apliquemos ahora la mecánica del método en n D 3 etapas.

Etapa 1

– Comprobemos que el elemento Oa11 —denominado elementopivote— no es cero.Si es distinto de cero, eliminemos los elementos de la primeracolumna por debajo de ese Oa11.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

23/118

– Para ello, definamos para cada fila 2; : : : ; n los factores omultiplicadores

ri DOai1

Oa11; i D 2; : : : ; n:

– A continuación, restemos de las filas i D 2; : : : ; n, la primeramultiplicada por ri .Todos los elementos debajo de la diagonal principal de lacolumna 1 se anularán.

Los demás elementos de bA debajo de la primera fila tambiénse verán afectados de acuerdo con la siguiente expresión:

Oaij Oaij � ri � Oa1j ; i D 2; : : : ; nI j D 2; : : : ; nC 1:

– En el ejemplo que venimos manejando, los multiplicadores son

r2 D Oa21= Oa11 D �4=2 D �2

r3 D Oa31= Oa11 D 4=2 D 2

r4 D Oa41= Oa11 D 0=2 D 0:

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

24/118

– Los coeficientes de la matriz bA que cambian de valor son:

en la 2a fila: Oa21 0

Oa22 Oa22 � r2 � Oa12 D �2 C 2 � 1 D 0

Oa23 Oa23 � r2 � Oa13 D 3 C 2 � 0 D 3

Oa24 Oa24 � r2 � Oa14 D �7 C 2 � 4 D 1

Oa25 Oa25 � r2 � Oa15 D �9 C 2 � 2 D �5I

en la 3a fila: Oa31 0

Oa32 Oa32 � r3 � Oa12 D 1 � 2 � 1 D �1

Oa33 Oa33 � r3 � Oa13 D �2 � 2 � 0 D �2

Oa34 Oa34 � r3 � Oa14 D 8 � 2 � 4 D 0

Oa35 Oa35 � r3 � Oa15 D 2 � 2 � 2 D �2I

en la 4a fila: Oa41 0

Oa42 Oa42 � r3 � Oa12 D �3 � 0 � 1 D �3

Oa43 Oa43 � r4 � Oa13 D �12 � 0 � 0 D �12

Oa44 Oa44 � r4 � Oa14 D �1 � 0 � 4 D �1

Oa45 Oa45 � r4 � Oa15 D 2 � 0 � 2 D 2:

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

25/118

– La nueva matriz bA1, resultado de transformar bA, es:bA1 D

266642 1 0 4 2

0 0 3 1 �5

0 �1 �2 0 �2

0 �3 �12 �1 2

37775 :

– Se hubiese obtenido exactamente el mismo resultado de haberpremultiplicado bA por la denominada transformación de Gaussque define la matriz

L1 D

26641 0 0 0

2 1 0 0

�2 0 1 0

0 0 0 1

3775 :Matriz triangular inferior unitaria, denominada matriz detransformación de Gauss.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

26/118

– La matriz L1 también se puede escribir de la forma L1 D I � ˛eT1 ,donde

˛ D

266640

�2

2

0

37775 y e1 D

266641

0

0

0

37775 :

– En efecto,

L1bA D 264 1 0 0 02 1 0 0�2 0 1 00 0 0 1

375264 2 1 0 4 2�4 �2 3 �7 �94 1 �2 8 20 �3 �12 �1 2

375 D264 2 1 0 4 20 0 3 1 �50 �1 �2 0 �20 �3 �12 �1 2

375 :

– En resumen, bA1 D L1cA.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

27/118

– La inversa de la matriz L1, por otro lado, como se puedecomprobar fácilmente, es

L�11 D

26641 0 0 0

�2 1 0 0

2 0 1 0

0 0 0 1

3775 :Obsérvese que es idéntica a L1 salvo por lo que respecta al signode los coeficientes de la primera columna debajo de la diagonalprincipal.

Etapa 2

– Hagamos cero los elementos debajo de la diagonal principal de la2a columna de bA1.

– Al intentar hacerlo observamos que el elemento pivote Oa122 escero, lo que nos impide proceder como en la etapa anterior.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

28/118

– Comprobemos en este caso si algún elemento de la columna 2por debajo de Oa122 es distinto de cero:

Si no hay ninguno, esta columna es combinación lineal de laprimera y por tanto la matriz es singular.

Si hay varios, escojamos el de mayor valor absoluto eintercambiemos la fila de ese elemento con la segunda.

– En el ejemplo, el elemento de mayor valor absoluto debajo de ladiagonal principal en la segunda columna, �3, se encuentra en lafila 4. Intercambiamos esa fila 4 con la 2. Se obtendrá

bA01 D2666642 1 0 4 2

0 �3 �12 �1 2

0 �1 �2 0 �2

0 0 3 1 �5

377775 :

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

29/118

– Esto mismo se obtiene premultiplicando bA1 por la permutación

P1 D

26641 0 0 0

0 0 0 1

0 0 1 0

0 1 0 0

3775 :– Recapitulemos: la matriz con la que vamos a operar acontinuación, bA01, es: bA01 D P1L1cA:

– Apliquemos a continuación a la columna 2 la misma idea que ala columna 1 y hagamos cero sus elementos 3 a n.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

30/118

– Los nuevos multiplicadores saldrán de la expresión

ri DOa10

i2

Oa10

22

; i D 3; 4:

– Los nuevos valores de los elementos de la matriz bA01 por debajode la segunda fila se obtendrán aplicando la expresión

Oa10

ij Oa10

ij � ri � Oa10

2j ; i D 3; 4I j D 3; : : : ; 5:

– Los valores de los multiplicadores para el ejemplo son

r3 D Oa10

32= Oa10

22 D 1=3 y

r4 D Oa10

42= Oa10

22 D 0:

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

31/118

– Los nuevos elementos de la matriz bA01 resultante:en la 3a fila: Oa1

0

32 0

Oa10

33 Oa10

33 � r3 � Oa10

23 D �2 C13� 12 D 2

Oa10

34 Oa10

34 � r3 � Oa10

24 D 0 C 13� 1 D 1=3

Oa10

35 Oa10

35 � r3 � Oa10

25 D �2 �13� 2 D �8=3I

en la 4a fila: Oa10

42 0

Oa10

43 Oa10

43 � r4 � Oa10

23 D 3 � 0 � 12 D 3

Oa10

44 Oa10

44 � r4 � Oa10

24 D 1 � 0 � 1 D 1

Oa10

45 Oa10

45 � r4 � Oa10

25 D �5 � 0 � 2 D �5:

– Obsérvese que, al ser r4 D 0, los cálculos para adaptar la cuartafila podrían haberse evitado.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

32/118

– La nueva matriz resultado de estas transformaciones es

bA2 D

266642 1 0 4 2

0 �3 �12 �1 2

0 0 2 1=3 �8=3

0 0 3 1 �5

37775 ;matriz que se expresa a partir de la inicial comobA2 D L2P1L1

cA;donde L2 D

264 1 0 0 00 1 0 00 �1=3 1 00 0 0 1

375 :

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

33/118

Etapa 3

– Para conseguir transformar el sistema original en uno triangularsuperior sólo resta anular el elemento Oa243.

– El elemento de la diagonal principal Oa233 es distinto de cero, luegoprocedemos a calcular el multiplicador r4:

r4 D Oa243= Oa

233 D 3=2:

– Los nuevos valores de los elementos de la matriz bA2 por debajode la tercera fila se obtendrán aplicando la expresión

Oa2ij Oa2ij � ri � Oa

23j ; i D 4I j D 4; 5:

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

34/118

– En concreto, en la cuarta fila:

Oa243 0

Oa244 Oa244 � r4 � Oa234 D 1 � 3

2�13D 1=2

Oa245 Oa245 � r4 � Oa235 D �5 C

32�83D �1:

– La nueva matriz resultado de estas transformaciones es

bA3 D

2666642 1 0 4 2

0 �3 �12 �1 2

0 0 2 1=3 �8=3

0 0 0 1=2 �1

377775 :

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

35/118

– A este resultado se ha llegado después de aplicar a la matrizinicial bA una serie de transformaciones; concretamente:bA3 D L3L2P1L1

cA;donde

L3 D

266641 0 0 0

0 1 0 0

0 0 1 0

0 0 �3=2 1

37775 :

– En conclusión, la matriz original que definía el sistema, A, sepuede transformar en la triangular superior U aplicándole lasmismas transformaciones que a bA. Es decir,

U D L3L2P1L1A:

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

36/118

– Como a b también se le han efectuado las mismastransformaciones llegándose a b0, resolver el sistema deecuaciones original es equivalente a resolver

Ux D b0:

– En el ejemplo,2666642 1 0 4

0 �3 �12 �1

0 0 2 1=3

0 0 0 1=2

377775266664x1x2x3x4

377775 D266664

2

2

�8=3

�1

377775 :

– La solución se lleva a cabo mediante sustitución inversa.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

37/118

x4 D �2;

sustituyendo en la tercera ecuación,

x3 D�8=3 � .�2/.1=3/

2D �1;

y, a su vez, haciéndolo en la segunda,

x2 D2 � .�1/.�2/ � .�12/.�1/

�3D 4:

– Por último, sustituyendo los valores de las variables ya calculadosen la primera ecuación se obtiene

x1 D2 � 4.�2/ � 1.4/

2D 3:

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

38/118

– La solución de nuestro ejemplo es pues26666664x1x2x3x4

37777775 D26666664

3

4

�1

�2

37777775 :u

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

39/118

Pivotación

– Veamos qué ocurre si resolvemos con el procedimiento estudiado�10�4 1

1 1

�„ ƒ‚ …

A

�x1x2

�„ƒ‚…x

D

�1

2

�„ƒ‚…b

;

en una máquina con tres dígitos significativos que efectúeredondeos.

– Aplicando la mecánica apuntada, en la primera etapa seobtendría una nueva matriz A1 y un nuevo vector b1; son:

A1 D

�10�4 1

0 1 � 104

�y b1 D

�1

2 � 104

�:

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

40/118

– El número 1 � 104 D �9999, la máquina lo redondearía a �104; dela misma forma procedería con 2 � 104. La solución del sistemasería

x2 D�104

�104D 1

x1 D1 � x2

10�4D 0;

muy distinta de la real Œ0;99989999; 1;00010001�T .

– La elección del pivote busca que los multiplicadores no sean enmagnitud mucho mayores que 1 con el fin de tener en cuenta loserrores de redondeo y la estabilidad numérica del procedimiento,

Es por esto por lo que se escoge el de mayor magnitud deentre los debajo de la diagonal principal.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

41/118

– Para el caso de este último ejemplo, en la primera etapa, enlugar de operar sobre la matriz anterior, como el valor absolutodel elemento a21 es mayor que el del a11, se intercambiaría la fila1 con la 2, obteniéndose

A0 D

�1 1

10�4 1

�y b0 D

�2

1

�:

– Continuando con el procedimiento normal, después de la primeraetapa, se llegará a

A01 D

�1 1

0 1 � 10�4

�y b01 D

�2

1 � 2 � 10�4

�:

Por redondeos internos, la máquina representaría

A01 D

�1 1

0 1

�y b01 D

�2

1

�:

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

42/118

– La la solución de este sistema de ecuaciones sería�x1x2

�D

�1

1

�:

Solución mucho mejor que la anterior, pues la real es

x2 D0,99980,9999

D 0,99989999

x1 D 1,00010001:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

– El proceso descrito se denomina pivotación parcial.

– Su por qué radica en la aritmética de precisión finita con la quetrabajan todos los ordenadores y en el hecho de que los factoreso multiplicadores antes introducidos son inversamenteproporcionales al elemento pivote: si éste es demasiado pequeñopuede amplificar los errores de redondeo a lo largo del proceso desolución.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

43/118

– Una segunda estrategia de pivotación es la conocida comopivotación total.

– Consiste en buscar en una etapa i no sólo el elemento de mayorvalor absoluto en la columna correspondiente, sino en todo loque queda por tratar de la matriz: el mKaxi�k�n; i�j�n jakj j.

Partial Pivoting

To avoid division by zero, swap the row having the zero pivot

with one of the rows below it.

0

*

Rows completed inforward elimination.

Rows to search for amore favorable pivotelement.

Row with zero pivot element

To minimize the effect of roundoff, always choose the row that

puts the largest pivot element on the diagonal, i.e., find ip such

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

NMM: Solving Systems of Equations page 37

Pivotación parcial

Full Pivoting

0

*

Rows completed inforward elimination.

Columns to search for a morefavorable pivot element.

Row with zero pivot element

Rows to search for amore favorable pivotelement.

*

NMM: Solving Systems of Equations page 39

Pivotación total

– La pivotación total proporciona la estrategia óptima paraminimizar errores de redondeo.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

44/118

– Desde un punto de vista teórico, la eliminación de Gauss conpivotación total es, en general, un algoritmo numéricamenteestable.

– En la práctica, la pivotación parcial produce buenos resultados yexcelentes prestaciones numéricas por lo que rara vez se usa latotal.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

45/118

Algoritmo

� Transformación de la Matriz Aumentada ŒAjb��

for i D 1 to n � 1Determinar índice p 2 fi; i C 1; : : : ; ng tal que ja.p; i/j D mKaxi�j�n ja.j; i/j.Intercambiar filas p e i .for j D i C 1 to n

� D a.j; i/=a.i; i/for k D i C 1 to nC 1

a.j; k/ a.j; k/ � � � a.i; k/end

endend�

� Sustitución Inversa.�

for j D n to 1

x.j /

[email protected] / � nXkDjC1

a.j; k/ � x.k/

1A�a.j; j /

end

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

46/118

– En código Matlab para cualquier sistema.

function [x]=Gauss(A,b)% Solución de Ax=b mediante eliminación de Gaussn=size(A,1); x=zeros(n,1);for i=1:n-1 % Transformación matriz A

[p maxk]=max(abs(A(i:n,i)));maxk=maxk+i-1;if i~=maxk

A([i maxk],:)=A([maxk i],:);b([i maxk]) =b([maxk i]);

endj=i+1:n;A(j,i)=A(j,i)/A(i,i);A(j,j)=A(j,j)-A(j,i)*A(i,j);b(j)=b(j)-b(i)*A(j,i);

endfor i=n:-1:1 % Sustitución inversa

x(i)=(b(i)-A(i,i+1:n)*x(i+1:n))/A(i,i);end

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

47/118

– De esta codificación conviene destacar dos elementosmejorables.

No es realmente necesario intercambiar las filas una vezelegido el elemento pivote de cada etapa; basta con tenerconstancia en cada momento dónde están las filas que seintercambian.

Tal como está estructurado el programa sólo se podríaresolver un sistema —el definido por el b dado— y no, comoes lo más habitual, distintos sistemas con la misma matriz Ay diversos términos independientes.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

48/118

– El primero se puede paliar mediante la introducción de vectoríndice, IPIV, de dimensión el número de ecuaciones, inicializado ala posición inicial en el sistema de cada una de las ecuaciones; esdecir,

IPIV D

26666641

2

3:::

n

3777775 :

– Cuando haya que intercambiar dos filas en un etapa, no se haráintercambiando físicamente los elementos de esas dos filas, sinohaciéndolo en las correspondientes de IPIV.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

49/118

– Si por ejemplo, en la primera etapa hay que utilizar como pivoteun elemento de la cuarta fila, una vez efectuado el cambio, elvector IPIV quedará:

IPIV D

266666664

4

2

3

1:::

n

377777775 :

– Si al final de un proceso de resolución de un sistema de cincoecuaciones con cinco incógnitas, el vector puntero resultase

IPIV D

26666644

2

5

1

3

3777775 ;

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

50/118

la matriz A0 que se obtendría no resultaría ser estrictamentetriangular superior.Tendría la forma que sigue.

– Para resolver el sistema que define Ax D b habría que aplicaresas mismas manipulaciones de filas al vector b o tenerlo encuenta.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

51/118

– Para evitar el segundo inconveniente, habría que guardaradecuadamente la información que definen los multiplicadoresasociados a cada fila de cada etapa.

Los i � 1 multiplicadores se pueden guardar en los lugaresvacíos —o mejor dicho, que se hacen cero— que provocan lastransformaciones que definen: en la etapa i , debajo de ladiagonal principal en la columna i .

En el ejemplo, con esta idea, al final del proceso la matriz Asería:

A D

266642 1 0 4

�2 �3 �12 �1

2 1=3 2 1=3

0 0 3=2 1=2

37775 :Los multiplicadores distintos de cero que se han calculado entodo el proceso son -2, 2, 1/3 y 3/2.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

52/118

Número de operaciones del método

– Dos de los factores más importantes que influyen en lasprestaciones de un algoritmo son:

Su estabilidad numérica ante los diversos errores.

La cantidad de tiempo necesaria para completar los cálculosque conlleva.

– Ambos factores dependen del número de operaciones aritméticasnecesarias para la aplicación del algoritmo.

– Los tiempos necesarios para realizar en un ordenador lamultiplicación y la división de dos números son aproximadamenteiguales y considerablemente mayores, en términos relativos, quelos requeridos para realizar la suma o diferencia, que tambiénson muy semejantes entre sí.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

53/118

– La eliminación de Gauss para resolver un sistema de ecuacioneslineales, en la primera etapa, realiza las operaciones que serepresentan simbólicamente en el esquema que sigue.

� � � � � � � �

� � � � � � � �::: ::: ::: ::: :::

� � � � � � � �

� � � � � � � �

!

� � � � � � � �

0 2 � � � 2 2 2::: ::: ::: ::: :::

0 2 � � � 2 2 2

0 2 � � � 2 2 2

– El símbolo 2 designa los elementos de la matriz que se venafectados en esa etapa y que, en principio, son distintos de cero.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

54/118

– Si en la etapa i se está transformando una matriz n � n, lasoperaciones que en ella se realizan son:

n � i divisiones para el cálculo de los multiplica-dores;

.n � i/.n � i C 1/ multiplicaciones y restas para modificar loselementos de la matriz por debajo de la filai que no están en la propia columna i .

– En cada etapa se efectúan,

.n � i/C .n � i/.n � i C 1/ D .n � i/.n � i C 2/

multiplicaciones y divisiones y

.n � i/.n � i C 1/

sumas y restas.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

55/118

– En n � 1 etapas de que consta el proceso, se haránn�1XiD1

.n � i/.n � i C 2/ D .n2 C 2n/

n�1XiD1

1 � 2.nC 1/

n�1XiD1

i C

n�1XiD1

i2

D .n2 C 2n/.n � 1/ � 2.nC 1/.n � 1/n

2

C.n � 1/n.2n � 1/

6

D2n3 C 3n2 � 5n

6

multiplicaciones y divisiones yn�1XiD1

.n � i/.n � i C 1/ D .n2 C n/

n�1XiD1

1 � .2nC 1/

n�1XiD1

i C

n�1XiD1

i2

D .n2 C n/.n � 1/ � .2nC 1/.n � 1/n

2

C.n � 1/n.2n � 1/

6

Dn3 � n

3

sumas y restas.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

56/118

– El comportamiento de estos valores para n grande tiende a

1

3n3.

– El proceso de sustitución inversa requiere .n � i/ multiplicacionesy .n � i � 1/ sumas, para cada término del sumatorio, y una restay una división.

El número total de operaciones de todo el proceso es

1C

n�1XiD1

..n � i/C 1/ Dn2 C n

2

multiplicaciones y divisiones yn�1XiD1

..n � i � 1/C 1/ Dn2 � n

2

sumas y restas.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

57/118

– Contando la totalidad de la transformación de la matriz delsistema y la sustitución inversa, la eliminación de Gauss requiere

2n3 C 3n2 � 5n

6Cn2 C n

2Dn3 C 2n2 � n

3

multiplicaciones y divisiones y

n3 � n

3Cn2 � n

2D2n3 C 3n2 � 5n

6

sumas y restas.

– El comportamiento de estas expresiones para valores grandes den es como

1

3n3

lo que da idea de la importante magnitud del número deoperaciones.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

58/118

– Aunque la cantidad n3=3 puede parecer muy grande, recordemoslas fórmulas de Cramer para la solución de sistemas:

xi Ddet.B i/

det.A/; donde B i D

26664a11 � � � a1i�1 b1 a1iC1 � � � a1na21 � � � a2i�1 b2 a2iC1 � � � a2n::: ::: ::: ::: :::

an1 � � � ani�1 bn aniC1 � � � ann

37775 :Mediante estas fórmulas se requieren:8<: .nC 1/Š sumas,

.nC 2/Š multiplicaciones yn divisiones.

Para diez ecuaciones con diez incógnitas se requerirán:8<: 740 operaciones utilizando eliminación de Gauss.500.000.000 operaciones, aproximadamente, aplicando

las fórmulas de Cramer.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

59/118

Método de Gauss-Jordan

– Es una extensión natural de la eliminación de Gauss que consisteen eliminar de cada columna de la matriz de coeficientes delsistema no sólo los elementos no nulos que están debajo de ladiagonal sino también los que están encima.

– Una etapa i de la eliminación de Gauss estaba caracterizada porla matriz

Li D I � ˛ieTi ;

donde

˛i D

26666640:::

aiiC1 i=aii i

:::

aini=aii i

3777775 fila i C 1 y ei D

26666640:::

1:::

0

3777775 fila i :

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

60/118

– En la etapa i de este método, la matriz de transformación deGauss-Jordan es la dada por

T i D I � ˛ieTi ;

donde

˛i D

2666664ai1i=a

ii i

:::

1=aii i:::

aini=aii i

3777775 fila i y ei D

26666640:::

1:::

0

3777775 fila i :

– Si se tiene en cuenta que A0D A y An

D I, se tendrá que

T n�1 � � �T 2T 1A D I ;

por lo que el método obtiene directamente la matriz inversa:

A�1 D T n�1 � � �T 2T 1:

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

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

61/118

Índice

Cuál es el problema; consideraciones teóricas

Eliminación de Gauss

Matlab y los sistemas de ecuaciones lineales

Factorización LU

Solución de sistemas modificados

Refinamiento iterativo

Sistemas con matrices especiales

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

62/118

Matlab y los sistemas de ecuacioneslineales

– Para resolver un sistema Ax D b con Matlab sólo hay que hacer

x D Anb

– Con el ejemplo que estamos manejando:

>> A=[2 1 0 4;0 -3 -12 -1;0 -1 -2 0;0 0 3 1];>> b=[2;2;-2;-5];>> A\bans =

3.00004.0000

-1.0000-2.0000

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

63/118

– Utilizando el script Gauss que hemos presentado:

>> Gauss(A,b)ans =

3.00004.0000

-1.0000-2.0000

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

64/118

Índice

Cuál es el problema; consideraciones teóricas

Eliminación de Gauss

Matlab y los sistemas de ecuaciones lineales

Factorización LU

Solución de sistemas modificados

Refinamiento iterativo

Sistemas con matrices especiales

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

65/118

Factorización LU– El cálculo de A D LU se conoce como factorización odescomposición LU .

Para resolver un sistema de ecuaciones lineales Ax D b, siA D LU , el problema se convierte en el de resolver LUx D ba través de dos sistemas de ecuaciones triangulares:

Ux D y y Ly D b:

Esto es muy útil cuando se requiere resolver sistemas deecuaciones en los que la matriz A es siempre la misma y sólocambia es el término independiente.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

66/118

La factorización LU y la eliminación de Gauss

– Una forma indirecta de conseguir esta factorización LU es lapropia eliminación de Gauss.

En efecto, mediante unas permutaciones y unastransformaciones definidas por matrices elementalestriangulares inferiores el método conseguía:

Ln�1Pn�1 � � �L1P1A D U :

De este proceso, haciendo

P D Pn�1 � � �P1 yL D P.Ln�1Pn�1 � � �L2P2L1P1/

�1;

se puede comprobar que se obtiene la factorización

PA D LU :

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

67/118

Existencia y unicidad de la factorización LU

Teorema. Sea A una matriz cuadrada regular de orden n. Existe unamatriz de permutación P y dos matrices, una triangular inferior yotra triangular superior, L y U , respectivamente, tales que

PA D LU :

La matriz L tiene todos los elementos de la diagonal principal iguala 1 (triangular inferior unitaria).

Lema. La matriz A admite una factorización LU si y sólo si secumple que det.Ak/ ¤ 0; k D 1; : : : ; n:

Teorema. Si una matriz regular A de orden n admite una factoriza-ción A D LU , donde L es una matriz triangular inferior de elemen-tos diagonales 1 y U una triangular superior, esa factorización esúnica.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

68/118

Métodos numéricos directos para laobtención de factorizaciones LU

Método de Crout. Versión LU 1

– Supongamos que se desea obtener la factorización en la formaLU 1, donde U 1 designa una matriz triangular superior en la quetodos los elementos de la diagonal principal son 1.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

69/118

– Si la matriz A es de orden 3 y se quiere factorizarla de la forma24 a11 a12 a13a21 a22 a23a31 a32 a33

35 D 24 l11 0 0

l21 l22 0

l31 l32 l33

3524 1 u12 u130 1 u230 0 1

35 ;usando las reglas de multiplicación de matrices se obtendrá:

1a col. de L: l11 D a11l21 D a21l31 D a31I

2a fila de U : l11u12 D a12l11u13 D a13

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

2a col. de L: l21u12 C l22 D a22l31u12 C l32 D a32

��! li2 D ai2 � li1u12; i D 2; 3I

2a fila de U : l21u13 C l22u23 D a23 �! u2j D .a2j � l21u1j /=l22; j D 3I

3a col. de L: l31u13 C l32u23 C l33 D a33 �! li3 D ai3 �

i�1XjD1

lijuj i ; i D 3:

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

70/118

– En general, las fórmulas de recurrencia que se pueden deducir deeste proceso, denominado factorización LU de Crout, son:

li1 D ai1; i D 1; 2; : : : ; n;

u1j D a1j=l11; j > 1;

lik D aik �

k�1XpD1

lipupk; i � k;

ukj D

0@akj � k�1XpD1

lkpupj

1A�lkk; j > k:

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

71/118

– Plasmadas en el algoritmo de Crout para factorizar una matrizregular An�n en la forma LU 1 resulta el de la tabla.

for k D 1 to nfor i D k to n

l.i; k/ a.i; k/ �

k�1XpD1

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

endfor i D k C 1 to n

u.k; i/

[email protected]; i/ � k�1XpD1

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

1A�l.k; k/

endend

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

72/118

– La versión Matlab de este algoritmo es la que sigue.

function [L U]=LUCrout(a)% Factorización LU por Croutn=size(a,1); L=zeros(n); U=eye(n);for k=1:n

for i=k:nL(i,k)=a(i,k)-L(i,1:k-1)*U(1:k-1,k);

endfor i=k+1:n

U(k,i)=(a(k,i)-L(k,1:k-1)*U(1:k-1,i))/L(k,k);end

end

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

73/118

– Ahora bien, como apuntábamos en la eliminación de Gauss, sepuede aprovechar la estructura de la matriz A para guardar enella las nuevas matrices L y U . El mismo algoritmo quedaría así.

function [L U]=Crout_1(A)% Factorización LU por Croutn=size(A,1);for k=1:n

i=k:n; A(i,k)=A(i,k)-A(i,1:k-1)*A(1:k-1,k);i=k+1:n; A(k,i)=(A(k,i)-A(k,1:k-1)*A(1:k-1,i))/A(k,k);

endL=tril(A,0); U=triu(A,1)+eye(n,n);

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

74/118

– Factorizar 24 10 10 20

20 25 40

30 50 61

35da como resultado

LU D

24 1020 5

30 20 1

3524 1 1 2

1 0

1

35 :>> A=[10 10 20;20 25 40;30 50 61];>> [L,U]=Crout_1(A)L =

10 0 020 5 030 20 1

U =1 1 20 1 00 0 1

>>

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

75/118

Ejemplo

– Se desea factorizar la matriz

A D

24 0,001 2,000 3,000-1,000 3,712 4,623-2,000 1,072 5,643

35en una máquina u ordenador con cuatro dígitos significativos.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

76/118

– Las operaciones que se realizan en la máquina son:

l11 D 0,001Il21 D -1,000Il31 D -2,000I

u12 D f l

�2,0000,001

�D 2000I

u13 D f l

�3,0000,001

�D 3000I

l22 D f l Œ3,712C .1,000/.2000/� D 2004Il32 D f l Œ1,072C .2,000/.2000/� D 4001I

u23 D f l

�4,623C .1,000/.3000/

2004

�D 1,500 y

l33 D f lŒ5,643C (2,000)(3,000) � (4,001)(1,500)� D 5,642:

– Obsérvese que el cálculo de l33 conlleva la pérdida de tres dígitospor redondeo: el valor que debería obtenerse es 5,922.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

77/118

Pivotación

– El ejemplo pone de manifiesto que, aunque se sepa que unamatriz no es singular y que su factorización LU existeteóricamente, los errores de redondeo que se pueden producir altrabajar en una máquina pueden dar al traste con el resultado.

– Es aconsejable realizar pivotación. Al final de un proceso conpivotación se obtendría

PA D LU

es decir, no la factorización LU de la matriz original sino de PA.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

78/118

– El algoritmo de Crout con pivotación parcial es el de la tabla

for k D 1 to nfor i D k to n

l.i; k/ a.i; k/ �

k�1XpD1

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

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

u.k; i/

[email protected]; i/ � k�1XpD1

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

1A�l.k; k/

endend

function [L U p]=CroutP(a)% Factorización LU por Crout con pivotaciónn=size(a,1); p=1:n;for k=1:n

i=k:n; a(i,k)=a(i,k)-a(i,1:k-1)*a(1:k-1,k);[r,m]=max(abs(a(k:n,k))); m=m+k-1;if a(m,k)==0, continue, endif k~=m, a([k m],:)=a([m k],:); p([k m])=p([m k]); endi=k+1:n; a(k,i)=(a(k,i)-a(k,1:k-1)*a(1:k-1,i))/a(k,k);

endL=tril(a,0); U=triu(a,1)+eye(n,n);

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

79/118

– Si se factoriza la matriz 24 10 10 20

20 25 40

30 50 61

35 ;al final de este proceso, el vector IPVT.�/, que indica laspivotaciones realizadas, es Œ3, 2, 1�T .

>> A=[10 10 20;20 25 40;30 50 61];>> [L U p]=CroutP(A)L =

30.0000 0 020.0000 -8.3333 010.0000 -6.6667 0.2000

U =1.0000 1.6667 2.0333

0 1.0000 0.0800p =

3 2 1>>

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

80/118

– La matriz PA realmente factorizada es264 30 50 6120 25 40

10 10 20

375 D264 3020 �8;333310 �6;6667 0; 2

375264 1 1;6667 2;03331 0;0800

1

375 :

– El algoritmo de Crout requiere O.n3=3/multiplicaciones/divisiones y sumas/restas para la factorizaciónde la matriz.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

81/118

Método de Crout. Versión L1U– Si se quiere conseguir la factorización L1U de una matriz 3 � 3,24 a11 a12 a13

a21 a22 a23a31 a32 a33

35 D 24 1 0 0

l21 1 0

l31 l32 1

3524 u11 u12 u130 u22 u230 0 u33

35 ;operando:1a fila de U : u11 D a11

u12 D a12u13 D a13I

1a col. de L: l21u11 D a21l31u11 D a31

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

2a fila de U : l21u12 C u22 D a22l21u13 C u32 D a23

��! u2j D a2j � l21u1j ; j D 2; 3I

2a col. de L: l31u12 C l32u22 D a32 �! li2 D .ai2 � li1u12/=u22; i D 3I

3a fila de U : l31u13 C l32u23 C u33 D a33 �! u3j D a3j �

j�1XiD1

l3iuij ; j D 3:

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

82/118

– Las fórmulas de recurrencia que se pueden deducir de esteproceso son:

u1j D a1j ; j D 1; 2; : : : ; n;

li1 D ai1=u11; j > 1;

ukj D akj �

k�1XpD1

lkpupj ; j � k;

lik D

0@aik � k�1XpD1

lipupk

1A�ukk; i > k:

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

83/118

– El algoritmo de Crout para factorizar una matriz regular An�n enla forma L1U es el que sigue.

for k D 1 to nfor j D k to n

u.k; j / a.k; j / �

k�1XpD1

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

endfor i D k C 1 to n

l.i; k/

[email protected]; k/ � k�1XpD1

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

1A�u.k; k/

endend

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

84/118

– Su implementación en Matlab:

function [L,U]=Croutl1u(a)% Factorización L1U por Croutn=size(a,1);for k=1:n-1

i=k+1:n;a(i,k)=a(i,k)/a(k,k);a(i,i)=a(i,i)-a(i,k)*a(k,i);

endL=tril(a,-1)+eye(n,n); U=triu(a);

El resultado con la matriz precedente es:

>> [L U]=Croutl1u(A)L =

1 0 02 1 03 4 1

U =10 10 200 5 00 0 1

>> L*Uans =

10 10 2020 25 4030 50 61

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

85/118

– La versión del algoritmo con pivotación en Matlab es esta.

function [L U p]=CroutP1(a)% Factorización L1U por Crout con pivotaciónn=size(a,1); p=1:n;for k=1:n-1

[r,m]=max(abs(a(k:n,k)));m=m+k-1;if a(m,k)==0, continue, endif k~=m, a([k m],:)=a([m k],:); p([k m])=p([m k]); endi=k+1:n; a(i,k)=a(i,k)/a(k,k);j=k+1:n; a(i,j)=a(i,j)-a(i,k)*a(k,j);

endL=tril(a,-1)+eye(n,n); U=triu(a);

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

86/118

– El resultado con este script para el último ejemplo:

>> [L U p]=CroutP1(A)L =

1.0000 0 00.6667 1.0000 00.3333 0.8000 1.0000

U =30.0000 50.0000 61.0000

0 -8.3333 -0.66670 0 0.2000

p =3 2 1

>> L(p,:)*Uans =

10 10 2020 25 4030 50 61

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

87/118

– Con los recursos de Matlab:

>> [L U P]=lu(A)L =

1.0000 0 00.6667 1.0000 00.3333 0.8000 1.0000

U =30.0000 50.0000 61.0000

0 -8.3333 -0.66670 0 0.2000

P =0 0 10 1 01 0 0

>> P*L*Uans =

10 10 2020 25 4030 50 61

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

88/118

Matlab y la factorización LU

– Como acabamos de ver, para resolver un sistema lineal deecuaciones Ax D b con Matlab, mediante la factorización LU ,sólo hay que utilizar [L U P]=lu(A), obteniéndose la solucióndel sistema original haciendo

x=U\(L\(P’*b))

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

89/118

– Apliquemos esta idea a uno de los ejemplos que manejamos:

>> A=[2 1 0 4;0 -3 -12 -1;0 -1 -2 0;0 0 3 1];>> b=[2;2;-2;-5];>> [L U P]=lu(A)L =

1.0000 0 0 00 1.0000 0 00 0 1.0000 00 0.3333 0.6667 1.0000

U =2.0000 1.0000 0 4.0000

0 -3.0000 -12.0000 -1.00000 0 3.0000 1.00000 0 0 -0.3333

P =1 0 0 00 1 0 00 0 0 10 0 1 0

>> x=U\(L\(P’*b))x =

3.00004.0000

-1.0000-2.0000

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

90/118

Índice

Cuál es el problema; consideraciones teóricas

Eliminación de Gauss

Matlab y los sistemas de ecuaciones lineales

Factorización LU

Solución de sistemas modificados

Refinamiento iterativo

Sistemas con matrices especiales

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

91/118

Solución de sistemas modificados– Si en un sistema Ax D b se modifica el vector b pero no lamatriz, no es necesario rehacer la factorización LU para resolverel nuevo sistema.

– Si se modifica ligeramente la matriz A, por ejemplo el elemento(j; k), con lo que A D A � ˛ejeTk , puede que no sea necesariotampoco recalcular la factorización en su totalidad.

La fórmula de Sherman-Morrison-Woodbury proporciona lainversa de una matriz en términos de los vectores de unamodificación de rango uno –uvT– a la misma:�

A � uvT��1D

A�1CA�1u�1 � vTA�1u

��1vTA�1:

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

92/118

– Para resolver el nuevo sistema .A � uvT /x D b, usando lafórmula, se obtendría

x D�A � uvT

��1b

D A�1bCA�1u�1 � vTA�1u

��1vTA�1b;

operación que podría hacerse por partes:

1. Resolviendo Az D u, obteniendo z.

2. Resolviendo Ay D b, obteniendo y.

3. Calculando x D y C ..vTy/=.1 � vT z//z.

– Como A ya está factorizada, este procedimiento requiere solosustituciones inversas y productos interiores; es decir O.n2/operaciones frente a las O.n3=3/ de la factorización.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

93/118

Ejemplo

– Consideremos la matriz

A D

24 2 4 �2

4 9 �3

�2 �3 7

35 D 24 1 0 0

2 1 0

�1 1 1

35„ ƒ‚ …

L

24 2 4 �2

0 1 1

0 0 4

35„ ƒ‚ …

U

a la que se le efectúa una modificación consistente en cambiar elcoeficiente (3,2) por un -1.

– En este caso

u D

24 0

0

�2

35 y v D

24 010

35 ;con lo que la matriz resultante es A � uvT .

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

94/118

– Con la factorización LU de A, se resuelve Az D u y Ay D b,dando

z D

24 �3=21=2�1=2

35 y y D

24 �122

35 :– Por último,

x D y CvTy

1 � vT zz D

24 �122

35C 2

1 � 1=2

24 �3=21=2�1=2

35 D 24 �740

35 :u

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

95/118

Índice

Cuál es el problema; consideraciones teóricas

Eliminación de Gauss

Matlab y los sistemas de ecuaciones lineales

Factorización LU

Solución de sistemas modificados

Refinamiento iterativo

Sistemas con matrices especiales

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

96/118

Refinamiento iterativo– Si se tiene una solución x0 del sistema de ecuaciones linealesAx D b, el vector de residuos es

r0 D b �Ax0:

– Si este vector no cumple unos requisitos de precisión que nosinteresen, se pude resolver el sistema Az0 D r0 y hacer

x1 D x0C z0:

– Esta nueva solución será mejor que la anterior pues

Ax1 D A.x0 C z0/ D Ax0 CAz0

D .b � r0/C r0 D b:

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

97/118

– Esta forma de actuar sugiere seguir iterando hasta conseguir quela solución se aproxime tanto como se quiera a la esperada,teniendo en cuenta, claro, los estándares de precisión de lamáquina donde se esté trabajando.

% Script de Refinamiento Iterativo

n=6;format shortA=hilb(n); % Matriz de Hilbert (muy mal condicionada)b=A*ones(n,1); % Elegimos término independiente para sol. x=1.pausex=A\b % Solución, evidentemente, =1

B=A; % En B está A perturbada un poquitoB(6,1)=B(6,1)+1.e-06;pausex1=B\b % Veamos la nueva solución; difiere bastantepause

xex=ones(n,1); % Calculemos cuántonorm(xex-x1,2) % Como magnitud calculemos la norma 2 de la desviaci.norm(xex-x,2)pause

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

98/118

res=b-A*x1; % Hagamos una iteración del Refinamiento iterativox1=x1+B\resnorm(xex-x1,2)pause

res=b-A*x1; % Hagamos otra iteración del Refinamiento iterativoformat longx1=x1+B\resnorm(xex-x1,2)pause

res=b-A*x1; % Hagamos otra iteración del Refinamiento iterativox1=x1+B\resnorm(xex-x1,2)

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

99/118

Índice

Cuál es el problema; consideraciones teóricas

Eliminación de Gauss

Matlab y los sistemas de ecuaciones lineales

Factorización LU

Solución de sistemas modificados

Refinamiento iterativo

Sistemas con matrices especiales

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

100/118

Sistemas con matrices especiales

Matrices simétricas

Factorización LDLT

Lema. Si todas las submatrices principales de una matriz A 2 Rn�n

son regulares, existen dos matrices triangulares inferiores unitariasúnicas, L y M , y otra diagonal también única, D D diag.d1; : : : ; dn/,tales que A D LDM T .

Teorema. Si A admite una factorización LDM T y es simétrica, L DM .

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

101/118

– Para derivar unas fórmulas de recurrencia, a partir de un ejemplosimbólico de orden 3,24 a11 a12 a13a21 a22 a23

a31 a32 a33

35 D 24 1 0 0

l21 1 0

l31 l32 1

3524 d11 d22d33

3524 1 l21 l310 1 l320 0 1

35 ;operando de acuerdo con las reglas de multiplicación matricial seobtiene que

a11 D d11

a21 D l21d11

a31 D l31d11

a22 D l221d11 C d22

a32 D l31l21d11 C l32d22

a33 D l231d11 C l232d22 C d33:

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

102/118

– Generalizando se obtiene el algoritmo de la tabla.

for k D 1 to n

d.k/ a.k; k/ �

k�1XpD1

a2.k; p/d.p/

if d.k/ D 0 then stopfor i D k C 1 to n

a.i; k/

[email protected]; k/ � k�1XpD1

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

1A�d.k/

endend

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

– Si no se efectúan pivotaciones, los métodos expuestos hastaahora para factorizar una matriz pueden fallar por la posiblepresencia de elementos pivote muy pequeños, o por laacumulación de errores de redondeo importantes.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

103/118

Factorización de Cholesky

– Recordemos que una matriz se dice definida positiva, si paratodo x ¤ 0 se cumple que

xTAx > 0:

Todos los valores propios de una matriz definida positiva sonpositivos.

– Las matrices simétricas definidas positivas admiten unadescomposición de la forma

A D GTG ;

donde G es una matriz triangular superior.

– Esta descomposición fue formulada por André Louis Cholesky(1875-1918), comandante del ejército francés de la época,durante la ocupación internacional de Creta en 1906–09.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

104/118

– Las matrices simétricas definidas positivas se presentanhabitualmente en:

Problemas relacionados con el análisis de sistemas eléctricosde generación y transporte de energía.

Ajuste de funciones por mínimos cuadrados.

Análisis de estructuras mecánicas.

En muchos procedimientos de optimización lineal y no lineal.

– En general, en todas aquellas aplicaciones donde al modelizar unsistema, la expresión xTAx mide la energía presente o disponibleen un entorno determinado: esta energía habitualmente es unacantidad positiva.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

105/118

Lema. Las submatrices principales de una matriz definida positivason definidas positivas.

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

Teorema. Si A es una matriz simétrica definida positiva de ordenn, existe una única matriz triangular superior, G , con todos suselementos diagonales positivos, tal que A D G TG .

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

106/118

– Para determinar el algoritmo de descomposición de Cholesky deuna forma directa, procedamos a simularlo con ladescomposición simbólica de una matriz 3 � 3.

– Si se desea obtener la factorización24 a11 a12 a13a12 a22 a23a13 a23 a33

35 D 24 g11 0 0

g12 g22 0

g13 g23 g33

3524 g11 g12 g130 g22 g230 0 g33

35 ;operando de acuerdo con las reglas de multiplicación matricial seobtiene que:

a11 D g211a12 D g11g12

a13 D g11g13

a22 D g212 C g222

a23 D g12g13 C g22g23

a33 D g213 C g223 C g

233:

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

107/118

– Generalizando este proceso se obtiene el algoritmo que describela tabla.

for i D 1 to n

g.i; i/

vuuuta.i; i/ � i�1XkD1

g2.k; i/

for j D i C 1 to n

g.i; j /

[email protected]; j / � i�1ikD1

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

1CA�g.i; i/

endend

– El algoritmo requiere O.n3=6/ operaciones demultiplicación+división y de suma+resta.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

108/118

– Este algoritmo en Matlab sería como sigue.

function G=Chols_1(A)% Factorización de Choleskyn=size(A,1);for i=1:n, j=i+1:n;

A(i,i)=sqrt(A(i,i));A(i,j)=A(i,j)/A(i,i);A(j,j)=A(j,j)-A(i,j)’*A(i,j);

endG=triu(A);

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

109/118

– La factorización de 266645 1 �2 0

1 2 0 0

�2 0 4 1

0 0 1 3

37775 W>> A=[5 1 -2 0;1 2 0 0;-2 0 4 1;0 0 1 3];>> G=Chols_1(A)G =

2.2361 0.4472 -0.8944 00 1.3416 0.2981 00 0 1.7638 0.56690 0 0 1.6366

>> G=chol(A)G =

2.2361 0.4472 -0.8944 00 1.3416 0.2981 00 0 1.7638 0.56690 0 0 1.6366

>>

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

110/118

Matlab y la factorización de Cholesky

– Para resolver un sistema lineal de ecuaciones Ax D b conMatlab utilizando la factorización de Cholesky hay que utilizarla función G=chol(A).

– La solución del sistema correspondiente se puede obtener,teniendo en cuenta que se realiza A D G TG , haciendo

x=G\(G’\b)

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

111/118

– Para utilizar esta operación con un ejemplo de los que estamosmanejando, habría que hacer algo parecido a lo que sigue.

>> A=[5 1 -2 0;1 2 0 0;-2 0 4 1;0 0 1 3];>> b=[1;5;14;15];>> G=chol(A)G =

2.2361 0.4472 -0.8944 00 1.3416 0.2981 00 0 1.7638 0.56690 0 0 1.6366

>> x=G\(G’\b)x =

1.00002.00003.00004.0000

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

112/118

Matrices simétricas semidefinidas positivas

– Una matriz A se dice semidefinida positiva, si para todo x ¤ 0,xTAx � 0.

Teorema. Si A 2 Rn�n es simétrica semidefinida positiva, se cumple

jaij j � .ai i C ajj /=2

jaij j �pai iajj .i ¤ j /

mKaxi;jjaij j D mKax

iai i

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

– Si el algoritmo de Cholesky se aplica a una matriz semidefinidapositiva, y en un paso akk es cero, entonces ajk D 0; j D k; : : : n,por lo que no habría que hacer nada más en la columna k.

En la práctica, los errores de redondeo internos impiden losceros exactos por lo que se recurre a la pivotación.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

113/118

Pivotación

– Para mantener la simetría, las pivotaciones han de sersimétricas: si se intercambian dos filas, también hay queintercambiar las columnas simétricas: A PAPT .

– La pivotación en Cholesky se lleva adelante así:

En cada etapa k del proceso se determina el ele-mento de mayor valor de la diagonal principal,mKaxk�j�n ajj :

Si no es cero, se intercambian las fi-las/columnas p y k, siempre y cuando k ¤ p;

si es cero, el resto de la matriz a factorizarsería nula y no se haría nada más.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

114/118

– Este es el algoritmo de Cholesky con pivotación para matricessemidefinidas positivas.

for i D 1 to nDeterminar índice p 2 fi; i C 1; ng tal que ja.p; p/j D mKaxi�j�nfja.j; j /jgif a.p; p/ > 0Intercambiar filas/columnas p y i .

g.i; i/

sa.i; i/ �

i�1XkD1

g2.k; i/

for j D i C 1 to n

g.i; j /

[email protected]; j / �i�1ikD1

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

1CCA�g.i; i/

endend

end

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

115/118

Matrices simétricas indefinidas

– Una matriz A se dice indefinida si para algún vector x ¤ 0 laforma cuadrática xTAx es positiva y para otros negativa.

– Para factorizar este tipo de matrices se recurre adescomposiciones de pivotación diagonal en bloques de la forma

PAPTD LBLT

donde la matriz L es triangular inferior unitaria y la matriz B estridiagonal, o diagonal en bloques, con bloques de dimensión1 � 1 ó 2 � 2, bidiagonal en este caso.

– Casi todos los códigos modernos utilizan alguna variedad dematriz bidiagonal B en bloques, aunque todavía se usan muchorutinas que implementan algún método en el que esa matriz estridiagonal (T ).

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

116/118

– Los métodos más conocidos se citan a continuación.

Método Estrategia Operaciones

Parlett y Reid PAPTD LTLT O.n3=3/

Aasen PAPTD LTLT O.n3=6/

Bunch y Parlett PAPTD LBLT O.n3=6/CO.n3=6/ compara.

Bunch y Kaufman PAPTD LBLT O.n3=6/C .n2 � 1/ compara.

– El del Bunch y Kaufman (1977), en alguna de sus variantes, esel más utilizado y el que emplean los códigos profesionales parafactorizar matrices simétricas.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

117/118

function [L D P rho] = diagpiv(A)%DIAGPIV Diagonal pivoting factorization with pivoting of a symetric A.% P*A*P’=L*D*L’; L is triangular and D a block diagonal D 1x1 or 2x2.% Rho is the growth factor. This routine does not exploit symmetry.% Bunch and Kaufman (1977), Some stable methods for calculating inertia% and solving symmetric linear systems, Math. Comp. 31(137):163-179.

if norm(triu(A,1)’-tril(A,-1),1), error(’Matrix must be symmetric.’), end

n = max(size(A)); k = 1; D = eye(n); L = eye(n); pp = 1:n;normA = norm(A(:),inf); rho = normA; alpha = (1 + sqrt(17))/8;

while k < n[lambda r] = max(abs(A(k+1:n,k)));r = r(1) + k;if lambda > 0

swap = 0;if abs(A(k,k)) >= alpha*lambda

s = 1;else

temp = A(k:n,r); temp(r-k+1) = 0; sigma = norm(temp, inf);if alpha*lambda^2 <= abs(A(k,k))*sigma

s = 1;elseif abs(A(r,r))>=alpha*sigma

swap = 1; m1 = k; m2 = r; s = 1;else

swap = 1; m1 = k+1; m2 = r; s = 2;end

endif swap

A([m1 m2],:) = A([m2 m1],:); L([m1 m2],:) = L([m2 m1],:);A(:,[m1 m2]) = A(:,[m2 m1]); L(:,[m1 m2]) = L(:,[m2 m1]);pp([m1 m2]) = pp([m2 m1]);

endif s == 1 % s = 1

D(k,k) = A(k,k);A(k+1:n,k) = A(k+1:n,k)/A(k,k); L(k+1:n,k) = A(k+1:n,k);i = k+1:n; A(i,i) = A(i,i) - A(i,k)*A(k,i);

else % s = 2E = A(k:k+1,k:k+1); D(k:k+1,k:k+1) = E;C = A(k+2:n,k:k+1); temp = C/E;L(k+2:n,k:k+1) = temp;A(k+2:n,k+2:n) = A(k+2:n,k+2:n) - temp*C’;

end

if k+s <= nrho = max(rho,max(max(abs(A(k+s:n,k+s:n)))));

endelse % Nothing to do, lambda=0

s = 1; D(k,k) = A(k,k);endk = k + s;if k == n, D(n,n) = A(n,n); break, end

endif nargout >= 3, P = eye(n); P = P(pp,:); endrho = rho/normA;

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

118/118

– Con una matriz de Hankel, el programa funciona así:

>> A = gallery(’ris’,6)A =

0.0909 0.1111 0.1429 0.2000 0.3333 1.00000.1111 0.1429 0.2000 0.3333 1.0000 -1.00000.1429 0.2000 0.3333 1.0000 -1.0000 -0.33330.2000 0.3333 1.0000 -1.0000 -0.3333 -0.20000.3333 1.0000 -1.0000 -0.3333 -0.2000 -0.14291.0000 -1.0000 -0.3333 -0.2000 -0.1429 -0.1111

>> cond(A)ans =

2.2185>> [L D P rho]=diagpiv(A)L =

1.0000 0 0 0 0 00 1.0000 0 0 0 0

-0.1760 0.2160 1.0000 0 0 0-0.3143 0.1714 -1.1905 1.0000 0 0-0.1048 0.3429 0.2646 -0.6667 1.0000 0-0.9778 0.2000 -0.6173 0.6222 0 1.0000

D =0.0909 1.0000 0 0 0 01.0000 -0.1111 0 0 0 0

0 0 -0.9216 0 0 00 0 0 1.7415 0 00 0 0 0 -0.8256 1.92640 0 0 0 1.9264 0.1284

P =1 0 0 0 0 00 0 0 0 0 10 0 0 1 0 00 0 1 0 0 00 0 0 0 1 00 1 0 0 0 0

rho =1.9264

>> eig(A)ans =

-1.5708-1.5705-1.44380.70801.56221.5708

>>