Anda di halaman 1dari 37

1

ALGUNOS TEMAS DE ANÁLISIS


NUMÉRICO
2
Índice general

1. RESOLUCIÓN NUMÉRICA DE SISTEMAS DE ECUACIONES LI-


NEALES 5
1.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2. Métodos directos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.1. Sistemas triangulares . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.2. La eliminación gaussiana . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.3. La factorización de Cholesky . . . . . . . . . . . . . . . . . . . . . . 13
1.2.4. La factorización QR . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.3. Normas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.1. Normas vectoriales . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.2. Normas matriciales . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4. Número de condición y singularidad . . . . . . . . . . . . . . . . . . . . . . 21
1.5. Condicionamiento de un sistema de ecuaciones lineales . . . . . . . . . . . 22
1.6. Métodos Iterativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.6.1. Métodos iterativos clásicos . . . . . . . . . . . . . . . . . . . . . . . 25
1.6.2. El método de gradiente conjugado . . . . . . . . . . . . . . . . . . . 28
1.7. Resolución de un sistema incompatible en el sentido de mı́nimos cuadrados 31
1.8. Comentarios finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3
4
Capı́tulo 1

RESOLUCIÓN NUMÉRICA DE
SISTEMAS DE ECUACIONES
LINEALES

1.1. Introducción
En este tema consideramos el problema de resolver numéricamente un sistema de
ecuaciones lineales:
a11 x1 + a12 x2 + . . . + a1n xn = b1 ,
a21 x1 + a22 x2 + . . . + a2n xn = b2 ,
.................. = ...
an1 x1 + an2 x2 + . . . + ann xn = bn ,

que escrito en forma matricial tiene la forma:


Ax = b, (1.1.1)
donde A = (aij ) es una matriz real n × n y b = (bj ) es un vector columna de IRn .
Supondremos que A es inversible.
Sistemas de ecuaciones lineales surgen de manera directa o indirecta en ciencia, in-
genierı́a, ciencias sociales o en economı́a. Incluso, sin salir de las matemáticas, hay una
gran cantidad de métodos numéricos para resolver otro tipo de problemas (ecuaciones en
derivadas parciales, de interpolación por splines, de aproximación en el sentido de mı́ni-
mos cuadrados, sistemas de ecuaciones no lineales, problemas de optimización, etc.) que
precisan la resolución de sistemas de ecuaciones lineales.

Actividad de ampliación: leer las secciones 6.3.1 y 6.3.2 del libro de Datta [2]
(ejemplos de fı́sica y quı́mica).

Para empezar podemos preguntarnos: ¿por qué la resolución de sistemas de ecuaciones


lineales precisa de un estudio numérico? Recordemos algunos métodos conocidos desde el

5
6 C. Pola

bachillerato. Uno de ellos es la Regla de Cramer, donde cada componente de la solución


queda determinada como el cociente de dos determinantes. Para convencernos de que no
es un método recomendable basta decir que para resolver un sistema de 20 ecuaciones,
necesita calcular 21 determinantes de orden 20 que computados sin ninguna estrategia
especial implica el cálculo de más de 21! multiplicaciones (con un computador que realice
un billón de multiplicaciones por segundo necesitarı́amos más de un año). Otro método
desaconsejable por el gasto computacional que implica es el de calcular x = A−1 b, donde
A−1 es la inversa de A.
Ası́ pués, se precisa el desarrollo de otros algoritmos para resolver numéricamente el
sistema (1.1.1). Los métodos numéricos para resolver sistemas de ecuaciones lineales se
clasifican en métodos directos y métodos iterativos.
Los métodos directos son aquellos que resuelven el problema en un número finito de
pasos proporcionando una solución que está sujeta sólo a errores de redondeo. Trataremos
los métodos gaussianos y los métodos de ortogonalización.
Los métodos iterativos son aquellos que, partiendo de un punto inicial x0 , proporcio-
nan una sucesión de puntos, {x(k) }k∈IN , que, bajo ciertas circunstancias, convergen hacia
la solución del problema. En la práctica sólo se pueden computar un número finito de
puntos, luego, además del error de redondeo, también se encuentra presente el error de
truncamiento. Para estos métodos se debe estudiar la convergencia y la velocidad de con-
vergencia. En la práctica estos métodos son adecuados cuando la matriz A es sparse 1
y de talla grande. Consideraremos los métodos iterativos clásicos: Jacobi, Gauss-Seidel y
relajación (SOR) y el método del gradiente conjugado.

1.2. Métodos directos


1.2.1. Sistemas triangulares
Para empezar nos planteamos resolver el sistema (1.1.1) en un caso sencillo: siendo la
matriz de coeficientes A triangular superior (la Sección 3.1.3 Datta [2]):
ALGORITMO:

PASO 1: Calcular xn = bn /ann

PASO 2: Calcular para i = n − 1, . . . , 1,


n
X
xi = (bi − aij xj )/aii .
j=i+1

Al observar la facilidad con la que se puede resolver el sistema (1.1.1) cuando A es


triangular, es razonable que para resolver un sistema general tratemos de transformarlo
en un sistema equivalente triangular. Esa es la idea básica de los siguientes métodos que
vamos a considerar.
1
Con gran porcentaje de ceros.
RESOLUCIÓN NUMÉRICA DE SISTEMAS DE ECUACIONES LINEALES 7

Actividad de ampliación: Leer ejemplo 3.2.1 de Datta [2] sobre la estabilidad del
método.

1.2.2. La eliminación gaussiana


La eliminación gaussiana es un método apropiado cuando la matriz A es densa y sin
estructura especial. Como algoritmo, la eliminación gaussiana fue conocida bastante antes
que Gauss (un ejemplo 3 × 3 aparece en un manuscrito chino de hace aproximadamente
2000 años). En 1810, Gauss desarrolló un método de eliminación para resolver sistemas
lineales para utilizarlo en la resolución de ciertos problemas de astronomı́a. Sin embargo
sus propiedades numéricas no fueron bien conocidas hasta los años 60 con el trabajo de
J.H. Wilkinson. Desde entonces la eliminación gaussiana ha tenido un papel principal en
análisis numérico.
El método de Gauss es básicamente el algoritmo elemental en el cual la primera ecua-
ción se usa para eliminar la primera variable de las n − 1 últimas ecuaciones, entonces la
nueva segunda ecuación es usada para eliminar la segunda variable de las n − 2 ecuaciones
restantes, etc. Si n − 1 de tales eliminaciones pueden realizarse, entonces el sistema lineal
resultante, que es equivalente al original, es triangular y por tanto se resuelve fácilmente.
Esto es (ver la Sección 3.1.5 de Datta [2]):

ALGORITMO (ELIMINACIÓN GAUSSIANA BÁSICO):


Poner A(0) = A y b(0) = b.

Para k = 1, 2 . . . , n − 1

Para i = k + 1, . . . , n calcular
(k−1)
aik
mik = − (k−1) ,
akk
(k) (k−1) (k−1)
bi = b i + mik bk .

Para j = k + 1, . . . , n
(k) (k−1) (k−1)
aij = aij + mik akj .

Estas fórmulas representan el resultado de multiplicar (en la etapa k−ésima) la k−ési-


(k)
a
ma ecuación por el cociente mik = − ik (k)
y sumar el resultado de la i-ésima ecuación para
akk
(k)
cada i > k. A mik se le llama multiplicador y a akk pivote. Si se detecta algún pivote
cero no se puede continuar el proceso. En ese caso será necesario añadir alguna estrategia
al método como veremos más adelante.

Ejercicio 1.2.1 Hacer el ejemplo 3.1.2 de Datta [2].

El procedimiento de eliminación gaussiana se puede presentar más precisamente for-


mando una secuencia de sistemas de ecuaciones lineales: A(k) x = b(k) , k = 0, . . . , n − 1,
8 C. Pola

(k)
siendo, para k ≥ 1, A(k) = (aij ) con:
 (k−1)



aij si i = 1, 2, . . . , k y j = 1, 2, . . . , n,
0 si i = k + 1, . . . , n y j = 1, 2, . . . , k,


(k)
aij = (k−1)
 (k−1) aik (k−1)
aij − a si i = k + 1, . . . , n y j = k + 1, . . . , n;


(k−1) kj


akk
(k)
y b(k) = (bi ) con:
 (k−1)
 bi si i = 1, 2, . . . , k


(k) (k−1)
bi = (k−1) aik (k−1)
 bi

 − b
(k−1) k
si i = k + 1, . . . , n.
akk

Ası́, al final de la etapa k la matriz del sistema tiene la forma:


(0) (0) (0) (0) (0)
 
a11 a12 . . . a1k a1k+1 ... a1n
 (1) (1) (1) (1) 

 0 a22 . . . a2k a2k+1 ... a2n 
.. .. ..
. a(k−1) (k−1) (k−1)
 
 . . kk akk+1 . . . akn 
A(k) =
 
.. .

.. (k) (k)

 . . 0 ak+1k+1 ... ak+1n 


.. .. .. .. 
. . 0 . . 
 

..
 
(k) (k)
. ... 0 ank+1 ... ann

Interpretación matricial

El método de eliminación gaussiana lleva a la descomposición de A en producto de dos


matrices triangulares. Cada paso del método de eliminación gaussiana consiste en hacer
ceros por debajo de la diagonal en una columna determinada. Dada la matriz A(k−1) ,
el proceso de hacer ceros en la columna k por debajo de la diagonal es equivalente al
producto Mk A(k−1) , siendo
 
1 ... 0 0 ... 0
 . . .. .. .. 
 . . .
 . . . . 

 0 1 0 0
 
= I + m(k) eTk ,

Mk = 
 0

 mk+1k 1 0 

 . .. .. .. . . ..
 .

 . . . . . . 

0 . . . mnk 0 ... 1

donde m(k) = (0, . . . , 0, mk+1k , . . . , mnk )T y ek es el k−ésimo vector de la base canónica


de IRn .
Ası́, en lenguaje matricial, la eliminación gaussiana puede escribirse como

Mn−1 . . . M1 A = U,
RESOLUCIÓN NUMÉRICA DE SISTEMAS DE ECUACIONES LINEALES 9

donde U es triangular superior. Además, como las matrices {Mk }n−1


k=1 son inversibles,

A = LU, (1.2.2)

donde L = M1−1 . . . Mn−1


−1
es una matriz triangular inferior con unos en la diagonal:
 
1 ... 0 0 ... 0

.. .. .. .. 

 −m21 . . . . 

..
 
−m31 . 1 0 0
 
 
.
..

 

 . −mk+1k 1 0 

 .. .. .. .. .. .. 

 . . . . . . 

−mn1 . . . −mnk . . . −mnn−1 1

La factorización (1.2.2) se llama factorización LU de A. A continuación se presenta


un resultado de existencia y unicidad de esta factorización bajo ciertas condiciones (ver
la página 115 de Datta [2] o la página 96 de Golub y Van Loan [3]):

Teorema 1.2.1 Sea A ∈ IRn×n . Si

det(A(1 : k, 1 : k)) 6= 0 para k = 1, . . . , n − 1,

entonces A posee factorización LU. Si la factorización LU de A existe y A es inversible,


entonces la factorización LU es única y det(A) = u11 . . . unn .

Ejercicio 1.2.2 Hacer el ejemplo 5.2.1 de Datta [2].

Esta interpretación matricial de la eliminación gaussiana nos sirve de base para men-
cionar algunas variantes computacionales del método. En concreto, los métodos de Crout
y Doolittle proporcionan una factorización LU calculando los elementos de los factores a
través de ciertas fórmulas deducidas de la ecuación A = LU .
Si se completa la factorización LU de A, la solución del sistema Ax = b puede ser
obtenida resolviendo los siguientes sistemas triangulares:

Ly = b,

U x = y.
En el siguiente resultado se evalúa el coste operativo del método (página 118 de Datta
[2]):

Proposición 1.2.1 La resolución de Ax = b utilizando eliminación gaussiana precisa de


n3 /3 + O(n2 ) flops.

Ejercicio 1.2.3 Comparar la complejidad algorı́tmica de la eliminación gaussiana con la


del método de Cramer o comparar el coste que supone el cálculo de un determinante de
una matriz mediante la elimininación gaussiana con el coste del método clásico estudiado
en álgebra y que consiste en desarrollar el determinante por los elementos de una fila para
llegar a n determinantes de orden n − 1.
10 C. Pola

Aplicación: cálculo de A−1 .

Basta considerar la resolución de n sistemas de ecuaciones lineales: Axk = ek , siendo


ek la k−ésima columna de la matriz identidad. Como en los n sistemas se tiene la mis-
ma matriz de coeficientes, basta realizar una única factorización LU y con los factores
obtenidos hallar los vectores xk (esto es, las columnas de la matriz inversa de A).

Ejercicio 1.2.4 Leer la sección 6.5.1 del libro de Datta [2]) sobre cómo evitar el cálculo
explı́cito de la inversa de una matriz.

Estabilidad de la eliminación gaussiana

Desafortunadamente el método de Gauss presenta algunas dificultades. El análisis del


error ayuda a concretar las dificultades y motiva la introducción de la pivotación y el
escalamiento para tratar de ganar estabilidad. Hasta los años 50, para determinar el com-
portamiento de la eliminación gaussiana se estudiaba la precisión de su solución, esto es,
se trataba de determinar el tamaño de x − x̂, siendo x la solución del sistema Ax = b y x̂
la solución calculada por el método de Gauss. Con este criterio los resultados obtenidos
parecı́an implicar que para muchos sistemas de ecuaciones lineales, los errores de redondeo
provocaban que la solución obtenida no tuviese valor alguno. James Wilkinson durante la
Segunda Guerra Mundial tuvo que resolver, sin la ayuda del computador, sistemas linea-
les que aparecı́an en algunos cálculos balı́sticos y, como comprobación final de la solución
obtenida, él calculaba el residuo Ax − b, que era siempre pequeño. Esta experiencia de
Wilkinson hizo que apareciesen dudas sobre los estudios previos que se habı́an hecho en
torno a la eliminación gaussiana y en los que aparecı́an conclusiones pesimistas. En efecto,
si la matriz es casi singular no es justo pensar que el algoritmo va a obtener una solución
precisa cuando la solución no está bien determinada por los datos del problema, esto es, el
problema es casi el mismo que uno con múltiples soluciones. Además, teniendo en cuenta
que casi cualquier problema al almacenarlo en el computador es cambiado por un proble-
ma próximo, no es razonable esperar que un algoritmo resuelva exactamente un sistema
de ecuaciones lineales. Pero un buen algoritmo resolverá exactamente un problema lige-
ramente perturbado. Otra forma de verlo es que la solución computada se comportará casi
como la solución real, es decir, el residuo será pequeño.
EJEMPLO: Considera el sistema de ecuaciones lineales:

x1 + x2 = 0,5, con  ∈ (0, 1)


x1 + x2 = 1.
0,5 0,5 − 
La solución exacta de este sistema es x̄1 = y x̄2 = .
1− 1−
Si aplicamos la eliminación gaussiana obtenemos:

x1 + x2 = 0,5,
1 0,5
(1 − )x2 = 1 − .
 
RESOLUCIÓN NUMÉRICA DE SISTEMAS DE ECUACIONES LINEALES 11

1 1 0,5 0,5
Sobre el ordenador, para  suficientemente pequeño, 1 − = − y 1− = − ,
   
(c) (c)
de donde obtenemos: x2 = 0,5 y x1 = 0, que es un mal resultado. Sin embargo, si
cambiamos (pivotamos) el orden de las ecuaciones la dificultad ya no aparece. Luego no
se trata de una dificultad intrı́nseca del problema si no del método. Esto es, la eliminación
gaussiana sin pivotación, en el caso general, es inestable.
Motivados por situaciones como las del ejemplo anterior surge el interés de tener una
cota del error de redondeo de la eliminación gaussiana. Para ello es de utilidad la siguiente
notación:
Sean A, B ∈ IRn×n . Entonces denotamos

B = |A| cuando bij = |aij |, i, j = 1, . . . , n.

B ≤ A cuando bij ≤ aij , i, j = 1, . . . , n.

En el resultado siguiente se da una cota del error de la eliminación gaussiana (ver


páginas 105-106 de Golub y Van Loan [3]) en la práctica:

Teorema 1.2.2 Sean L̂ y Û las matrices triangulares computadas durante la factorización


LU de A, una matriz n × n. Sean ŷ y x̂ las soluciones computadas al resolver los sistemas
triangulares L̂y = b y Û x = ŷ respectivamente. Entonces (A + E)x̂ = b, donde

|E| ≤ nεM (3|A| + 5|L̂||Û |) + O(ε2M ) (1.2.3)

siendo εM la precisión del ordenador.

Si no hubiera la posibilidad de que |L̂||Û | fuera grande, la cota obtenida en (1.2.3)


podrı́a considerarse aceptable. Pero en la eliminación gaussiana no hay un regla para evitar
la aparición de pequeños pivotes y si aparece un pivote pequeño entonces se pueden esperar
números grandes en L̂ y Û . Notemos que pequeños pivotes no son necesariamente debidos
a un mal condicionamiento de la matriz; lo que ocurre es que la eliminación gaussiana
puede dar resultados pobres arbitrariamente, incluso para problemas bien condicionados.
Una vez introducida la necesidad del pivoteo de filas, nos planteamos determinar una
versión permutada de A que tenga una factorización razonablemente estable.

Definición 1.2.1 Una matriz P es una matriz de permutación si sus columnas son
una reordenación de las columnas de la matriz identidad.

La pivotación parcial consiste en elegir en cada paso como pivote el elemento de


módulo máximo, elegido entre los candidatos a pivotes, esto es, en la etapa (k + 1)−ésima
(k)
se toma como pivote ap,k+1 cumpliendo:

(k) (k)
|ap,k+1 | = máx |ai,k+1 |,
k+1≤i≤n

produciéndose un intercambio de las filas k + 1 y p.


12 C. Pola

Ejercicio 1.2.5 Aplicar la eliminación gaussiana con pivotación parcial para resolver el
sistema siguiente:

2x − y − z = 1
−x + y − 3z = 0
3x − 3y + 4z = 2

Si denotamos Pk la matriz de permutación correspondiente a la pivotación de filas


realizadas durante la etapa k−ésima, con la implementación de la eliminación gaussiana
con pivotación parcial obtenemos

Mn−1 Pn−1 . . . M1 P1 A = U.

Desde el punto de vista teórico, basta que A sea inversible para que la elimininación
gaussiana con pivotación parcial pueda llevarse a cabo.
La eliminación gaussiana con pivotación parcial consigue acotar los elementos del
factor L como vemos en el siguiente resultado (ver pag. 112 de Golub y Van Loan [3]):

Teorema 1.2.3 Si
Mn−1 Pn−1 . . . M1 P1 A = U
corresponde a la eliminación gaussiana con pivotación parcial de A, entonces

P A = L̃U,

donde P = Pn−1 . . . P1 y L̃ es triangular inferior con unos en la diagonal y |˜lij | ≤ 1.

Una operación de permutación o pivotación no lleva consigo error de redondeo alguno


y como el número de comparaciones es del orden de O(n2 ), la nueva versión de eliminación
gaussiana implica el mismo orden de trabajo que realizarla sin pivotación. El problema
ahora es acotar |U |. Definimos el factor de crecimiento ρ por
(k)
máxijk |aij |
ρ= .
máxij |aij |
Este factor mide cómo de grandes se hacen los números durante el proceso de eliminación.
ρ podrı́a ser tan grande como 2n−1 (ver un ejemplo en la página 132 de Datta [2]). Sin
embargo la aparición de un factor de crecimiento grande es bastante poco frecuente en la
práctica.

Ejercicio 1.2.6 Ver en el ejercicio 9 de la hoja de prácticas un tipo de matrices para las
cuales el factor de crecimiento es menor o igual a 2.

Otra estrategia de pivotaje es la pivotación total. Tiene la propiedad de que el factor


de crecimiento es considerablemente más pequeño que 2n−1 . La etapa (k + 1)−ésima de
la pivotación total consiste en tomar como pivote el elemento de módulo máximo entre
(k)
los elementos de la caja matricial que queda por factorizar: aij , i, j ≥ k + 1 y, después
realizar las correspondientes permutaciones de filas y columnas, proceder al proceso de
eliminación de la variable correspondiente.
RESOLUCIÓN NUMÉRICA DE SISTEMAS DE ECUACIONES LINEALES 13

Ejercicio 1.2.7 Aplica la eliminación gaussiana con pivotación total para resolver el
sistema planteado en el ejercicio anterior.

El número de operaciones para realizar la eliminación gaussiana con pivotación total


es el mismo que el correspondiente a la eliminación gaussiana básica, sin embargo la
estrategia de pivotación total representa una gran sobrecarga para el computador, ya
que en cada etapa tiene que hacer una búsqueda dos dimensional. En realidad precisa
incorporar
n
n(n − 1)(2n + 5)
(k 2 − 1) =
X
comparaciones.
k=2 6
Ası́ que no parece aconsejable, en general, decidirse por la pivotación total.

Ejercicio 1.2.8 Leer las páginas 116, 117 y 125 de Datta [2] sobre detalles computacio-
nales de la implementación de la factorización LU .

Escalamiento

Ejercicio 1.2.9 Leer la Sección 6.4.8 de Datta [2].

Otra estrategia para ganar estabilidad es el escalamiento de filas. Para resolver el


sistema (1.1.1) podemos plantearnos la resolución del sistema escalado:
D1−1 Ax = D1−1 b,
donde D1 es una matriz diagonal. El objetivo del escalamiento es trabajar con un sistema
mejor condicionado que el de partida para intentar obtener más precisión en la solución.
El escalamiento de filas de A afecta a la forma de seleccionar los pivotes en la pivotación
parcial. En la eliminación gaussiana con escalamiento de fila se elige una matriz diagonal
D1 , tal que todas las filas de D1−1 A tengan aproximadamente la misma norma infinito.
Esta técnica reduce la posibilidad de sumar un número muy grande y uno muy pequeño
durante el proceso de eliminación.
También podemos considerar un escalamiento doble, de filas y columnas:
D1−1 AD2 y = D1−1 b,
donde D1 y D2 son dos matrices diagonales, y entonces tomar x = D2 y para determinar
la solución del sistema de partida, Ax = b.
El escalamiento debe estudiarse problema a problema.

1.2.3. La factorización de Cholesky


Un principio básico de la resolución numérica de un problema es intentar aprovechar
la estructura de éste. En esta sección veremos como se puede explotar el que la matriz
A sea simétrica definida positiva a la hora de resolver Ax = b. Ası́, el siguiente resultado
garantiza la existencia y unicidad de una factorización para una matriz simétrica y definida
positiva que será computacionalmente más conveniente que la factorización LU (apropiada
para una matriz sin estructura especial).
14 C. Pola

Teorema 1.2.4 (Teorema de la descomposición de Cholesky) Sea A ∈ IRn×n . Entonces


las siguientes condiciones son equivalentes:

a. A es simétrica definida positiva.

b. Existe una única factorización de la forma

A = LLT , (1.2.4)

donde L es triangular inferior con elementos diagonales positivos.

Observación 1.2.1 1. El militar francés André-Louis Cholesky (1875-1918) desa-


rrolló este método.

2. ALGORITMO DE CHOLESKY:

PASO 1: Calcular l11 = a11 .
ai1
Para i = 2, . . . , n, calcular li1 = .
l11

PASO 2: Para j = 2 . . . , n,
v
u
u j−1
X
2
calcular ljj = ta
jj − ljk
k=1

Para i = j + 1, . . . , n calcular
j−1
X
aij − lik ljk
k=1
lij = .
ljj

3. El algoritmo de Cholesky requiere aproximadamente la mitad de trabajo que la eli-


minación de Gauss y casi la mitad de almacenaje.

4. El resultado nos proporciona un método viable computacionalmente para determinar


si una matriz es definida positiva

5. El método de Cholesky para resolver un sistema lineal Ax = b, siendo A simétrica


definida positiva, consiste en factorizar A = LLT y resolver los dos sistemas lineales
siguientes
Ly = b, LT x = y.

6. La estabilidad del algoritmo de Cholesky se sigue de la desigualdad:


j
2 2
X
lji ≤ ljk = ajj .
k=1
RESOLUCIÓN NUMÉRICA DE SISTEMAS DE ECUACIONES LINEALES 15

De ahı́ que el tamaño de los elementos de L está acotado en función del tamaño de
los elementos de la matriz a factorizar.
En casos extremos pueden aparecer algunas dificultades cuando los errores de redon-
deo causan que el valor de
j−1
2
X
ajj − ljk (1.2.5)
k=1

no sea positivo. Ası́ pués, la estabilidad numérica de la factorización de Cholesky


no sólo requiere que A sea definida positiva sino que sea suficientemente definida
positiva.

1.2.4. La factorización QR
El último método directo de resolución numérica de sistemas de ecuaciones lineales
que vamos a considerar utiliza la factorización QR. Con las técnicas vistas hasta el
momento, el uso de matrices elementales nos permite reducir matrices inversibles a forma
triangular. Ahora obtendremos la triangularización a través de matrices ortogonales que
tienen la interesante propiedad de conservar el tamaño de los vectores:

Proposición 1.2.2 Si H ∈ IRn×n es ortogonal, entonces:

kHxk2 = kxk2 , ∀ x ∈ IRn .

Dada una matriz A, aplicando un producto de matrices ortogonales a A se puede


obtener una matriz triangular: QT A = R o equivalentemente una factorización en la
forma: A = QR, donde Q es ortogonal y R es triangular superior. Para construir la matriz
Q de la factorización QR, utilizaremos el producto de ciertas matrices elementales, las
matrices de Householder:

Definición 1.2.2 Una matriz H se dice matriz de Householder si


hhT
H =I −2 , (1.2.6)
hT h
donde h ∈ IRn , h 6= 0.

Proposición 1.2.3 La matriz H dada por (1.2.6) verifica:

a. Es simétrica y ortogonal;

b. Hh = −h y Hv = v si v T h = 0;

c. det(H) = −1.

Además, estas matrices tienen la siguiente propiedad:

Proposición 1.2.4 Dado un vector x ∈ Rn \ {0}, existe una matriz de Householder H


tal que Hx es un múltiplo del primer vector de la base canónica de IRn , e1 .
16 C. Pola

En efecto, basta considerar


h = x + σe1 ,
donde σ ∈ IR debe verificar |σ| = kxk2 . Por razones de estabilidad numérica !se elige σ =
hhT
signo(x1 )kxk2 , tomando signo(x1 ) = 1 si x1 = 0. Entonces Hx = I − 2 T x = −σe1 .
h h
Gracias a esta última propiedad se consigue la triangularización de A:
Hn−1 . . . H2 H1 A = R,
donde Hi son matrices de Householder y R es una matriz triangular superior. El primer
paso de este proceso será construir una matriz de Householder H1 tal que transforme la
primera columna de A en un múltiplo de e1 (es decir, queremos anular de la componente
2 a la n de la primera columna). Después de la aplicación de la matriz de Householder
H1 , la primera columna de la matriz parcialmente reducida A(1) = H1 A es un múltiplo
de e1 .  
X X ... X
 0 X ... X 
 
(1)
A =  .. ..
 .. ,
.. 
 . . . . 
0 X ... X
donde, en general, todos los elementos de A han sido alterados (incluso la primera fila de
A ha sido cambiada).
En el segundo paso se trata de anular de la componente 3 a la n de la segunda
columna, sin alterar los elementos de la primera fila y columna de A(1) . Esto puede ser
obtenido, considerando la matriz de Householder, H̃2 , que transforme el vector en negrita:
A(1) (2 : n, 2) en un múltiplo del primer vector de la base canónica de IRn−1 . Para no alterar
la primera fila y columna de A(1) definimos
!
1 0
H2 = ,
0 H̃2
que en realidad!puede escribirse como la matriz de Householder determinada por el vector
0
h(2) = , siendo h̃(2) ∈ IRn−1 el vector que determina la matriz de Householder
h̃(2)
hhT
H̃2 ∈ IR(n−1)×(n−1) (esto es H̃2 = I − 2 T con h = h̃(2) ).
h h
Después de n − 1 pasos se obtiene:
QT A = R con QT = Hn−1 . . . H2 H1 y R triangular superior.
Ası́ la resolución del sistema Ax = b se obtiene resolviendo el sistema triangular
equivalente:
Rx = QT b.

Implementación:

No es necesario almacenar los n2 elementos de cada matriz Hk , basta con almacenar


las últimas n − k + 1 coordenadas del correspondiente vector h(k) que la define.
RESOLUCIÓN NUMÉRICA DE SISTEMAS DE ECUACIONES LINEALES 17

Ejercicio 1.2.10 Leer en el libro de Datta [2] los algoritmos que se indican a continua-
ción:
1. El algoritmo 5.4.1 (página 135).

2. El algoritmo 5.4.2 sobre la pre-multiplicación con una matriz de Householder sin


almacenar explı́citamente la matriz.

Coste:

En el siguiente resultado (página 144 de Datta [2]): queda de manifiesto que el método
QR resulta caro computacionalmente frente a la emininación gaussiana.
Proposición 1.2.5 La resolución de Ax = b utilizando el método QR precisa de 2n3 /3
+ O(n2 ) flops.

Estabilidad del método QR

Este método tiene la ventaja de que es muy estable.

Ası́ que, en general, para resolver un sistema de ecuaciones lineales por un método
directo se suele elegir la eliminación gaussiana con pivotación parcial, a no ser que se
desee primar la estabilidad sobre el coste.

Ejercicio 1.2.11 Leer las tablas 6.1 y 6.2 de la página 237 de Datta [2] donde se hacen
comparaciones del coste, factor de crecimiento y estabilidad para los métodos considerados
en los casos de matriz del sistema general o caso especial.

Como veremos más adelante la triangularización ortogonal se aplica sobre todo a


problemas de mı́nimos cuadrados.
A continuación se presenta un resultado de existencia y, bajo ciertas condiciones,
unicidad de la factorización QR (para la demostración de la unicidad ver por ejemplo
Golub y Van Loan [3], pag. 217).

Teorema 1.2.5 (factorización QR de una matriz) Sea A ∈ IRn×n . Entonces existe una
matriz ortogonal Q y una matriz triangular superior R tal que

A = QR.

Además, si la matriz A es inversible y los elementos diagonales de R verifican: Rii > 0


para i = 1, . . . , n, la factorización QR correspondiente es única.

Notemos que si A es inversible, puede obtenerse una factorización QR tal que Rii > 0
para i = 1, . . . , n.
Para finalizar consideraremos algunas funciones de MATLAB relativas a la resolu-
ción de sistemas de ecuaciones lineales:
18 C. Pola

\ Linear equation solution.


inv Matrix inverse.
chol Cholesky factorization.
linsolve Solve a system of linear equations.
lu LU factorization.
qr Orthogonal-triangular decomposition.

Ejercicio 1.2.12 Leer las páginas 123-124 del libro Higham [4] sobre la función “slash”de
MATLAB.

1.3. Normas
El análisis de los algoritmos que involucran matrices suele hacer uso de las normas
matriciales. Por ejemplo, la calidad de la solución numérica de un sistema de ecuaciones
lineales puede ser pobre si la matriz de coeficientes es “casi singular”. Para cuantificar
esa noción de “casi singular”necesitamos medir distancias en el espacio de matrices. Para
esas mediciones nos serán de utilidad las normas matriciales.
Empezaremos repasando algunas cuestiones ya conocidas sobre normas vectoriales,
para después tratar el tema de normas matriciales.

1.3.1. Normas vectoriales


Definición 1.3.1 Una aplicación f : IRn −→ IR se dice que es una norma vectorial si
verifica:

1. f (x) ≥ 0, ∀ x ∈ IRn .

2. f (x) = 0 ⇒ x = 0.

3. f (αx) = |α|f (x), ∀ x ∈ IRn y ∀ α ∈ IR.

4. f (x + y) ≤ f (x) + f (y), ∀ x, y ∈ IRn .

Se suele utilizar la notación kxk en lugar de f (x).

Ejemplos de normas vectoriales son:


n
X
1. kxk1 = |xi | llamada norma 1.
i=1
v
u n 2
uX
2. kxk2 = t x
i llamada norma euclı́dea o norma 2.
i=1

3. kxk∞ = máx |xi | llamada norma infinito o norma del máximo.


1≤i≤n
RESOLUCIÓN NUMÉRICA DE SISTEMAS DE ECUACIONES LINEALES 19

Una desigualdad muy utilizada es la desigualdad de Cauchy-Schwarz:

|xT y| ≤ kxk2 kyk2 , ∀ x, y ∈ IRn .

Todas las normas vectoriales en IRn son equivalentes en el sentido de que dadas dos
normas distintas: k.kv y k.kw , existen constantes α, β > 0 tales que:

αkxkv ≤ kxkw ≤ βkxkv , ∀ x ∈ IRn .

1.3.2. Normas matriciales


Antes de comenzar a tratar las normas matriciales consideremos una definición que
nos será de utilidad:

Definición 1.3.2 Se llama radio espectral de una matriz A y se denota por ρ(A) al
número:
ρ(A) = máx |λ|,
λ∈σ(A)

siendo σ(A) el conjunto de los valores propios de A.

Definición 1.3.3 Una norma matricial es una norma en el espacio vectorial IRn×n que
además verifica la propiedad multiplicativa:

kABk ≤ kAkkBk, ∀A, B ∈ IRn×n .

Ejemplo: Una norma matricial muy usada es la norma de Frobenius definida por:
n
a2ij )1/2 .
X
kAkF = (
i,j=1

En el siguiente ejercicio vemos que la generalización directa de una norma vectorial,


en general, no conduce a una norma matricial.

Ejercicio 1.3.1 kAkM = máx |aij | no define una norma matricial en IRn×n .
1≤i,j≤n

A continuación estudiaremos las relaciones entre normas vectoriales y matriciales.

Definición 1.3.4 Si sobre IRn×n tenemos definida una norma matricial k.kM y sobre IRn
una norma vectorial k.kv , se dice que ambas son compatibles si verifican:

kAxkv ≤ kAkM kxkv , ∀A ∈ Rn×n , ∀x ∈ Rn .

Proposición 1.3.1 La norma de Frobenius es compatible con la norma vectorial euclı́dea.

El siguiente resultado establece cómo obtener una norma matricial compatible con una
norma vectorial dada (ver página 92 de Watkins [6]).
20 C. Pola

Proposición 1.3.2 Dada una norma vectorial k.kv en IRn ,

kAkM = máx kAxkv ,


kxkv ≤1

define una norma matricial que se llama norma matricial subordinada a la norma
vectorial k.kv . Además ambas normas son compatibles.

Ejemplos de normas matriciales en IRn×n son


n
X
1. kAk1 = máx |aij |, llamada norma 1 y subordinada a la norma vectorial k.k1 .
1≤j≤n
i=1
q
2. kAk2 = ρ(AT A), llamada norma espectral subordinada a la norma vectorial
k.k2 .
n
X
3. kAk∞ = máx |aij |, llamada norma infinito subordinada a la norma vectorial
1≤i≤n
j=1
k.k∞ .
La demostración de las afirmaciones anteriores pueden encontrarse en Watkins [6].
Notemos que las normas matriciales presentadas, salvo la norma espectral, son fácil-
mente computables en la práctica. En muchas ocasiones, para evitar el cálculo de la norma
espectral son útiles las desigualdades que la relacionan con las otras normas presentadas
(ver por ejemplo el Teorema 1.7.1 en la página 28 de Datta [2]).
Una propiedad útil es la invarianza de la norma por multiplicación de matrices orto-
gonales:
Proposición 1.3.3 Dadas A ∈ IRn×n una matriz cualquiera y Q ∈ IRn×n una matriz
ortogonal, se verifica: kAkF = kQAkF y kAk2 = kQAk2 .
En el siguiente resultado se expone un procedimiento para generar una norma vectorial
compatible con una norma matricial dada.
Proposición 1.3.4 Dada k.kM una norma matricial en IRn×n , para cada u ∈ IRn \ {0},

kxkv = kxuT kM

define una norma vectorial en IRn compatible con k.kM .

Ejercicio 1.3.2 Probar que las normas matriciales subordinadas verifican: kIkM = 1.
Deducir que la norma de Frobenius no es una norma matricial subordinada.

Finalmente presentamos un resultado que muestra al radio espectral de una matriz


como una cota inferior de cualquier norma matricial.

Teorema 1.3.1 Sea A ∈ IRn×n . Para cualquier norma matricial se cumple:

ρ(A) ≤ kAkM .
RESOLUCIÓN NUMÉRICA DE SISTEMAS DE ECUACIONES LINEALES 21

Definición 1.3.5 Diremos que una sucesión de matrices {A(k) }k∈IN ⊂ IRn×n converge a
una matriz A ∈ IRn si lı́m kA(k) − AkM = 0, siendo k.kM cualquier norma matricial 2 .
k→+∞

Ejercicio 1.3.3 Sean {A(k) }k∈IN ⊂ IRn×n y A ∈ IRn×n tales que:

lı́m A(k) x = Ax, ∀x ∈ IRn .


k→+∞

Probar que lı́m A(k) = A.


k→+∞

Para finalizar consideraremos algunas funciones de MATLAB relativas a las nor-


mas: norm(X,p), siendo X un vector o una matriz y tomando p uno de los valores: 1 ,
2, inf o ’fro’ calcula kXk1 , kXk2 , kXk∞ o kXkF respectivamente. Si no se da el segundo
argumento, MATLAB trabaja con la norma 2.

1.4. Número de condición y singularidad


Debido a que el número kA−1 kkAk aparecerá frecuentemente en los siguientes resul-
tados que presentemos surge la conveniencia de introducir la siguiente definición.

Definición 1.4.1 Sea A ∈ IRn×n inversible. Entonces se llama número de condición


de la matriz A al número
Cond(A) = kAkkA−1 k.

Ejercicio 1.4.1 Probar que Cond(A) ≥ 1.

Ejercicio 1.4.2

a. Probar que si se verifica kAk < |z|, (siendo k.k una norma matricial y z ∈ IR), entonces
la matriz A − zI es inversible.

b. Sea A ∈ IRn×n una matriz inversible. Demostrar que si S es una matriz singular,

1 kA − Sk
≤ .
kAkkA−1 k kAk

Del Ejercicio 1.4.2 se puede deducir alguna relación entre los conceptos de número de
condición y singularidad de matrices. En realidad se puede establecer la relación entre
el condicionamiento de una matriz y la distancia de esa matriz al conjunto de matrices
singulares 3 :
( )
1 kA − Skp
= mı́n : S singular (p = 1, 2 o ∞).
Condp (A) kAkp
2
Todas las normas matriciales en IRn×n son equivalentes.
3
La demostración queda fuera del contenido del curso.
22 C. Pola

Ası́ que un condicionamiento grande implica que la matriz está cerca de ser singu-
lar. Esta medida de proximidad a la singularidad es mejor que la que proporciona el
determinante (ver los dos ejemplos dados en la página 254 de Datta [2]).

Para finalizar esta sección consideraremos algunas funciones de MATLAB relativas


al cálculo del condicionamiento de una matriz: cond(A,p), siendo A una matriz y tomando
p uno de los valores: 1 , 2, inf o ’fro’ calcula el condicionamiento de la matriz usando la
norma k.k1 , k.k2 , k.k∞ o k.kF respectivamente. Si no se suministra el segundo argumento,
MATLAB trabaja con la norma 2.

1.5. Condicionamiento de un sistema de ecuaciones


lineales
En esta sección estudiaremos qué propiedades del problema intervienen en la sensi-
bilidad de la solución ante perturbaciones en los datos. Empezaremos considerando los
efectos sobre la solución de Ax = b, siendo A inversible y b 6= 0, al perturbar sólo uno de
los dos elementos del problema: la matriz A o el vector b (ver las secciones 6.6.1 y 6.6.2
de Datta [2]).
Proposición 1.5.1 Sean A ∈ IRn×n inversible, b, bε ∈ IRn ( b 6= 0), x̄ y z̄ las soluciones
respectivas de los sistemas:
Ax = b,
Az = b + bε .
Entonces:
kx̄ − z̄k kbε k
≤ kAk kA−1 k , (1.5.7)
kx̄k kbk
donde las normas vectoriales y matriciales que aparecen son compatibles.
La cota dada en (1.5.7) es la mejor posible, en el sentido de que dada una matriz A
existen b y bε verificando la anterior acotación como igualdad (usando una norma vectorial
y su norma matricial subordinada). Ası́ que podemos considerar al número de condición
de A como un factor de amplificación del error relativo o una medida de la sensibilidad
del error relativo en la solución a cambios en los datos.
Ejercicio 1.5.1 Sean A ∈ IRn×n una matriz inversible, b ∈ IRn \ {0}, x̄ y z̄ las soluciones
respectivas de los sistemas:
Ax = b,
(A + Aε )z = b.
Probar que:
kz̄ − x̄k kAε k
≤ kAk kA−1 k (1.5.8)
kz̄k kAk
(tomando la norma vectorial y matricial compatibles).
Además la cota es óptima en el sentido de que existen casos particulares para los que
se alcanza la igualdad.
RESOLUCIÓN NUMÉRICA DE SISTEMAS DE ECUACIONES LINEALES 23

Observación 1.5.1 A continuación presentamos cotas para el error kAε k/kAk asociado
a distintos métodos de resolución de sistemas.
Método LU con pivotación parcial: kAε k∞ /kAk∞ ≤ cn3 ρεM , siendo c una constan-
te y ρ el factor de crecimiento (ver página 610 de Datta [2]).

Método de Cholesky: kAε k2 /kAk2 ≤ cεM , siendo c una constante dependiendo de n


(ver página 225 de Datta [2]).

A continuación consideramos el caso general: estimar los efectos que los cambios en
los datos del problema (la matriz A y el vector b) producen sobre la solución del sistema
Ax = b (ver página 249 del libro de Datta [2]).
Teorema 1.5.1 Sean A una matriz n × n inversible, b ∈ IRn , b 6= 0, x̄ y z̄ las soluciones
respectivas de los sistemas:
Ax = b,
(A + Aε )z = b + bε ,
Si kA−1 kkAε k < 1, entonces
!
kx̄ − z̄k Cond(A) kAε k kbε |
≤ + ,
kx̄k kAε k kAk kbk
1 − Cond(A)
kAk
donde las normas vectoriales y matriciales que aparecen son compatibles.
Notemos que si tenemos acotado el error relativo en los datos por una constante :

kAε k ≤ kAk y kbε k ≤ kbk,

y el condicionamiento de la matriz A verifica Cond(A) < 1, entonces se tiene


kx̄ − z̄k 2
≤ Cond(A).
kx̄k 1 − Cond(A)

Para finalizar esta sección presentamos un resultado que relaciona el residuo, el número
de condición y la precisión de la solución computada (ver página 253 de Datta [2]).

Teorema 1.5.2 Sea x̄ la solución exacta de Ax = b con b 6= 0, xc una solución aproxi-


mada y r = b − Axc . Entonces:
1 kb − Axc k kxc − x̄k krk
≤ ≤ Cond(A) .
Cond(A) kbk kx̄k kbk

Observación 1.5.2
1. Debemos precisar que Cond(A) es un buen indicador del condicionamiento de un
sistema lineal, no del condicionamiento de cualquier otro problema asociado a la
matriz A.
24 C. Pola

2. El condicionamiento de un sistema lineal puede mejorar!con un escalamiento adecua-


1 0
do. Veamos un sencillo ejemplo: para A = , Cond(A) = 10s y tomando
0 10−s
!
1 0
D= , Cond(DA) = 1, siendo s ∈ IN.
0 10s

1.6. Métodos Iterativos


Muchos problemas en la práctica requieren la solución de grandes sistemas de ecua-
ciones lineales Ax = b en los que la matriz A es afortunadamente sparse (rala o hueca).
Sistemas de este tipo aparecen frecuentemente en la resolución numérica de problemas
de ecuaciones diferenciales. Los métodos directos sin precauciones especiales tienden a
proporcionar factores densos, haciendo que el número de operaciones aritméticas necesa-
rias para la solución y el tamaño de las matrices que hay que almacenar sean demasiado
grandes. Para la resolución de este tipo de problemas existen dos tipos de técnicas: la
adaptación de métodos directos para explotar el hecho de que la matriz sea sparse (recor-
demos a la función “tridisolve”) y los métodos iterativos. Centrémonos en estos últimos.
La idea de un método iterativo es la construcción de una sucesión de vectores, {x(k) }k∈IN ,
tal que, lı́m x(k) = x̄, siendo x̄ la solución del sistema. Para construir esa sucesión, se
k→+∞
parte de un vector inicial, x(0) , y el resto de los vectores se generan a partir de una fórmula:

x(k) = F (x(k−1) ),

siendo F una función que define al método.


La evaluación de un método iterativo se centra en la convergencia.

Definición 1.6.1 Se dice que un método iterativo converge si

lı́m x(k) = x̄, ∀x(0) ∈ IRn .


k→+∞

Si el método es convergente y F es continua, entonces x̄ = F (x̄).

Definición 1.6.2 Un método cumpliendo la igualdad anterior se dice consistente.

En la práctica, en lugar de una sucesión de vectores, sólo se pueden calcular un número


finito de términos de la sucesión y los algoritmos precisarán la utilización de criterios de
parada. En primer lugar precisamos de un criterio para determinar cuando la estimación
obtenida de la solución es aceptable. Un sencillo criterio consiste en parar el algoritmo
cuando se cumple una de las siguientes condiciones:

kx(k) − x(k−1) k
≤ ε1 ,
máx {1, kx(k) k}
kAx(k) − bk ≤ ε2 (kbk).
RESOLUCIÓN NUMÉRICA DE SISTEMAS DE ECUACIONES LINEALES 25

donde ε1 > 0 y ε2 > 0 son dos parámetros dados en función de la precisión de la máquina.
Además, incluso cuando no se haya obtenido una aproximación aceptable, es deseable
parar la computación cuando el progreso es irrazonablemente lento o cuando se ha con-
sumido una cantidad especı́fica de recursos (por ejemplo tiempo de CPU). Con este fin se
suele fijar un número máximo de iteraciones a realizar por el algoritmo.

1.6.1. Métodos iterativos clásicos


Llamaremos métodos iterativos clásicos a los métodos de Jacobi, Gauss-Seidel y SOR.
Estos métodos se presentan bajo la forma general:

M x(k) = N x(k−1) + b (1.6.9)

donde M y N provienen de descomponer la matriz A: A = M − N, con M inversible.4

Proposición 1.6.1 El esquema presentado corresponde a un método consistente.

La idea consiste en elegir matrices M sencillas que permitan resolver el sistema (1.6.9)
con facilidad. Para este fin introducimos la siguiente descomposición de la matriz A, que
se supone inversible: A = L̃ + D̃ + Ũ , donde

0 0 ··· ··· 0 0 a12 a13 · · · a1n


   
 a
 21 0 ··· 0 


 0 0 a23 · · · a2n 

 ... ..   .. .. .. .. .. 
L̃ = 
 a31 a32 . 
 , Ũ =

 . . . . . 


.. .. ..
 
.. 
. . . 0 0 . 0 an−1,n 
   
  
an1 an2 · · · an,n−1 0 0 0 ··· 0 0

y D̃ = diag(a11 , a22 , . . . , ann ).


El método de Jacobi consiste en tomar

M = D̃, N = −L̃ − Ũ .

ALGORITMO de Jacobi:

PASO 1: Elegir x(0) ∈ IRn .

PASO 2: Mientras no se satisfaga el test de parada, calcular

 
 n 
(k) 
−
X (k−1) 
xi =  aij xj + bi 
 /aii , i = 1, . . . , n.
 j=1 
j 6= i

4
En este caso, la función que define el método viene dada por: F (x) = M −1 N x + M −1 b.
26 C. Pola

Obviamente el método de Jacobi no podrá realizarse si algún elemento diagonal es ce-


ro. Notemos que para calcular una componente cualquiera del vector x(k) se utilizan n − 1
coordenadas del vector x(k−1) ; ası́ pués para su implementación es necesario almacenar
dos vectores de n componentes. Notemos además que el método de Jacobi no utiliza la
(k)
información más reciente disponible; ası́ cuando se calcula xi no se utilizan las coorde-
nadas de x(k) ya calculadas. Si realizamos una modificación en el método de Jacobi a fin
de utilizar tales coordenadas, obtenemos:
 
i−1 n
(k) − aij x(k)
X X (k−1)
xi = j − aij xj + bi  /aii , i = 2, . . . , n − 1,
j=1 j=i+1
 
n−1
(k)
xn(k)
X
= − anj xj + bn  /ann ,
j=1

que se corresponde con el método de Gauss-Seidel, donde

M = D̃ + L̃, N = −Ũ .

La puesta en práctica del método de Gauss-Seidel sólo precisa el almacenamiento de n


componentes para el cálculo de cada iteración, con lo que el consumo de memoria es la mi-
tad que el de Jacobi. Evidentemente el método de Gauss-Seidel tampoco podrá utilizarse
si algún elemento diagonal de la matriz de datos es cero.

Convergencia
Estudiemos la convergencia de los métodos que siguen el esquema:

x(k) = F (x(k−1) ), con F (x) = Bx + c, (1.6.10)

siendo B ∈ IRn×n y c ∈ IRn . A B se le llama la matriz del método.


El resultado siguiente (ver la página 272 de Datta [2]) da el criterio fundamental de
convergencia para estos métodos. Notemos que nada más interviene la llamada matriz del
método.

Teorema 1.6.1 Dado un método iterativo basado en el esquema (1.6.10), si es consistente


y lı́m B k = 0, entonces el método es convergente.
k→+∞

A continuación consideramos algunos casos de aplicación del resultado anterior.

Proposición 1.6.2 Si la matriz del sistema verifica alguna de las siguientes condiciones:
n
X aij
i. r = máx | | < 1,
1≤i≤n
j=1,j6=i aii
n
X aij
ii. r = máx | |<1,
1≤j≤n
i=1,i6=j aii

entonces el método de Jacobi es convergente.


RESOLUCIÓN NUMÉRICA DE SISTEMAS DE ECUACIONES LINEALES 27

Para los sistemas de ecuaciones lineales cuyas matrices verifiquen una de las dos condi-
ciones del resultado anterior, el método de Jacobi es convergente. En particular podemos
aplicar el resultado a las matrices diagonalmente dominantes en sentido estricto.
A continuación presentamos un resultado de convergencia para el método de Gauss-
Seidel que puede ser aplicado en el caso particular de matrices diagonalmente dominantes
por filas en sentido estricto.
Proposición 1.6.3 Sean {x(k) }k∈IN una sucesión generada con el método de Gauss-
n
X aij
Seidel y e(k) = x(k) − x̄. Si la matriz del sistema verifica: r = máx | | < 1,
j=1,j6=i aii
1≤i≤n

entonces ke(k) k∞ ≤ rk ke(0) k∞ y el método es convergente.


El método de Gauss-Seidel es atractivo por su simplicidad, pero desafortunadamente
puede ser muy lento. En ciertos casos es posible acelerar considerablemente la convergencia
del método de Gauss-Seidel considerando la siguiente modificación: dado el punto de la
iteración k-ésima, x(k) , se calcula la iteración de Gauss-Seidel para la componente i-ésima:
i−1 n
(k) X (k) X (k−1)
x̂i = (− aij xj − aij xj + bi )/aii , (si aii 6= 0) (1.6.11)
j=1 j=i+1

como un valor intermedio, y se toma como valor final de la nueva aproximación para la
i-ésima componente a
(k) (k) (k−1)
xi = ωx̂i + (1 − ω)xi , con ω ∈ IR, ω > 0. (1.6.12)
Estos dos pasos constituyen el llamado método de relajación (SOR 5 ). En realidad
este método desde un punto de vista formal puede formularse como en (1.6.9), tomando
1 1−ω
M = L̃ + D̃ y N = D̃ − Ũ .
ω ω
La teorı́a clásica del método SOR fue desarrollada por Young en 1950 en su tesis.
En el siguiente resultado se analiza la convergencia del método SOR en el caso de que
la matriz A sea simétrica definida positiva.
Teorema 1.6.2 (Ostrowski). Si A simétrica y definida positiva y ω ∈ (0, 2), entonces
SOR es convergente.
Este resultado se aplica frecuentemente ya que muchas matrices que aparecen en la
resolución numérica de ecuaciones diferenciales son simétricas y definidas positivas. Para
su demostración es útil el siguiente teorema que presenta una hipótesis equivalente a la
dada en el Teorema 1.6.1.
Teorema 1.6.3 Sea B ∈ IRn×n . Son equivalentes:
a. lı́m B k = 0.
k→+∞

b. ρ(B) < 1.
Observación 1.6.1 La elección de un valor óptimo para ω es una tarea difı́cil en general.
Definición 1.6.3 La cantidad −log(ρ(B)) se denomina tasa de convergencia del
método iterativo cuya matriz es B.
5
Successive Over-Relaxation
28 C. Pola

1.6.2. El método de gradiente conjugado


En esta sección presentamos un método para resolver sistemas de ecuaciones lineales
de talla grande con matriz de coeficientes definida positiva que no presenta la dificultad
de depender de parámetros que a veces son difı́ciles de elegir. Para presentar el método
de gradiente conjugado nos será de utilidad el siguiente resultado que relaciona un la
resolución de un sistema con un problema de minimización (ver página 283 de Datta
[2])):

Teorema 1.6.4 Si A ∈ IRn×n es simétrica y definida positiva, entonces resolver: Ax = b


es equivalente a minimizar la función cuadrática:
1
f (x) = xT Ax − xT b. (1.6.13)
2
Además el único mı́nimo de (1.6.13), x̄, es la solución de Ax = b.

A lo largo de esta sección la matriz A se considera simétrica definida positiva.


La mayorı́a de los métodos de minimización son métodos iterativos que generan una
sucesión {x(k) }k∈IN en la forma:

x(k+1) = x(k) + ρk d(k) , (1.6.14)

donde d(k) es un vector, llamado dirección de descenso (por verificarse que a lo largo de esa
dirección la función f decrece, al menos para desplazamientos suficientemente pequeños)
y ρk es un escalar que indica la longitud del desplazamiento (o paso) en esa dirección.
Una vez calculada dk , una forma de elegir la longitud del paso consiste en minimizar f a
lo largo de la lı́nea xk + ρdk :

ρk = arg mı́n f (x(k) + ρd(k) );


ρ

esto es:
(d(k) )T r(k)
ρk = , con r(k) = b − Ax(k) . (1.6.15)
(d(k) )T Ad(k)
Para determinar las direcciones de descenso será útil la siguiente definición.

Definición 1.6.4 Un conjunto de direcciones {d(0) , d(1) , . . . , d(k) } ⊂ IRn son A-conjugadas
si verifican:
(d(i) )T Ad(j) = 0, para i 6= j. (1.6.16)

Una propiedad útil de las direcciones conjugadas es la siguiente:

Proposición 1.6.4 Las direcciones A-conjugadas distintas de cero son linealmente inde-
pendientes.

A continuación veremos que las direcciones A-conjugadas nos permiten obtener un


esquema (1.6.14) convergente a x̄ en un máximo de n iteraciones (ver página 243 de
Luenberger [5]).
RESOLUCIÓN NUMÉRICA DE SISTEMAS DE ECUACIONES LINEALES 29

Teorema 1.6.5 del subespacio en expansión Sea {d(0) , d(1) , . . . , d(n−1) } ⊂ IRn un
conjunto de direcciones A-conjugadas. Entonces, para cualquier x(0) ∈ IRn , los puntos
{x(k) : k = 1, . . . , n} calculados con las fórmulas (1.6.14) y (1.6.15) verifican que x(k) es
la solución de 
 Minimizar f (x) = 1 xT Ax − xT b


2

(P ) k ,


sujeto a x ∈ x0 + Bk

siendo Bk =< d(0) , d(1) , . . . , d(k−1) > 6

Uno de estos métodos de dirección conjugada es el de gradiente conjugado, que fue


introducido por Hestenes y Stiefel en 1952:

DATOS: x(0) ∈ IRn , r(0) = b − Ax(0) y k = 0.

Mientras r(k) 6= 0,

Cálculo de la dirección:

• Si k = 0, d(0) = r(0) .
−(r(k) )T Ad(k−1)
• Si k > 0, d(k) = r(k) + βk−1 d(k−1) con βk−1 = .
(d(k−1) )T Ad(k−1)

(d(k) )T r(k)
Cálculo del desplazamiento: ρk = .
(d(k) )T Ad(k)

Cálculo de nuevo punto: x(k+1) = x(k) + ρk d(k) .

Cálculo del nuevo residuo: r(k+1) = r(k) − ρk Ad(k)

k = k + 1.

Observación 1.6.2 1. Las direcciones generadas por el método anterior, d(k) = r(k) +
(k−1)
βk−1 d , son A-conjugadas. Por ello y por verificarse que r(k) = −∇f (x(k) ) siendo
f la función definida en (1.6.13), el método recibe el nombre de gradiente conjugado.

2. En la práctica es más aconsejable calcular los desplazamientos y los coeficientes que


aparecen multiplicando a las direcciones con las siguientes fórmulas:

(r(k) )T rk (r(k) )T r(k)


ρk = y βk−1 = .
(d(k) )T Ad(k) (r(k−1) )T r(k−1)

3. El coste computacional de cada iteración es modesto: sólo se requiere calcular una


vez Ad(k) y 5n productos.
6
< d(0) , d(1) , . . . , d(k−1) > denota el subespacio generado por los vectores {d(0) , d(1) , . . . , d(k−1) }.
30 C. Pola

4. Este método, desde un punto de vista teórico puede considerarse un método directo
(obtiene la solución en n iteraciones). Sin embargo, en la práctica realizar n itera-
ciones puede resultar demasiado caro, por lo que se implementa como un esquema
iterativo con los correspondientes criterios de parada. La idea de trabajar con el
método de gradiente conjugado como método iterativo es debida a Reid (1971).

5. En cuanto a la convergencia, definiendo kxkA = xT Ax, se puede probar que:
q k
Cond2 (A) − 1
kxk − x̄kA ≤ 2  q  kx0 − x̄kA .
Cond2 (A) + 1

En la práctica es aconsejable añadir una técnica, llamada precondicionamiento, para


tratar de reducir el número de condición del problema. La idea de base del precon-
dicionamiento es aplicar el método de gradiente conjugado al sistema transformado

Ãx̃ = b̃, (1.6.17)

donde à = C −T AC −1 , x̃ = Cx, b̃ = C −T b, siendo C una matriz inversible. Esta


transformación se realiza con el objetivo de que el sistema (1.6.17) esté mejor con-
dicionado que el de partida. Pero, más que precondicionar el sistema explı́citamente
(considerando (1.6.17)), se tratará de utilizar el sistema de partida e introducir
implı́citamente el precondicionamiento en el algoritmo. Reformulando el algoritmo
de gradiente conjugado para el problema (1.6.17), evitando toda referencia a C −1 y
tomando M = C T C, se obtiene el algoritmo del método de gradiente conjugado
precondicionado (ver la Sección 10.3 de Golub y Van Loan [3]):

Resolver M z (k) = r(k)


Cálculo de la dirección:
• Si k = 0, d(0) = z (0) .
(r(k) )T z (k)
• Si k > 0, d(k) = z (k) + βk−1 d(k−1) con βk−1 = .
(r(k−1) )T z (k−1)
(r(k) )T z (k)
Cálculo del desplazamiento: ρk = .
(dk )T Adk
Cálculo de nuevo punto: x(k+1) = x(k) + ρk d(k) .
Cálculo del nuevo residuo: r(k+1) = r(k) − ρk Ad(k)

Hay numerosas formas de elegir la matriz M del precondicionamiento. Se tratará de


que el sistema asociado no sea costoso de resolver, intentando conservar la estructura
sparse del problema (ver por ejemplo la página 286 de Datta [2]).

6. Probablemente este método implementado con una estrategia de precondicionamiento


es el más utilizado en la actualidad para resolver los sistemas de talla grande cuando
la matriz es simétrica y definida positiva.
RESOLUCIÓN NUMÉRICA DE SISTEMAS DE ECUACIONES LINEALES 31

7. Para el caso no simétrico o el caso simétrico indefinido se han presentado diferentes


generalizaciones del método de gradiente conjugado. Para el caso no simétrico se ha
desarrollado el método de residuo minimal generalizado (GMRES) que queda fuera
del contenido de este curso.

Para finalizar consideraremos algunas funciones de MATLAB relativas a las ma-


trices sparse:
speye Matriz identidad.
spdiags Genera una matriz a partir de las diagonales.
sparse Almacena los elementos no nulos de una matriz llena.
full Genera una matriz llena a partir de una sparse.
spy Visualiza la ubicación de los elementos no cero.
pcg Método de gradiente conjugado precondicionado.
gmres Método GMRES.

1.7. Resolución de un sistema incompatible en el


sentido de mı́nimos cuadrados
Una tarea frecuente en ciencia es la de encontrar una función que mejor ajuste un
conjunto de datos. Empecemos por un sencillo ejemplo: dados unos datos

(ti , yi ) ∈ IR2 , i = 1, . . . , m

obtenidos en algún experimento cientı́fico y para los que se tiene alguna base teórica
para suponer que debieran estar sobre una recta, se desea determinar dicha recta: p(t) =
x1 + x2 t. Si los datos no son exactos (por ejemplo debido a errores en las mediciones), los
puntos no estarán alineados y por tanto no será posible encontrar x1 y x2 tales que

p(ti ) = yi para i = 1, 2, . . . , m.

En su lugar podemos plantearnos el problema de hallar x ∈ IR2 tal que minimice


m m
(p(ti ) − yi )2 = (x1 + ti x2 − yi )2 ,
X X

i=1 i=1

o lo que es lo mismo, (
mı́n kAx − bk22 ,
2
x ∈ IR
siendo A ∈ IRm×2 la matriz cuya fila i-ésima es: (1 ti ) y b ∈ IRm tal que bi = yi para
i = 1, 2, . . . , m.
n
X
En general, si el modelo para aproximar los datos toma la forma: p(t) = xj Φj (t),
j=1
se obtiene el siguiente problema:
(
mı́n kAx − bk22 ,
(P ) n (1.7.18)
x ∈ IR
32 C. Pola

siendo A ∈ IRm×n la matriz de elementos aij = Φj (ti ) y b ∈ IRm tal que b = y.


Dados una matriz, A ∈ IRm×n , y un vector, b ∈ IRm , cualesquiera, al problema (P) se
le llama problema de mı́nimos cuadrados lineal.
El concepto del estimador de mı́nimos cuadrados fue descubierto por Gauss en 1795
para analizar datos. Pronto se convirtió en una herramienta estándar en astronomı́a (un
famoso ejemplo fue la predicción, hecha por Gauss, de la órbita del asteroide Ceres en
1801).
Los métodos más eficaces para resolver (1.7.18) están basados en factorizaciones ma-
triciales utilizando matrices ortogonales (idea debida a Golub en 1965). Como la norma
k.k2 es invariante por el producto de matrices ortogonales, es razonable intentar trans-
formar el problema (1.7.18) en uno más sencillo, multiplicando por una matriz ortogonal
QT :
mı́nn kQT Ax − QT bk22 .
x∈IR

Para nuestro propósito nos será de utilidad ampliar la factorización QR, ya vista en
este tema, a matrices no cuadradas (ver página 158 de Watkins [6] o la Sección 5.4.2 de
Datta [2]):

Teorema 1.7.1 Sea A ∈"IRm×n# , m > n. Entonces existen Q ∈ IR


m×m
y R ∈ IRm×n tales

que Q es ortogonal, R = , con R̂ ∈ IRn×n triangular superior y A = QR.
0

Utilizando dicha factorización, obtenemos el siguiente resultado (ver página 160 de


Watkins [6] o la página 334 de Datta [2]):

Teorema 1.7.2 Sean A ∈ IRm×n y b ∈ IRm , m > n. Si rango(A) = n, entonces el


problema (1.7.18) tiene una solución única, que puede ser calculada resolviendo el sistema

R̂x = c,
" #
n c
donde c ∈ IR es tal que = QT b, siendo Q y R̂ como en el teorema anterior.
d

El resultado anterior nos proporciona un método para resolver el problema de mı́ni-


mos cuadrados de rango máximo.

Ejercicio 1.7.1 Leer la Sección 7.8.2 de Datta [2], hasta la página 337, donde se tra-
tan cuestiones de implementación del método de Golub-Householder, el coste y la
estabilidad del método.

El coste principal del método de Golub-Householder se centra en la factorización QR


n
de la matriz del problema que precisa n2 (m − ) flops.
3
Cuando la matriz A es de rango deficiente se implementa la factorización QR con
pivotación de columnas (ver página 164 de Watkins [6] o Sección 5.7 de Datta [2]):
RESOLUCIÓN NUMÉRICA DE SISTEMAS DE ECUACIONES LINEALES 33

Teorema 1.7.3 Sea A ∈ IRm×n , m ≥ n con rango(A) = r < n. Entonces existen una
matriz de permutación P ∈ IRn×n , una matriz ortogonal Q ∈ IRm×m tales que
!
T R̂ R̃
Q AP = ,
0 0

siendo R̂ ∈ IRr×r triangular superior con elementos diagonales distintos de cero.

Utilizando dicha factorización, obtenemos el siguiente resultado (ver Sección 7.8.3 de


Datta [2]):

Teorema 1.7.4 Sean A ∈ IRm×n y b ∈ IRm , m ≥ n. Si ! rango(A) = r < n, entonces el


y
problema (1.7.18) tiene infinitas soluciones x = P , que verifican el sistema:
z

R̂y = c − R̃z,
" #
r c
donde c ∈ IR es tal que = QT b y Q, R̂ y R̃ son como en el teorema anterior.
d

Observación 1.7.1 1. La solución obtenida tomando z = 0 en el teorema anterior se


llama solución básica.
2. Notemos que en MATLAB puede utilizarse \ y pinv para la resolución de problemas
de mı́nimos cuadrados. El primero para calcular la solución básica y el segundo para
calcular la solución de norma mı́nima.
3. En el caso de rango deficiente la estabilidad del método se resiente:
En 1974 Lawson y Hanson probaron que el método es estable en el caso de rango
máximo: la solución computada, xc , es solución de un problema “próximo”:
(
C mı́n k(A + Aε )x − (b + bε )k22 ,
(P )
x ∈ IRn

donde

kAε kF ≤ Km,n εM kAkF + O(ε2M )


kbε k2 ≤ Km,n εM kbk2 + O(ε2M ),

con Km,n = (6m − 3n + 41)n.


En el caso de rango deficiente probaron que la solución de norma mı́nima calculada,
x̂c , está ”próxima a una solución de un problema “próximo”:

kxc − x̂c k2 ≤ K̂n,r εM kxc k2 + O(ε2M ),

donde xc es solución de (P C ) y K̂n,r depende del número de columnas y del rango


de la matriz A.
34 C. Pola

4. Si se estudia el condicionamiento de un problema de mı́nimos cuadrados


(es decir la sensibilidad de la solución de una formulación mı́nimo cuadrática ante
perturbaciones en los datos) para el caso de rango máximo (ver Sección 7.7 de Datta
[2]) se obtienen algunos resultados similares a los ya obtenidos para el problema
de resolver un sistema de ecuaciones lineales. En el caso que nos ocupa ahora, el
número kAkkA† k 7 interviene en la medida de la sensibilidad del error relativo en
las soluciones ante perturbaciones en los datos. Por lo tanto es natural generalizar
la definición de condicionamiento de una matriz a matrices rectangulares:

Definición 1.7.1 Sea A ∈ IRm×n con rango(A) = n < m. Entonces se llama


número de condición de la matriz A al número

Cond(A) = kAkkA† k8 .

En caso de perturbación del término independiente, b + δb , se obtiene la siguiente


acotación:

kx(E) − x(c) k2 k(δb )R k2


(E)
≤ Cond2 (A) ,
kx k2 kbR k2

siendo x(E) y x(c) las soluciones respectivas del problema inicial y del problema per-
turbado y bR 6= 0 y δbR las proyecciones sobre el subespacio R(A) de los vectores b
y δb respectivamente.
En el caso más general de estimar los efectos que las perturbaciones en los datos del
problema (en la matriz A, δA , y en el vector b, δb ) producen sobre la solución del
problema mı́nimo cuadrático de rango máximo se obtiene (ver página 244 del libro
de Golub y Van Loan [3]) la siguiente acotación:

kx(E) − x(c) k2 ε 
2

≤ √ 2Cond2 (A) + η(Cond2 (A)) + O(ε2 ),
kx(E) k2 1 − η2

kδA k2 kδb k2
donde < ε, < ε, εcond2 (A) < 1 y η = kAx(E) − bk2 /kbk2 . Notemos
kAk2 kbk2
que en el condicionamiento del problema, además del condicionamiento de la matriz,
interviene el tamaño del residuo. Si el residuo es pequeño, en la cota tendrá más
peso el término del condicionamiento de la matriz que el término donde aparece
dicho condicionamiento al cuadrado.
Por otro lado, en relación a los residuos de ambos problemas, r(E) = Ax(E) − b y
r(c) = (A + δA )x(c) − (b + δb ), se tiene la siguiente desigualdad:

kr(E) − r(c) k2
≤ ε(1 + 2Cond2 (A)) + O(ε2 ).
kbk2
7
A† = (AT A)−1 AT es lo que se llama la inversa generalizada.
8
Generalizando el concepto de norma matricial a matrices rectangulares.
RESOLUCIÓN NUMÉRICA DE SISTEMAS DE ECUACIONES LINEALES 35

5. Para resolver el problema de mı́nimos cuadrados de rango máximo puede plan-


tearse la resolución de las ecuaciones normales: AT Ax = AT b. Este procedi-
miento puede presentar más dificultades numéricas que el anterior (algunas de
ellas debido a que en este caso el condicionamiento del problema viene dado por
Cond2 (AT A) = (Cond2 (A))2 ).

Ejercicio 1.7.2 Ver la Tabla 7.2 de la página 361 de Datta [2] donde se comparan dife-
rentes métodos.

1.8. Comentarios finales


1. Para la resolución numérica de un sistema de ecuaciones lineales se han presentado
dos tipos de métodos: directos e iterativos. En los segundos se presentan dos tipos
de errores: el error de redondeo (propio de la aritmética computacional) y el error
de truncamiento (propio de cualquier método iterativo). Ası́ pués, salvo que la talla
del problema lo desaconseje, se utilizarán métodos directos.

2. Sólo se ha presentado una introducción a los métodos iterativos.

3. Se tratará de evitar el cálculo de la inversa de una matriz, siempre que sea posible
(para calcular A−1 b es aconsejable resolver el sistema: Ax = b).

4. La inversa de una matriz o su determinante es aconsejable calcularlos a partir de la


factorización de la matriz.

5. En la práctica, el cálculo del condicionamiento de una matriz es un procedimiento


caro, por lo que a menudo se utilizan estimadores del número de condición (ver, por
ejemplo, condest en MATLAB).

6. En cuanto al software correspondiente a los temas tratados, LAPACK es una li-


brerı́a de programas de reconocido prestigio y de uso libre. Está disponible en
http://www.netlib.org/lapack y es utilizada por otros paquetes, como por ejemplo
MATLAB. Para problemas de talla grande, podemos citar, además de MATLAB a
la librerı́a NAG.

7. En cuanto a la bibliografı́a, buenas referencias que tratan el tema completo son


Datta [2] y, en un nivel más elevado, Golub y Van Loan [3]. Salvo para la parte
de los métodos iterativos, una referencia asequible y completa es Watkins [6]). El
tema de la resolución numérica de los problemas de mı́nimos cuadrados es tratado
en profundidad en el libro de Björck [1].
36 C. Pola
Bibliografı́a

[1] Å. Björck. Numerical Methods for Least Squares Problems. SIAM, Philadelphia, 1996.

[2] B.N. Datta. Numerical Linear Algebra and Applications. Brooks/Cole, 1995.

[3] G.H. Golub and C.F. Van Loan. Matrix Computations. The Johns Hopkins University
Press, Baltimore and London, 1989.

[4] D.J. Higham and N.J. Higham. MATLAB Guide. SIAM, 2005.

[5] D.G. Luenberger. Programación Lineal y No Lineal. Addison-Wesley Iberoamericana,


Méjico, 1989.

[6] D.S. Watkins. Fundamentals of Matrix Computations. John Wiley & Sons, New York,
1991.

37

Anda mungkin juga menyukai