Está en la página 1de 69

Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Matrices, aplicaciones lineales y métodos directos de


resolución de sistemas de ecuaciones lineales
Grupo de Dinámica de Flujos Ambientales
Universidad de Granada

______________________________________________________________________
1 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Índice
Índice ................................................................................................................................ 2
Lista de Figuras ................................................................................................................ 3
Lista de Tablas.................................................................................................................. 3
Lista de Algoritmos .......................................................................................................... 4
Motivación........................................................................................................................ 5
Fundamentos: Definiciones y propiedades de sistemas de ecuaciones lineales y matrices
.......................................................................................................................................... 9
Definición: Sistema de ecuaciones lineales.............................................................. 9
Propiedades: SEL, operaciones elementales y matrices........................................... 9
Definiciones: Matriz y vector ................................................................................. 11
Definición: Igualdad entre matrices ....................................................................... 11
Definición: Dependencia e independencia lineal ................................................... 11
Definiciones: Tipos especiales de matrices ............................................................ 11
Propiedades: Suma de matrices y producto externo por escalares ......................... 12
Definición: Matriz extendida.................................................................................. 13
Definición: Producto (interno) de matrices ............................................................ 13
Definición: Matriz identidad .................................................................................. 14
Propiedades: Producto de matrices......................................................................... 14
Definición: Matriz inversa...................................................................................... 14
Propiedades: Inversión de matrices ........................................................................ 15
Definición: Determinante de una matriz ................................................................ 15
Definición: Menor principal ................................................................................... 15
Propiedades: Determinantes ................................................................................... 15
Definición: Matriz traspuesta ................................................................................. 16
Propiedades: Matrices traspuestas .......................................................................... 16
Definición: Matriz ortogonal .................................................................................. 17
Teorema: Existencia y unicidad de soluciones....................................................... 17
Definición: Producto escalar entre vectores ........................................................... 17
Propiedades: Producto escalar entre vectores......................................................... 18
Definición: Matriz definida positiva ...................................................................... 18
Definición: Matriz diagonalmente dominante........................................................ 18
Definición: Rango de una matriz............................................................................ 18
Definición: Normas vectoriales .............................................................................. 19
Teorema: Relación entre la norma euclídea y la norma infinito ............................ 19
Definición: Distancia entre dos vectores ................................................................ 19
Definición: Convergencia....................................................................................... 20
Definición: Norma matricial................................................................................... 20
Definición: Norma subordinada y normal natural.................................................. 20
Definición: Condicionamiento de matrices ............................................................ 21
Definición: Autovalores y autovectores ................................................................. 21
Propiedades: Autovalores y autovectores............................................................... 21
Definición: Polinomio característico ...................................................................... 22
Definición: Multiplicidad algebraica y geométrica ................................................ 22
Propiedades: Polinomio característico ................................................................... 22
Definición: Matriz diagonalizable .......................................................................... 22
Propiedades: Matrices diagonalizables................................................................... 23
Definición: Radio espectral de una matriz ............................................................. 23

______________________________________________________________________
2 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Teorema: Relación entre radio espectral y norma de una matriz ........................... 23


Definición: Matriz convergente.............................................................................. 23
Propiedades: Matrices convergentes ...................................................................... 24
Equation Chapter 1 Section 1Sistemas sencillos de resolver ......................................... 25
Matriz diagonal........................................................................................................... 25
Matriz triangular inferior ............................................................................................ 26
Matriz triangular superior........................................................................................... 27
Matrices reducibles a triangulares mediante permutaciones de filas ......................... 27
Solución de SELs por eliminación ................................................................................. 29
Método de Gauss con sustitución hacia atrás ............................................................. 29
Limitaciones ........................................................................................................... 33
Orden del algoritmo................................................................................................ 38
Método de Gauss con sustitución hacia delante ......................................................... 39
Método de Gauss-Jordan ............................................................................................ 39
Limitaciones ........................................................................................................... 39
Orden del algoritmo................................................................................................ 40
Otros métodos............................................................................................................. 40
Método híbrido ....................................................................................................... 40
Métodos de Givens (o de las rotaciones) y Householder ....................................... 41
Método de Cramer y de la matriz inversa............................................................... 41
Métodos a medida................................................................................................... 42
Estrategias de pivotaje .................................................................................................... 43
Pivotaje máximo en la columna o pivotaje parcial..................................................... 44
Limitaciones ........................................................................................................... 48
Pivotaje de columna escalada ..................................................................................... 49
Orden del algoritmo................................................................................................ 53
Factorización de Matrices............................................................................................... 54
Teorema: Descomposición LU (i) ........................................................................ 56
Teorema: Descomposición LU (ii) ....................................................................... 56
Teorema: Factorización de Choleski ...................................................................... 56
Corolario: Factorización y matrices diagonalmente dominantes ........................... 56
Método de Doolittle.................................................................................................... 57
Método de Crout......................................................................................................... 60
Método de Choleski.................................................................................................... 63
Ejercicios ................................................................................................................ 66
Elección de un método para resolver SELs .................................................................... 66
Bibliografía..................................................................................................................... 69

Lista de Figuras
Figura 1. Circuito eléctrico cuya resolución mediante las leyes de Kirchoff da lugar a un
sistema de ecuaciones lineales.......................................................................................... 5
Figura 2. Placa y distribución de temperaturas................................................................. 6

Lista de Tablas
Tabla 1. Órdenes de los algoritmos. ............................................................................... 67

______________________________________________________________________
3 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Lista de Algoritmos
Algoritmo 1. Matriz diagonal ......................................................................................... 26
Algoritmo 2. Método de sustitución hacia delante ......................................................... 26
Algoritmo 3. Método de sustitución hacia atrás ............................................................. 27
Algoritmo 4. Método de Gauss con sustitución hacia atrás .......................................... 32
Algoritmo 5. Método de Gauss con sustitución hacia atrás y búsqueda de pivote......... 38
Algoritmo 6. Método de Gauss-Jordan con búsqueda de pivote................................... 40
Algoritmo 7. Método de Gauss con sustitución hacia atrás y búsqueda de pivote
máximo en la columna.................................................................................................... 48
Algoritmo 8. Método de Gauss con sustitución hacia atrás y búsqueda pivote de
columna escalada............................................................................................................ 53
Algoritmo 9. Factorización LU por el método de Doolittle. ........................................ 60
Algoritmo 10. Factorización LU según el método de Crout ....................................... 63
Algoritmo 11. Factorización LU según el método de Choleski .................................. 66

______________________________________________________________________
4 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Motivación
¿Qué es un sistema de ecuaciones lineales y por qué necesitamos resolverlo?

En primer lugar advertiremos que los sistemas de ecuaciones lineales aparecen por
doquier en las ciencias experimentales, técnicas e ingeniería. Muchos de los problemas
que aparecen en estas disciplinas pueden reducirse a resolver sistemas de ecuaciones
lineales (SEL). Entre los problemas que así pueden ser tratados están la solución de
ecuaciones diferenciales en derivadas parciales resueltas mediante diferencias finitas,
problemas geométricos en matemáticas, la solución de sistemas de ecuaciones
diferenciales, problemas de valores propios en física matemática, el ajuste por mínimos
cuadrados y la aproximación de funciones por polinomios.

Algunos ejemplos sencillos de sistemas cuyas leyes físicas dan lugar a SEL se muestran
a continuación.

Ejemplo 1: El primer ejemplo se trata de un caso típico de teoría de circuitos. Para


conocer las caídas de tensión y la intensidad de corriente entre todos y cada uno de los
nodos, uno requiere echar mano de las leyes de Kirchoff. Estas esencialmente
establecen la conservación de la energía: nos dicen que el flujo de corriente debe
conservarse en cada nodo, esto es, que la suma de intensidades que entran y salen de
cada nodo debe ser nula.

Figura 1. Circuito eléctrico cuya resolución mediante las leyes de Kirchoff da lugar a un sistema de
ecuaciones lineales.

Teniendo éstas en cuenta, suponiendo sentidos para las corrientes entre cada dos nodos
y calculando con cuidado, se llega al SEL (1.1), cuya solución debe ser única. En
ausencia de otras condiciones, los valores de las resistencias Ri , 1 ≤ i ≤ 8 y de la
fuente de alimentación V0 pueden suponerse conocidos determinando unívocamente
todos los coeficientes del sistema.

______________________________________________________________________
5 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞
VB ⎜⎜⎜3 ∑ Rk ⎟⎟⎟ −VC ⎜⎜⎜ ∑ Rk ⎟⎟⎟ −VD ⎜⎜⎜ ∑ Rk ⎟⎟⎟ −VE ⎜⎜⎜ ∑ Rk ⎟⎟⎟ = V0 ⎜⎜⎜ ∑ Rk ⎟⎟⎟
⎝⎜ k ={1,2,4,8} ⎟⎠ ⎜⎝k ={1,2,8} ⎠⎟ ⎜⎝k ={1,2,4} ⎠⎟ ⎝⎜k ={1,4,8} ⎠⎟ ⎝⎜k ={2,4,8} ⎠⎟
⎛ ⎞
−VB (R6 ) +VC ⎜⎜⎜ ∑ Rk ⎟⎟⎟ −VD (R4 ) =0
⎜⎝k ={4,6} ⎟⎠
⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞
−VB ⎜⎜⎜ ∑ Rk ⎟⎟⎟ −VC ⎜⎜⎜ ∑ Rk ⎟⎟⎟ +VD ⎜⎜⎜2 ∑ Rk ⎟⎟⎟ −VE ⎜⎜⎜ ∑ Rk ⎟⎟⎟ =0
⎜⎝k ={5,6} ⎟⎠ ⎜⎝k ={5,8} ⎟⎠ ⎜⎝ k ={5,6,8} ⎟⎠ ⎜⎝k ={6,8} ⎟⎠
⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞
−VB ⎜⎜⎜ ∑ Rk ⎟⎟⎟ −VD ⎜⎜⎜ ∑ Rk ⎟⎟⎟ +VE ⎜⎜⎜3 ∑ Rk ⎟⎟⎟ = V0 ⎜⎜⎜ ∑ Rk ⎟⎟⎟
⎝⎜k ={3,5,7} ⎟⎠ ⎝⎜k ={2,3,7} ⎟⎠ ⎜⎝ k ={2,3,5,7} ⎟⎠ ⎜⎝k ={2,3,5} ⎟⎠
(1.1)

Ejemplo 2: Este ejemplo ha sido tomado de [Gerald y Wheatley, 2000] y se corresponde


con el problema de determinación del mapa de temperaturas en una placa metálica
bidimensional de dimensiones 2m × 2m . Los bordes, como se indica en la Figura 2, se
hallan a temperatura constante (imagínese en contacto con un termostato a la
temperatura indicada). Se pretende determinar las temperaturas en el interior de la placa,
discretizando su interior en 9 nodos, denominados ui (Figura 2). Las temperaturas en
los nodos vienen dadas por la ecuación de difusión, y que en equilibrio se reduce a la
ecuación de Laplace. Aplicada a este sistema y debidamente discretizada mediante
diferencias finitas da lugar al SEL (1.2). En la práctica, la temperatura ui es
simplemente el resultado de considerar el promedio aritmético de las temperaturas de
los 4 nodos circundantes. De nuevo, es sistema tiene solución única en equilibrio.

Figura 2. Placa y distribución de temperaturas.

______________________________________________________________________
6 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

−4u1 +u2 +u4 = −50


u1 −4u2 +u 3 +u5 = −50
u2 −4u 3 +u6 = −150
u1 −4u 4 +u5 +u7 =0
u2 +u 4 −4u5 +u6 +u8 =0 (1.2)
u3 +u5 −4u6 +u9 = −100
u4 −4u7 +u8 = −50
u5 +u7 −4u8 = −50
u6 +u8 −4u9 = −150

Ejemplo 3: Otro ejemplo proviene de Química. Se mezcla bajo condiciones controladas


C 7H 8 tolueno, ácido nítrico HNO3 para producir trinitrotolueno C 7H 5O6N 3 y agua
H 2O

x C 7H 8 + y HNO3 → z C 7H 5O6N 3 + w H 2O (1.3)

¿En qué proporción deben ser mezclados los componentes? El número de átomos
presentes antes de la reacción debe coincidir con el número después de la misma. Por
tanto,

7x − 7z =0
8x +y −5z −2w = 0
(1.4)
y −3z =0
3y −6z −w =0

Ejemplo 4: En [Ruiz] hay otro ejemplo aplicado a salinidad en estuarios.

En este capítulo nos proponemos resolver numéricamente este tipo de sistemas de


ecuaciones. Para ello emplearemos los llamados métodos directos. Se denominan
métodos directos de resolución de SELs a aquellos que emplean operaciones
elementales en el SELs para obtener otro equivalente más sencillo con la misma
solución [O'connor, 1993].

En el apartado siguiente se establece de forma rigurosa el problema, proporcionando las


definiciones, propiedades y teoremas necesarios para tratar con los métodos numéricos.
El lector que tenga unos conocimientos básicos de SEL y que tenga soltura con el
álgebra de matrices puede pasar la sección posterior.

______________________________________________________________________
7 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

El esquema a seguir será el siguiente. Daremos un repaso sucinto a los fundamentos


básicos del álgebra matricial y de aplicaciones lineales, haciendo especial énfasis en las
propiedades que nos serán útiles a la hora de tratar con los métodos numéricos.
Presentaremos los sistemas más sencillos posibles y el algoritmo requerido para su
solución. El objeto general de los métodos numéricos para resolver SEL es reducir
cualquier sistema a aquéllos más sencillos. Seguidamente, describiremos los algoritmos
de los métodos más populares. Finalmente, se hará un breve comentario sobre el orden
de los algoritmos empleados y su idoneidad a la hora de ser implementados en un
computador.

______________________________________________________________________
8 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Fundamentos: Definiciones y propiedades de sistemas


de ecuaciones lineales y matrices

Definición: Sistema de ecuaciones lineales


Un sistema de n ecuaciones lineales (cada una definida como Ei , con 1 ≤ i ≤ n ) con
m incógnitas tiene la forma general siguiente
a11x 1 + a12x 2 + + a1m x m = b1 ⎪⎫
⎪⎪
a21x 1 + a22x 2 + + a2m x m = b2 ⎪⎪

⎬ (1.5)
⎪⎪

an 1x 1 + an 2x 2 + + anm x m = bn ,⎪⎪⎪

donde aij , bi ∈ son número reales dados con 1 ≤ i ≤ n y 1 ≤ j ≤ m , m, n ∈ . El
problema que se plantea es determinar la n -upla (x 1, …, x m ) ∈ n
de tal forma que el
conjunto de ecuaciones (1.5) se satisfaga. Diremos además que obtener el vector
(x 1, …, x m ) en función de los coeficientes aij y bi es resolver el sistema.

En general, los sistemas podemos clasificarlos según la solución. Así, diremos que un
sistema es incompatible cuando no tenga solución y compatible cuando tenga, al menos,
una solución. Si un sistema es compatible, será determinado si presenta una única
solución e indeterminado cuando presente infinitas soluciones.

Propiedades: SEL, operaciones elementales y matrices

Basados en la linealidad de las ecuaciones es fácil comprobar que si un SEL se


transforma en otro por efecto de alguna o varias de las operaciones siguientes:
1. Intercambiar una ecuación por otra ( Ei ↔ E j ).
2. Multiplicar la ecuación completa por un factor c ≠ 0 , real cEi → Ei
3. Reemplazar una ecuación por la suma de ella y múltiplos de otra u otras, esto es,
por una combinación de lineal de la dada y otras ( Ei → Ei + ∑ ck Ek ,
k
ck ∈ ).

Los dos sistemas, el original y el transformado, presentan la misma solución, esto es, el
vector (x 1, …, x m ) es la solución de ambos sistemas. Diremos, por tanto, que ambos
sistemas son equivalentes. A las operaciones anteriores nos referiremos como
operaciones elementales.
Un caso especialmente sencillo de SEL es el llamado homogéneo, que verifica
bi = 0, ∀i . Los sistemas homogéneos presentan, al menos, la solución trivial, esta es,

______________________________________________________________________
9 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

x i = 0, ∀i . En el ejemplo (1.4), el caso de la reacción química, está gobernado por un


SEL homogéneo.

Existen algoritmos eficientes, que mostraremos en las siguientes secciones, para el


cálculo de la solución de una SEL dada. Pero previamente, es recomendable plantear el
problema (1.5) desde otro punto de vista: el punto de vista matricial. Haciendo uso de
notación matricial y vectorial el problema de resolver un SEL se facilita enormemente,
en virtud de la relación, matemáticamente bien definida, entre matrices y aplicaciones
lineales. Queda fuera del objetivo de estas notas presentar un estudio completo de esta
relación, por lo que remitimos al lector a otros trabajos más especializados [Lang,
1987]. No obstante, diremos que si fA ∈ Hom ( m , n ) es una aplicación lineal
(homomorfismo) de m en n existe una única matriz A ∈ M n×m ( ) , la matriz
asociada a la aplicación lineal fA , tal que
⎛ x 1 ⎞⎟
⎜⎜ ⎟

fA : m
→ , fA (x 1, …, x m ) = A ⋅ ⎜⎜⎜ ⎟⎟⎟,
n
(1.6)
⎜⎜ ⎟⎟
⎜⎝x m ⎟⎠
siendo
⎛a11 … a1m ⎟⎞
⎜⎜ ⎟⎟
A = ⎜⎜⎜ ⎟⎟ .
⎟⎟ (1.7)
⎜⎜ ⎟
⎜⎝an 1 anm ⎟⎠
Así se establece una relación unívoca entre matrices y aplicaciones lineales, esto es, un
isomorfismo entre el espacio vectorial de matrices n × m con coeficientes reales
M n×m ( ) y el de las aplicaciones lineales Hom ( m , n ) , pudiendo estudiar el
problema (1.5) en ambos espacios vectoriales con idénticos resultados. Por ejemplo, la
composición (no conmutativa, en general) de aplicaciones lineales se puede ver como
producto de matrices, y la transpuesta de una matriz tiene su contrapartida en la
aplicación lineal transpuesta.
A partir de (1.6) es fácil comprobar que, en efecto, fA es lineal, puesto que verifica
fA (x + λy ) = fA (x ) + λ fA (y ) (1.8)
habiendo hecho uso del propiedades elementales de suma y producto externo de
matrices, que definiremos un poco más adelante en esta misma sección.

De este modo, recurriendo a operaciones elementales del álgebra de matrices, que


definiremos algo más adelante, es fácil ver que el SELs (1.5) se reduce a
A⋅x = b (1.9)
donde A está dado por (1.7) y
⎛ x 1 ⎞⎟ ⎛b ⎞⎟
⎜⎜ ⎟ ⎜⎜ 1 ⎟
⎟⎟ ⎜ ⎟

x = ⎜⎜ ⎟⎟ ∈ m
y b = ⎜⎜ ⎟⎟⎟ ∈ n . (1.10)
⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟
⎜⎝x m ⎠⎟ ⎜⎜b ⎟⎟
⎝ n⎠
Por otro lado, el uso de matrices es imperativo cuando se trata de implementar
algoritmos de resolución de SEL en una computadora, puesto que ésta “no entiende” de
SEL o aplicaciones lineales, sino de matrices, vectores y operaciones entre ellos.

______________________________________________________________________
10 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Por ello, damos a continuación una lista de definiciones y propiedades (no demostradas)
básicas de vectores y matrices, principalmente, que emplearemos en las secciones
siguientes [Burden y Faires, 1985; Conte y Boor, 1980; Kincaid y Cheney, 1990; Lang,
1987].

Definiciones: Matriz y vector


Una matriz A es una colección de elementos ordenados en filas y columnas. Diremos
que A es de orden n × m si tiene n filas y m columnas, y real si tiene coeficientes
reales. En tal caso, A es un elemento del espacio vectorial de matrices M n×m ( ) , es
decir, A ∈ M n×m ( ) . Se denota de forma explícita,
⎛a11 … a1m ⎟⎞
⎜⎜ ⎟⎟
A = ⎜⎜⎜ ⎟⎟
⎟⎟ (1.11)
⎜⎜
⎜⎝an 1 anm ⎟⎟⎠

o en forma reducida A = (aij )n×m . Siguiendo la misma notación, definimos como


vector columna n -dimensional a cualquier matriz A ∈ M n×1( )
⎛a11 ⎞⎟
⎜⎜ ⎟

A = ⎜⎜⎜ ⎟⎟⎟ (1.12)
⎜⎜ ⎟⎟
⎜⎝an 1 ⎟⎠
y como vector fila m -dimensional a cualquier matriz A ∈ M 1×m ( )
(
A = a11 )
a1m . (1.13)

Definición: Igualdad entre matrices


Dos matrices A ∈ M n×m ( ) y B ∈ M p×q ( ) son iguales si son del mismo orden
( n = p y m = q ) y son idénticas elemento a elemento aij = bij , ∀i, j .

Definición: Dependencia e independencia lineal


Se dice que un conjunto de elementos (x 1, …, x m ) ∈ V , donde V es un espacio vectorial
arbitrario, son linealmente independientes si ninguno puede ser escrito como
combinación lineal del resto, esto es, si
λ1x 1 + + λm x m = 0 (1.14)
sólo existe la solución trivial λ1 = = λm = 0 . Por el contrario, se dice que son
linealmente dependientes si ∃λ1, …, λm no todos nulos tal que se verifica (1.14).

Definiciones: Tipos especiales de matrices


Admitiendo A ∈ M n×n ( ) una matriz cuadrada se define matriz triangular (o reducida)
superior a aquella en la que los elementos por debajo de la diagonal principal son todos
nulos, es decir, aij = 0 para cada i = j + 1, j + 2, …, n . Por ejemplo, la siguiente
matriz es una matriz triangular superior

______________________________________________________________________
11 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

⎛a11 a12 a1n ⎞


⎟⎟
⎜⎜
⎜⎜ 0 ⎟⎟
⎟⎟
A = ⎜⎜⎜ ⎟ (1.15)
⎜⎜ an −1n ⎟⎟⎟
⎜⎜ ⎟⎟
⎜⎝ 0 0 ann ⎟⎠⎟

De forma análoga se define matriz triangular inferior aquella en la que aij = 0 para
cada i = j + 1, j + 2, …, n :
⎛a11 0 0 ⎞⎟
⎜⎜ ⎟⎟
⎜⎜a ⎟⎟
A = ⎜⎜⎜ ⎟⎟
21
⎟ (1.16)
⎜⎜ 0 ⎟⎟
⎜⎜ ⎟⎟
an −1n ann ⎠⎟⎟
⎜⎝an 1
Una matriz triangular inferior y superior a la vez tiene la forma explícita
⎛a11 0 0 ⎞⎟
⎜⎜ ⎟⎟
⎜⎜ 0 ⎟⎟
⎜⎜ ⎟
A=⎜ ⎟⎟ , (1.17)
⎜⎜ 0 ⎟⎟
⎜⎜ ⎟⎟
⎜⎜⎝ 0 0 ann ⎟⎟⎠
denominándose matriz diagonal.
Otro tipo de matrices que aparecen en ciertas aplicaciones son las matrices
tridiagonales. Como su propio nombre indica, son matrices A = (aij )n×n en las que
aij = 0 para todas las parejas i, j que verifiquen i − j > 1 , esto es, en la i -ésima fila,
sólo los aii , aii −1 y aii +1 son distintos de cero. De forma explícita:
⎛a11 a12 0 0 ⎞⎟
⎜⎜ ⎟⎟
⎜⎜a a ⎟⎟
⎜⎜ 21 22 ⎟⎟
⎜⎜ ⎟
A=⎜ 0 0 ⎟⎟ . (1.18)
⎜⎜ ⎟⎟
⎜⎜ an −1n −1 an −1n ⎟⎟⎟
⎜⎜ ⎟⎟
⎜⎜ 0 0 a a ⎟
⎝ nn −1 nn ⎟ ⎠

Generalizando el concepto de matriz triagonal se definen las matrices en banda, en las


que existen enteros 1 ≤ p, q ≤ n tales que aij = 0 siempre y cuando i + p ≤ j y/o
j + q ≤ i . La matriz asociada al segundo ejemplo dado en la motivación, el (1.2), es
una matriz en banda.

Propiedades: Suma de matrices y producto externo por escalares


Las siguientes propiedades de las matrices son heredadas de las propiedades del espacio
vectorial. Sean A, B,C ∈ M n×m ( ) matrices y λ, μ ∈ , entonces se verifica que
λA = (λ ⋅ aij )n×m . (1.19)

______________________________________________________________________
12 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

La suma de matrices se realiza sumando los coeficientes en posiciones coincidentes,


esto es
A + B = (aij + bij )n×m . (1.20)
Nótese que necesariamente ambas matrices deben tener el mismo orden. Además se
tiene que

1. A + B = B + A , suma conmutativa
2. (A + B ) + C = A + (B + C ) , suma asociativa
3. A + 0 = 0 + A , elemento neutro para la suma: 0 = (0)n×m
4. A + (−A) = (−A) + A = 0 , elemento inverso para la suma
5. λ(A + B ) = λA + λB , propiedad distributiva para el producto externo
(conmutativo)
6. (λ + μ)A = λA + μA
7. (λμ)A = λ(μA)
8. 1A = A , elemento neutro para el producto externo

Definición: Matriz extendida


Dado un SEL como (1.24), la matriz extendida o ampliada asociada a este SEL es la
formada por la matriz de la aplicación lineal A yuxtapuesta al vector de coeficientes
independientes b , ambos dados en (1.26). El resultado es una matriz
(A | b ) ∈ M n×m +1( ) . De forma explícita
⎛a
⎜⎜ 11 … a1m b1 ⎞⎟⎟
⎜ ⎟⎟
(A | b ) = ⎜⎜⎜ ⎟⎟ .
⎟⎟
(1.21)
⎜⎜
a
⎜⎜ n 1 a nm bn ⎟

⎝ ⎠
Esta definición resultará útil a la hora de resolver computacionalmente SEL.

Definición: Producto (interno) de matrices


El producto de matrices tiene su análogo en la composición de aplicaciones lineales y se
define como sigue. Sea A ∈ M n×m ( ) y B ∈ M m×q ( ) entonces definimos el producto
de matrices C = A ⋅ B en función de las entradas cij de C como
m
cij = ∑ aikbkj (1.22)
k =1
para cada 1 ≤ i ≤ n y cada 1 ≤ j ≤ p . Nótese que el número de filas de A debe
coincidir con el número de columnas de B de tal forma que la matriz resultante sea
C ∈ M n×p ( ) . El cálculo de los coeficientes cij de la nueva matriz se puede ver como
la multiplicación de la i -ésima fila de A con las correspondientes entradas de la j -
ésima columna de B , seguidos por una suma. Por ejemplo,
⎛2 1 −1⎞⎟ ⎛ 3 2⎟⎞ ⎛ −1 1 ⎟⎟⎞
⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟ ⎜⎜
⎜ ⎜ ⎜ ⎟
C = A ⋅ B = ⎜⎜3 1 2 ⎟⎟⎟ ⋅ ⎜⎜−1 1⎟⎟⎟ = ⎜⎜ 20 15 ⎟⎟⎟ . (1.23)
⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟
⎜⎜0 −2 −3⎟⎟ ⎜⎜ 6 4⎟⎟ ⎜⎜−16 −14⎟⎟
⎝ ⎠ ⎝ ⎠ ⎝ ⎠

______________________________________________________________________
13 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

El producto de matrices no es conmutativo, en general. En el ejemplo (1.23), el


producto B ⋅ A no puede realizarse, puesto que el número de columnas de B no
coincide con el de filas de A . Pero aún en el caso de que coincidieran, como en
matrices cuadradas, la igualdad A ⋅ B = B ⋅ A no está garantizada.

A partir de esta definición se entiende con claridad que el SEL (1.5)


a11x 1 + a12x 2 + + a1m x m = b1 ⎪⎫
⎪⎪
a21x 1 + a22x 2 + + a2m x m = b2 ⎪⎪

⎬ (1.24)
⎪⎪

an 1x 1 + an 2x 2 + + anm x m = bn ,⎪⎪⎪

pueda escribirse como
A⋅x = b (1.25)
donde
⎛a11 … a1m ⎞⎟ ⎛ x 1 ⎞⎟ ⎛b ⎞⎟
⎜⎜ ⎟⎟ ⎜⎜ ⎟ ⎜⎜ 1 ⎟
⎜ ⎟ ⎜ ⎟⎟ ⎜ ⎜ ⎟⎟
A = ⎜⎜ ⎟⎟, x = ⎜⎜ ⎟⎟ y b = ⎜⎜ ⎟⎟, (1.26)
⎜ ⎟ ⎜ ⎟ ⎟
⎜⎝⎜an 1 anm ⎟⎠⎟ ⎜⎝⎜x n ⎟⎠⎟ ⎜⎜⎜b ⎟⎟⎟
⎝ n⎠
siendo A ∈ M n×m ( ) y x , b ∈ M n×1( ) .

Definición: Matriz identidad


La matriz identidad es una matriz cuadrada de orden n , y se denota I n , en la que los
únicos elementos distintos de cero son los de la diagonal principal, que valen 1 . De
forma reducida se expresa de la siguiente forma I n = (δij )n , siendo δij
⎪⎧1 si i = j
δij = ⎪⎨ (1.27)
⎪⎪0 si i ≠ j

la delta de Kroneker.

Propiedades: Producto de matrices


Sea A ∈ M n×m ( ) , B,C ∈ M m×p ( ) , D ∈ M p×q ( ) y λ ∈ , entonces se verifica
1. A(BD ) = (AB )D , asociativa para el producto interno
2. A(B + C ) = AB + AC , distributiva para el producto interno
3. I n ⋅ B = B ⋅ I p , elemento neutro para el producto
4. λ(AB ) = (λA)B

Definición: Matriz inversa


La división de matrices no está definida, en general. Sin embargo, para matrices
cuadradas puede definirse un concepto análogo: producto por la matriz inversa. Diremos
que una matriz cuadrada A ∈ M n×n ( ) es invertible o no singular si ∃ B ∈ M n×n ( )
tal que

______________________________________________________________________
14 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

A ⋅ B = B ⋅ A = In (1.28)
−1
A la matriz B se la denomina matriz inversa de A y se denota A . Además, si existe,
es única. Una matriz no invertible es singular.

Propiedades: Inversión de matrices


Sean A, B ∈ M n×m ( ) y λ ∈ . Se verifica
1. AA−1 = A−1A = I n
−1
2. (A−1 ) =A
−1
3. (AB ) = B −1A−1 ≠ A−1B −1

Definición: Determinante de una matriz


Un concepto especialmente útil en álgebra lineal es el de determinante. Se define
determinante de una matriz A ∈ M n×n ( ) por inducción. Para n = 1 , det(A) = a11 ;
para n > 1
n n
det(A) = ∑ aij Aij = ∑ aij Aij (1.29)
j =1 i =1
i+j
para cualquier 1 ≤ i ≤ n fijo o cualquier 1 ≤ j ≤ n fijo, donde Aij = (−1) M ij son
los cofactores asociados a los menores M ij que su vez son los determinantes de la
submatriz (n − 1) × (n − 1) obtenida de eliminar la fila i -ésima y la columna j -ésima.
Nótese que det(A) ∈ , es decir, det(A) : M n×n ( ) → . Es común denotar también
del determinante de A por A . La expresión general para determinantes de matrices de
orden 2 es
a11 a12
a a = a11a22 − a12a21,
21 22
(1.30)

y para orden 3 (tomando i = 1 )


a11 a12 a13 a21 a22 a21 a23 a22 a22
a21 a22 a23 = a13 a a 32 + a 12 a a 33 + a 11 a a 32 . (1.31)
31 31 32
a 31 a 32 a 33

Definición: Menor principal


Se define el k -ésimo menor principal de la matriz A ∈ M n×n ( ) como
⎛a11 … a1k ⎞⎟
⎜⎜ ⎟⎟
Ak = ⎜⎜⎜ ⎟⎟, k ≤ n.
⎟⎟ (1.32)
⎜⎜
⎜⎝ak 1 akk ⎟⎟⎠

Propiedades: Determinantes
Sea A, B ∈ M n×n ( ) y λ ∈ , definiendo ahora Ei como la fila (ecuación) o la
columna i (indistintamente) de una matriz dada, se tienen las siguientes propiedades.
______________________________________________________________________
15 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

1. Si una columna o fila de A tiene todos sus elementos nulos, det(A) = 0


2. Al intercambiar una fila (columna) Ei por otra Ei '≠i , el determinante de la
matriz modificada A ' es det(A ') = − det(A)
3. Si A tiene dos o más filas o columnas iguales Ei = Ei '≠i , det(A) = 0
4. Al multiplicar una fila o columna Ei por un escalar λ , el determinante de la
matriz resultante es det(A ') = λ det(A)
5. det(AB ) = det(A) ⋅ det(B )
6. Si una fila o columna Ei es combinación lineal del resto de filas o columnas
p≤n
( Ei = ∑ λk Ek ), det(A) = 0
k =1
k ≠i
p ≤n
7. Si A ' es obtenida de A mediante la operación Ei + ∑ λk Ek → Ei ,
k =1
det(A ') = det(A)

Definición: Matriz traspuesta


Dada una matriz A = (aij )n×m , se denota la matriz traspuesta como AT y se define como
AT = (a ji )m×n . Por ejemplo,
T
⎛a11 ⎞⎟
⎜⎜ ⎟
⎜⎜ ⎟⎟ = a
⎜⎜ ⎟⎟⎟ ( 11 )
a1n . (1.33)
⎜⎜a ⎟⎟
⎝ n1 ⎠
T
Se verifica además que (AT ) = A . La matriz que tiene la propiedad de AT = A , a
saber, (aij )n×m = (a ji )m×n se la denomina matriz simétrica, mientras que si
(aij )n×m = (−a ji )m×n será una matriz antisimétrica. Sólo las matrices cuadradas pueden
ser simétricas o antisimétricas.

Propiedades: Matrices traspuestas


Sean A, B ∈ M n×n ( ) , entonces se verifica
1. det(AT ) = det(A)
T
2. (A + B ) = AT + BT
T
3. (AB ) = BT AT
T
4. (AT ) =A
T −1
5. Si A es invertible (A−1 ) = (AT )

______________________________________________________________________
16 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Definición: Matriz ortogonal


Se dice que una matriz A ∈ M n×n ( ) es ortogonal cuando verifica
AT ⋅ A = A ⋅ AT = I n . Es común que trasformaciones dadas por estas matrices
representen rotaciones.

Teorema: Existencia y unicidad de soluciones


En secciones posteriores trataremos exclusivamente con matrices cuadradas con
coeficiente reales. Esta restricción se justifica mostrando que un SEL como (1.24) no
puede tener exactamente una sola solución para cada b ∈ M n×1( ) a menos que la
matriz de coeficientes A ∈ M n×n ( ) sea cuadrada [Conte y Boor, 1980]. A partir de
ahora, y por ahorrar notación, denotaremos al espacio vectorial de matrices cuadradas
con coeficientes reales del modo siguiente M n×n ( ) ≡ M n ( ) .
El teorema se establece de la forma siguiente:

El SEL (1.25) tiene como mucho una solución (i.e. la solución, si existe, es única) si y
sólo si el correspondiente sistema homogéneo presenta sólo la solución trivial, esta es,
x i = 0, ∀i . Es más, no se puede obtener una solución única a no ser que nuestro SEL
tenga tantas ecuaciones como incógnitas.

En efecto, cualquier SEL homogéneo como menos ecuaciones que incógnitas presenta
soluciones no triviales. Además, si A ∈ M n ( ) y x , b ∈ M n×1( ) se tiene que los
siguientes puntos son equivalentes (préstese especial atención a los 4 primeros puntos)
1. El sistema homogéneo A ⋅ x = 0 asociado a A ⋅ x = b tiene sólo la solución
trivial x = 0
2. ∀b , A ⋅ x = b tiene una única solución
3. A es invertible, esto es, no singular
4. El determinante de A es no nulo: det(A) ≠ 0
5. Los vectores columna que forman A son una base de n
6. Los vectores fila que forman A son una base de n
7. 0 no es un autovalor de A

Remitimos al lector a las siguientes referencias para profundizar en los conceptos de


autovalores y bases: [Kincaid y Cheney, 1990; Lang, 1987]. Por lo que a estas notas
respecta, nos será suficiente con los cuatro primeros puntos.

Definición: Producto escalar entre vectores


n
Sean los vectores x , y ∈ . Se define su producto escalar como
n
x , y = x T y = ∑ x i yi . (1.34)
i =1
Recuérdese que los vectores están definidos como vectores columnas, por lo que se hace
necesario, para que tenga sentido el producto x T y , trasponer el vector x .

______________________________________________________________________
17 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Propiedades: Producto escalar entre vectores


Sean los vectores x , y ∈ n , la matriz A ∈ M n×n ( ) y el escalar α ∈ , entonces se
tienen las siguientes propiedades relativas al producto escalar de vectores:
1. x , y = y, x .
2. αx , y = α x , y , ∀α .
3. x + y, z = x , z + y, z .
4. x , Ay = AT x , y .

n
Además, diremos que dos vectores x , y ∈ son ortogonales si y solo si x , y = 0 .

Definición: Matriz definida positiva


Un concepto importante es el de matriz definida positiva. Se dice que una matriz
A ∈ M n ( ) es definida positiva si
x T Ax > 0, ∀x ∈ M n×1( ). (1.35)

Definición: Matriz diagonalmente dominante


Como veremos en la sección siguiente, otras matrices especiales permiten reducir el
número de operaciones a la hora de resolver SEL. Una clase de estas matrices son las
llamadas matrices diagonalmente dominantes. Esta propiedad, para una
matriz A ∈ M n ( ) , puede expresarse por la desigualdad
n
aii > ∑ aij (1 ≤ i ≤ n ). (1.36)
j =1
j ≠i

Por ejemplo, la matriz siguiente es diagonalmente dominante


⎛5 −2 1 ⎞⎟
⎜⎜ ⎟⎟
⎜⎜
A = ⎜1 3 −1⎟⎟⎟ . (1.37)
⎜⎜ ⎟⎟
⎜⎝⎜2 1 −4⎟⎠⎟
Es importante notar que la desigualdad en (1.36) es estricta. Eso es importante a la hora
de demostrar que matrices diagonalmente dominantes pueden descomponerse en el
producto de dos matrices triangulares inferior y superior.

Definición: Rango de una matriz


Definimos el rango de una matriz A ∈ M n ( ) como el número de filas (o columnas, al
ser cuadrada) linealmente independientes.

______________________________________________________________________
18 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Definición: Normas vectoriales


El espacio n
es un espacio normado con la aplicación i : n
→ con las siguientes
propiedades
1. x ≥ 0, ∀x ∈ n .
2. x + y ≤ x + y , ∀x , y ∈ n .
3. λx = λ x , ∀x ∈ n , ∀λ ∈ .
4. x = 0 , sí y sólo si x ≡ 0 .

Para definir una distancia en n se emplea la noción de norma. Es posible definir


infinitas normas en n . Las más útiles son la norma l2 , o norma euclídea, definida para
el vector x = ( x1 ,… , xn ) ∈ n
como
n
x2= ∑x i =1
2
i , (1.38)

y la norma l∞ , o norma infinito,


x ∞
= max xi . (1.39)
1≤i ≤ n

Es trivial comprobar que ambas verifican las propiedades de norma (hágase como
ejercicio).

Teorema: Relación entre la norma euclídea y la norma infinito


Se verifica que para todo x ∈ n

x ∞
≤ x2≤ n x ∞
. (1.40)

Definición: Distancia entre dos vectores


n
Una vez que se dispone de una norma en un espacio (normado), como , se puede
definir la distancia entre dos vectores como
n
x− y 2 = ∑(x − y )
2
i i , (1.41)
i =1

para la norma euclídea y


x− y ∞
= max xi − yi , (1.42)
1≤ i ≤ n
n
para la norma del máximo, siendo x , y ∈ .
La distancia entre vectores nos habilita para determinar errores en la estimación de
soluciones mediante métodos numéricos. Así, por ejemplo, supóngase que la solución
real de un sistema de ecuaciones lineales es xr = (1.0,1.0,1.0) ∈ 3 , mientras que un
método numérico empleado ha arrojado el siguiente resultado:
xa = (1.2100,1.0012, 0.9976) ∈ 3 . En tal caso, el error (que depende de la norma
empleada) será:
e = xa − xr = (1.0 − 1.21) + (1.0 − 1.0012 ) + (1.0 − 0.9976 ) ≈ 0.210017, (1.43)
2 2 2
2

para la norma l2 y para la l∞ es

______________________________________________________________________
19 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

e = xa − xr ∞
= max { 1.0 − 1.21 , 1.0 − 1.0012 , 1.0 − 0.9976 } = 0.21. (1.44)
Como se puede comprobar errores grandes, aunque sean sólo uno o pocos puntos,
dominan la norma.

Definición: Convergencia
{ }

Una sucesión de vectores x( k ) de n
se dice que converge a x con respecto a la
k =1

norma i si, dado ε > 0 , existe un número natura N (ε ) tal que


x( k ) − x < ε ∀k ≥ N (ε ). (1.45)
A partir de la definición puede demostrarse que se tiene (1.45) si y sólo si
lim xi( k ) = xi . (1.46)
k →∞

Esto es, si converge componente a componente. Véase ejemplos (1.43) y (1.44).

Asimismo, se puede demostrar que las normas euclídea y la norma infinito son
equivalentes con respecto a la convergencia.

Definición: Norma matricial


Para medir la distancia entre dos matrices es también necesario recurrir al concepto de
norma.
El espacio M n ( ) es un espacio normado con la norma matricial , que es una
aplicación de M n ( ) en , verificando las siguientes propiedades [Molina, 1996]
1. A ≥ 0, ∀A ∈ M n ( ) .
2. A + B ≤ A + B , ∀A, B ∈ M n ( ) .
3. λA = λ A , ∀A ∈ M n ( ), ∀λ ∈ .
4. Si A = 0 , entonces A = 0 .
5. A ⋅ B ≤ A ⋅ B , ∀A, B ∈ M n ( ) .

Nótese que la última propiedad hace diferente la norma matricial de las normas
vectoriales usuales. La distancia entre matrices puede entonces definirse de la forma
usual como A − B , A, B ∈ M n ( ) . Del mismo modo que en n es posible definir
múltiples normas matriciales, pero aquí nos vamos a restringir a las derivadas de la
norma euclídea y la norma matricial.

Definición: Norma subordinada y normal natural


Dada una norma matricial M , se dice que es compatible con una norma vectorial V
si se verifica
Ax V ≤ A M x V , ∀A ∈ M n ( ), x ∈ n . (1.47)
Así, se define la norma matricial M subordinada o inducida por la norma vectorial
V como

A M = sup { Ax V
: x V = 1} . (1.48)

______________________________________________________________________
20 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Esta se denomina norma natural. Es evidente demostrar que esta norma subordinada es
compatible con la norma vectorial dada. Las normas inducidas más empleadas son
⎧ n
⎪ ⎫
⎪ n
1. A 1 = max ⎪⎨∑ aij , 1 ≤ j ≤ n ⎪⎬ inducida por x 1 = ∑ x i .


⎩ i =1 ⎪

⎭ i =1
1/ 2
⎛ ⎧ n 2
⎪ ⎫⎞⎟
⎪ n
2. A 2 = ⎜⎜⎜max ⎪
⎨∑ aij , 1 ≤ j ≤ n ⎪
⎬⎟⎟ inducida por x 2 = ∑ x i2 .
⎜⎝ ⎪

⎩ i =1 ⎭⎠⎟

⎪ i =1


⎪ n ⎫

3. A ∞ = max ⎨∑ aij , 1 ≤ j ≤ n ⎪⎬ inducida por


⎪ i =1
⎩ ⎪


x ∞ = max { x i , 1 ≤ j ≤ n } .

Definición: Condicionamiento de matrices


En cualquier método numérico, además del coste computacional, es importante tener en
cuenta la precisión de los mismos, es decir, los errores de redondeo que se comenten.
Estos hacen que en vez de conseguir la solución exacta x ∈ M n×1( ) del sistema
Ax = b , A ∈ M n ( ) y b ∈ M n×1( ) , se llegue a una solución x * ∈ M n×1( ) , que
satisface no Ax = b , sino
Ax * = b + r , (1.49)
donde r ∈ M n×1( ) . Llamaremos al vector r el residual. Por tanto el error cometido es
e = x * −x , e ∈ M n×1( ). (1.50)
El residual no es un indicativo de la magnitud del error cometido. Para ello, necesitamos
de una medida apropiada, dada por la norma (o distancia matemática) del espacio
normado M n ( ) . Según la norma adoptada en la definición anterior, si denotamos por
C (A) a la aplicación siguiente C (A) : M n ( ) → , A ⋅ A−1 , se puede demostrar
fácilmente [Conte y Boor, 1980] a partir de las ecuaciones (1.49) y (1.50) que
1 r e r
⋅ ≤ ≤ C (A) ⋅ . (1.51)
C (A) b x b
Las desigualdades anteriores nos dan una cota superior y otra inferior del error relativo
e / x . Las cotas son fácilmente calculables, dado un sistema y su solución
(estimación). Al número C (A) ∈ , se le denomina condicionamiento de la matriz A o
del sistema Ax = b . Cuanto más cercano a 1 esté C (A) , más próximos estarán C (A) y
su inverso y mejor será entonces la estimación del error relativo.

Definición: Autovalores y autovectores


Sea A ∈ M n ( ) . Entonces diremos que un escalar λ es autovalor de A si existe un
vector no nulo v ∈ n tal que
Av = λv , (1.52)
en cuyo caso se dice que v es un autovector de A asociado al autovalor λ .

Propiedades: Autovalores y autovectores


Sea v un autovector de A asociado al autovalor λ , y α, λ, μ ∈ . Entonces se cumple:
1. αλ es un autovalor de αA con autovector v .
______________________________________________________________________
21 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

2. (λ − μ) es un autovalor de αA − μI n con autovector v .


3. λk es un autovalor de Ak con autovector v .
4. Si q(⋅) es un polinomio, entonces q(λ ) es autovalor de q( A) con autovector v .
5. Si A tiene inversa, entonces λ ≠ 0 y λ−1 es autovalor de A−1 con autovector
v.
6. A y AT tienen los mismos autovalores, aunque los autovectores son, en general,
distintos.

Definición: Polinomio característico


Sea A ∈ M n ( ) y λ un autovalor de A , entonces se define el polinomio característico
de A como
det ( A − λ I n ) = 0. (1.53)
En efecto, (1.53) es un polinomio de grado ≤ n .

Definición: Multiplicidad algebraica y geométrica


Sea A ∈ M n ( ) y λ un autovalor de A , entonces se define:
1. Multiplicidad algebraica de λ0 , denotada por ma (λ0 ) , a la multiplicidad de λ0
como raíz del polinomio característico q (λ ) = det ( A − λ I n ) = 0 . El polinomio
q(λ ) puede factorizarse como q(λ ) = ( λ − λ0 )
ma ( λ0 )
p(λ ) , siendo p(λ ) un
polinomio de grado n − ma (λ0 ) que no se anula en λ0 ( p (λ0 ) ≠ 0 ).
2. Multiplicidad geométrica de λ0 , denotada por mg (λ0 ) , al número de vectores
linealmente independientes asociados al autovalor λ0 .

La relación entre ambos es 1 ≤ mg (λ0 ) ≤ ma (λ0 ) .

Propiedades: Polinomio característico


m
Sea A ∈ M n ( ) y {λi }i =1 autovalores de A . Entonces el polinomio característico es
q(λ ) = ( −1) ( λ − λ1 ) ( λ − λ2 ) ( λ − λm )
m ma ( λ1 ) ma ( λ2 ) ma ( λm )
, (1.54)
el determinante de A coincide con
det( A) = λ1 ⋅ λ2 λm (1.55)
y la traza de la matriz A es
Traza ( A) = λ1 + λ2 + + λm . (1.56)

Definición: Matriz diagonalizable


Se dice que una matriz A ∈ M n ( ) es diagonalizable si existe una matriz P ∈ M n ( )
invertible (no singular) tal que

______________________________________________________________________
22 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

⎛ d11 … 0 ⎞
⎜ ⎟
D = P −1 AP = (δ ij ) = ⎜ ⎟ (1.57)
n
⎜ 0 ⎟
⎝ d nn ⎠
es una matriz diagonal. Entonces, cada columna de P es un autovector de A asociado
al correspondiente elemento de D , que será un autovalor de A . Puesto que la matriz
P es no singular, recuérdese que las n filas son linealmente independientes, luego
forman una base de n .

Propiedades: Matrices diagonalizables


Sea A ∈ M n ( ) . Entonces se tiene:
1. A es diagonalizable si y sólo si tiene n autovectores linealmente
independientes.
2. Si {vk }k =1 , con vk ∈ n , son autovectores de A con autovalores reales asociados
n

{λk }k =1 , distintos dos a dos (i.e. λk = λ j , si y sólo si k = j ), entonces los


n

autovectores {vk }k =1 son linealmente independientes. En otras palabras, a


n

autovalores distintos de A le corresponden autovectores linealmente


independientes.
3. A es diagonalizables si y sólo si ma (λ ) = mg (λ ) para todo λ autovalor de A .

Definición: Radio espectral de una matriz


El radio espectral de una matriz A ∈ M n ( ) se define como

ρ ( A) = max λ (1.58)
λ autovalor. El concepto de radio espectral está estrechamente relacionado con la
norma de una matriz.

Teorema: Relación entre radio espectral y norma de una matriz


Dada una matriz A ∈ M n ( ) , se cumple:
1/ 2
1. ⎡⎣ ρ ( AAT ) ⎤⎦ = A 2

2. ρ ( A) ≤ A p
para cualquier norma l p .
Un resultado íntimamente relacionado con el punto (2) de este teorema es que, dada una
matriz A , se verifica que existe una norma A p y un ε > 0 tal que A p < ρ ( A) + ε .

Definición: Matriz convergente


Se define matriz convergente a aquella matriz A ∈ M n ( ) que verifica

______________________________________________________________________
23 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

lim ( Ak ) = 0 (1.59)
k →∞ ij

para todo elemento 1 ≤ i, j ≤ n de la matriz.

Matrices convergentes, aquellos cuyos elementos iterados tienden a cero, son de


importancia a la hora de estudiar métodos iterativos.

Propiedades: Matrices convergentes


Las siguientes afirmaciones son equivalentes:
1. A ∈ M n ( ) es una matriz convergente.
2. lim An = 0 para alguna norma natural i .
n →∞

3. ρ ( A) < 1 .
4. lim Ak x = 0 para todo x ∈ n
.
k →∞

La definición de radio espectral es muy apropiada y útil pues, de forma análoga a series
de números reales o funciones, el criterio de convergencia es ρ ( A) < 1 .

______________________________________________________________________
24 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Sistemas sencillos de resolver


Como comentamos anteriormente, la idea que subyace en todos los métodos (directos)
para la resolución de SEL es reducir el sistema original a otro equivalente más fácil de
resolver. Estos sistemas de ecuaciones especialmente sencillos son los que a
continuación se describen. Proporcionaremos además el algoritmo que facilita la
solución del sistema.

Matriz diagonal
Consideremos un sistema Ax = b donde x , b ∈ M n×1( ) y A ∈ M n ( ) es una matriz
diagonal. Explícitamente,
⎛ ⎞ ⎛ ⎞
⎜⎜a11 0 ⎟⎟⎟ ⎛⎜ x 1 ⎟⎞⎟ ⎜⎜b1 ⎟⎟
⎜⎜ ⎜
⎜⎜ ⎟⎟⎟ ⎜⎜ ⎟⎟⎟ = ⎜⎜ ⎟⎟⎟ .
⎜⎜ ⎟⎟⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟ (1.1)
⎟ ⎜ ⎟ ⎜ ⎟
⎜ ⎟
⎜0
⎜⎝ ann ⎟⎟⎟⎠ ⎜⎝x n ⎟⎠ ⎜⎝bn ⎟⎠
En este caso, la solución del sistema de ecuaciones es inmediata, puesto que las n
ecuaciones están factorizadas, despejando componente a componente:
⎛ x 1 ⎞⎟ ⎛⎜ b1 / a11 ⎞⎟
⎜⎜ ⎟ ⎜ ⎟⎟
⎜⎜ ⎟⎟ = ⎜⎜ ⎟⎟
⎜⎜ ⎟⎟⎟ ⎜⎜ ⎟⎟ (1.2)
⎜⎜x ⎟⎟ ⎜⎜ ⎟

⎝ n ⎠ ⎝⎜bn / ann ⎠⎟⎟
Evidentemente, se para poder despejar cada componente es necesario que los elementos
de la diagonal principal de A sean no nulos. En el caso que aii = 0 para algún i y
bi = 0 , existen infinitas soluciones: x i ∈ . Por otro lado, es evidente que si aii = 0
1 ≤ i ≤ n , bi ≠ 0 , ∃ solución del sistema.

Algoritmo[Kincaid y Cheney, 1990]: Matriz diagonal


Input n, aij , bi
For i = 1 to i = n
x i ← bi / aii
End
Output x i
Break
El algoritmo está expresado en pseudocódigo. El lector deberá emplear la sintaxis
propia del entorno de programación que esté empleando.

La siguiente notación es común al resto de algoritmos presentados.

Con Input indicamos las entradas mínimas requeridas para implementar el algoritmo y
resolver el SEL dado. Output es el resultado o producto del programa. If, Else y Then
representan los comandos básicos en cualquier entorno para llevar a cabo
comparaciones y bifurcaciones abierta. For, While, Do son los comandos típicos para
llevar a cabo bucles y bucles condicionados. Todos ellos se cierran con End. Para
indicar la finalización del programa se emplea la directiva Break.
______________________________________________________________________
25 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Algoritmo 1. Matriz diagonal

Matriz triangular inferior


Otro caso sencillo de resolver es cuando la matriz asociada al SEL es triangular superior
o triangular inferior. Supongamos que es del primer tipo, triangular inferior, por lo que
el sistema tendrá la forma siguiente

⎛a11 0 0 ⎞⎟
⎜⎜ ⎟⎛ ⎛ ⎞
⎜ ⎟⎟ ⎜ x 1 ⎞⎟⎟ ⎜⎜b1 ⎟⎟
⎜⎜⎜a21 ⎜
⎟⎟ ⎜ ⎟⎟ ⎜⎜ ⎟⎟
⎟ ⎜ ⎟ = ⎜ ⎟⎟ (1.3)
⎜⎜ ⎟⎜
⎜⎜ 0 ⎟⎟ ⎜⎜ ⎟⎟⎟ ⎜⎜ ⎟⎟⎟
⎟⎟ ⎜x n ⎟ ⎜⎜b ⎟
⎜⎜a
⎝ n1 ann −1 ann ⎟⎟⎠ ⎝ ⎠ ⎝ n ⎠

Admitiendo en principio que los elementos de la diagonal principal son no nulos:


aii ≠ 0 ∀i , es sencillo comprobar que los valores x i pueden irse obteniendo,
sucesivamente, del siguiente modo
1. Determinar directamente x 1 = b1 / a11 .
2. Sustituir el valor obtenido ( x 1 ) en la segunda ecuación
3. Resolver para x 2 = b2 / a22 − a21x 1 / a22
4. Sustituir el valor obtenido ( x 2 ) en la tercera ecuación
5. Etc. Proceder de igual modo hasta x n
Así, se van obteniendo los x 1, x 2 , …, x n , en este orden. Por el orden el que se van
resolviendo las ecuaciones, se denomina al procedimiento método de sustitución hacia
delante.

Algoritmo [Kincaid y Cheney, 1990]: Método de sustitución hacia delante


Input n, aij , bi
For i = 1 to i = n
⎛ i −1 ⎞
x i ← ⎜⎜⎜bi − ∑ aij x j ⎟⎟⎟ / aii
⎜⎝ j =1
⎟⎠
End
Output x i
Break
El algoritmo puede completarse con toda clase de refinamientos. Por ejemplo, este
algoritmo presupone que nos valores de la diagonal principal aii son no nulos, luego
sería conveniente programar un filtro para evitar desbordamientos por valores nulos (o
muy pequeños en módulo).
Algoritmo 2. Método de sustitución hacia delante

______________________________________________________________________
26 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Matriz triangular superior


Del mismo modo que para matrices triangulares inferiores se puede diseñar un
algoritmo semejante para matrices triangulares superiores. En este caso, el sistema tiene
la forma
⎛a11 a12 a1n ⎞
⎟⎟⎛ x ⎞ ⎛b ⎞
⎜⎜
⎜⎜ 0 ⎟⎟ ⎜⎜ 1 ⎟⎟ ⎜⎜ 1 ⎟⎟
⎜⎜ ⎟⎟⎟ ⎜⎜ ⎟⎟⎟ = ⎜⎜ ⎟⎟⎟ ,
⎜⎜ a ⎟⎜
⎟ ⎜ ⎟⎟ ⎜⎜ ⎟⎟ (1.4)
⎜ − ⎟⎜ ⎟ ⎜ ⎟
⎟⎟⎟ ⎝⎜x n ⎠⎟ ⎝⎜⎜bn ⎟⎠⎟
n 1n
⎜⎜⎜ 0 0 a ⎟
⎝ nn ⎠

y el método se denomina de sustitución hacia atrás.

Algoritmo [Kincaid y Cheney, 1990]: Método de sustitución hacia atrás


Input n, aij , bi
For i = 1 to i = n
⎛ n ⎞
x i ← ⎜⎜⎜bi − ∑ aij x j ⎟⎟⎟ / aii
⎜⎝ j =i +1
⎟⎠
End
Output x i
Break
Puede resultar útil a la hora de programar el algoritmo el definir una matriz extendida
(aij | bi ) , lo cual reduciría el número de operaciones así como los requerimientos de
memoria. No obstante, el código puede resultar algo más oscuro y, con la capacidad de
memoria de los ordenadores actuales, no existen, en general, demasiados problemas de
limitación de memoria.
Algoritmo 3. Método de sustitución hacia atrás

Matrices reducibles a triangulares mediante permutaciones de


filas

Aunque la resolución del SEL ya no es directa, incluimos en esta sección de sistemas


fácilmente resolubles a aquellos que son reducibles a alguno de los tipos anteriores
mediante la permutación de las ecuaciones. Recuérdese que la permutación de
ecuaciones era una de las operaciones elementales que transformaban un sistema en otro
equivalente (en este caso es trivial). Por ejemplo, el siguiente sistema de tres ecuaciones
⎛ ⎞ ⎛ ⎞
⎜⎜a11 a12 0 ⎟⎟ ⎛⎜x 1 ⎞⎟⎟ ⎜⎜b1 ⎟⎟
⎜ ⎟ ⎜
⎟ ⎜ ⎟ ⎜ ⎟⎟
⎜⎜⎜a21 a22 a23 ⎟⎟⎟⎜⎜x 2 ⎟⎟⎟ = ⎜⎜⎜b2 ⎟⎟⎟ (1.5)
⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟
⎜⎝a 31 0 0 ⎠⎟ ⎜⎝x 3 ⎟⎠ ⎜⎝b3 ⎟⎠
Se reduce a uno cuya matriz asociada es una matriz triangular inferior. La secuencia de
permutaciones es E1 ↔ E 3 , E2 ↔ E 3 , quedando

______________________________________________________________________
27 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

⎛a 31 0 0 ⎞⎛ ⎛ ⎞
⎜⎜ ⎟⎟ ⎜⎜x 3 ⎟⎟⎞ ⎜⎜b3 ⎟⎟
⎜⎜a ⎟⎟ ⎜ ⎟⎟ ⎜⎜ ⎟⎟
⎜⎜ 11 a12 0 ⎟⎟⎟ ⎜⎜⎜x 1 ⎟⎟⎟ = ⎜⎜b1 ⎟⎟⎟ . (1.6)
⎜⎜a ⎟⎟ ⎜⎜x ⎟⎟ ⎜⎜ ⎟⎟
⎝ 21 a22 a23 ⎠⎝ 2⎠ ⎜⎝b2 ⎟⎠

______________________________________________________________________
28 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Solución de SELs por eliminación


Pero, en general, lo que pretendemos es resolver cualquier tipo de SEL, sean cuales sean
las entradas de la matriz asociada y su rango (siempre y cuando tenga solución). En esta
sección presentamos los métodos más populares que emplean el método de eliminación
gaussiana. La eliminación gaussiana no es más que lo que ya comentamos
anteriormente: reducir el sistema original a otro más sencillo mediante operaciones
elementales. Por supuesto, la intuición en la resolución de SEL juega un papel
importante, permitiendo optimizar los cálculos para resolver un sistema dado; pero,
puesto que de lo que se trata es de implementarlo en un computador, se debe
sistematizar la reducción. Vemos a continuación diferentes formas de llevarla a cabo.

Método de Gauss con sustitución hacia atrás


Consideremos el siguiente sistema:

⎛ a11 … a1n ⎞⎛ ⎛ ⎞
⎜⎜ ⎟⎟ ⎜⎜ x 1 ⎟⎟⎞ ⎜⎜b1 ⎟⎟
⎜⎜ ⎟⎟ ⎜ ⎟⎟ ⎜⎜ ⎟⎟
⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟ = ⎜⎜ ⎟⎟ (1.7)
⎜⎜a ⎟⎟ ⎜⎜ ⎟⎟ ⎜ ⎟⎟

⎝ m1 a mn ⎟ ⎠⎝⎜x n ⎟⎠ ⎜⎜⎝bn ⎟⎠

A ⋅ x = b , A ∈ M n ( ) . La idea es reducir A , por ejemplo, a una matriz triangular


superior de la forma A ⋅ x = b siendo
⎛ ⎞⎛ ⎞ ⎛ ⎞
⎜⎜⎜a 11 … a 1n ⎟⎟⎟ ⎜⎜ x 1 ⎟⎟ ⎜⎜b 1 ⎟⎟⎟
⎜⎜ ⎟⎟⎟ ⎜⎜ ⎟⎟⎟ ⎜⎜⎜ ⎟⎟
⎜⎜ ⎟⎟⎜⎜ ⎟⎟ = ⎜ ⎟⎟ , (1.8)
⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟

⎜⎜
⎝ 0 a mn ⎟⎟⎠⎟ ⎝⎜x n ⎠⎟ ⎜⎝⎜b n ⎠⎟
⎛ n ⎞⎟
⎜⎜b i −
⎜⎜⎝ ∑
j =i +1
a ij x j ⎟⎟⎟

el sistema equivalente a (1.7). En tal caso x i = donde
a ij
i = n − 1, n − 2, …,1 son las soluciones del sistema (1.8), y por tanto las de (1.7).

Algoritmo [Burden y Faires, 1985]: Método de Gauss con sustitución hacia atrás
Input n, aij , bi
// Proceso de eliminación gaussiana
For i = 1 to i = n − 1
For j = i + 1 to i = n
m ji = a ji / aii
(E j − m jiEi ) → E j
End
End
If ann = 0 (no existe solución única) Then Break
______________________________________________________________________
29 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

// Sustitución hacia atrás


For i = 1 to i = n
⎛ n ⎞
x i ← ⎜⎜⎜bi − ∑ aij x j ⎟⎟⎟ / aii
⎜⎝ j =i +1
⎟⎠
End
Output x i
Break

Se pueden incluir chequeos para comprobar que la matriz es, en efecto, cuadrada, que
el determinante es no nulo, etc. Estos refinamientos quedan a discreción del lector.

Nótese que por ahorrar notación no hemos denotado las nuevas variables con tilde.

% GAUSSIAN ELIMINATION WITH BACKWARD SUBSTITUTION ALGOTITHM 6.1


%
% To solve the n by n linear system
%
% E1: A(1,1) X(1) + A(1,2) X(2) +...+ A(1,n) X(n) = A(1,n+1)
% E2: A(2,1) X(1) + A(2,2) X(2) +...+ A(2,n) X(n) = A(2,n+1)
% :
% .
% EN: A(n,1) X(1) + A(n,2) X(2) +...+ A(n,n) X(n) = A(n,n+1)
%
% INPUT: number of unknowns and equations n; augmented
% matrix A = (A(I,J)) where 1<=I<=n and 1<=J<=n+1.
%
% OUTPUT: solution x(1), x(2),...,x(n) or a message that the
% linear system has no unique solution.
syms('AA', 'NAME', 'INP', 'OK', 'N', 'I', 'J', 'A', 'NN', 'M');
syms('ICHG', 'IP', 'JJ', 'C', 'XM', 'K', 'X', 'SUM');
syms('KK', 'FLAG', 'OUP');
TRUE = 1;
FALSE = 0;
fprintf(1,'This is Gaussian Elimination to solve a linear
system.\n');
fprintf(1,'The array will be input from a text file in the
order:\n');
fprintf(1,'A(1,1), A(1,2), ..., A(1,N+1), \n');
fprintf(1,'A(2,1), A(2,2), ..., A(2,N+1),\n');
fprintf(1,'..., A(N,1), A(N,2), ..., A(N,N+1)\n\n');
fprintf(1,'Place as many entries as desired on each line, but
separate ');
fprintf(1,'entries with\n');
fprintf(1,'at least one blank.\n\n\n');
fprintf(1,'Has the input file been created? - enter Y or N.\n');
AA = input(' ','s');
if AA == 'Y' | AA == 'y'
fprintf(1,'Input the file name in the form - drive:\\name.ext\n');
fprintf(1,'for example: A:\\DATA.DTA\n');
NAME = input(' ','s');
INP = fopen(NAME,'rt');
OK = FALSE;
while OK == FALSE
fprintf(1,'Input the number of equations - an integer.\n');
N = input(' ');
if N > 0

______________________________________________________________________
30 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

A = zeros(N,N+1);
X = zeros(1,N);
for I = 1:N
for J = 1:N+1
A(I,J) = fscanf(INP, '%f',1);
end;
end;
OK = TRUE;
fclose(INP);
else fprintf(1,'The number must be a positive integer.\n');
end;
end;
else
fprintf(1,'The program will end so the input file can be
created.\n');
end;
if OK == TRUE
% STEP 1
% Elimination Process
NN = N-1;
M = N+1;
ICHG = 0;
I = 1;
while OK == TRUE & I <= NN
% STEP 2
% use IP instead of p
IP = I;
while abs(A(IP,I)) <= 1.0e-20 & IP <= N
IP = IP+1;
end;
if IP == M
OK = FALSE;
else
% STEP 3
if IP ~= I
for JJ = 1:M
C = A(I,JJ);
A(I,JJ) = A(IP,JJ);
A(IP,JJ) = C;
end;
ICHG = ICHG+1;
end;
% STEP 4
JJ = I+1;
for J = JJ:N
% STEP 5
% use XM in place of m(J,I)
XM = A(J,I)/A(I,I);
% STEP 6
for K = JJ:M
A(J,K) = A(J,K) - XM * A(I,K);
end;
% Multiplier XM could be saved in A(J,I).
A(J,I) = 0;
end;
end;
I = I+1;
end;
if OK == TRUE
% STEP 7
if abs(A(N,N)) <= 1.0e-20

______________________________________________________________________
31 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

OK = FALSE;
else
% STEP 8
% start backward substitution
X(N) = A(N,M) / A(N,N);
% STEP 9
for K = 1:NN
I = NN-K+1;
JJ = I+1;
SUM = 0;
for KK = JJ:N
SUM = SUM - A(I,KK) * X(KK);
end;
X(I) = (A(I,M)+SUM) / A(I,I);
end;
% STEP 10
% procedure completed successfully
fprintf(1,'Choice of output method:\n');
fprintf(1,'1. Output to screen\n');
fprintf(1,'2. Output to text file\n');
fprintf(1,'Please enter 1 or 2.\n');
FLAG = input(' ');
if FLAG == 2
fprintf(1,'Input the file name in the form - drive:\\name.ext\n');
fprintf(1,'for example: A:\\OUTPUT.DTA\n');
NAME = input(' ','s');
OUP = fopen(NAME,'wt');
else
OUP = 1;
end;
fprintf(OUP, 'GAUSSIAN ELIMINATION\n\n');
fprintf(OUP, 'The reduced system - output by rows:\n');
for I = 1:N
for J = 1:M
fprintf(OUP, ' %11.8f', A(I,J));
end;
fprintf(OUP, '\n');
end;
fprintf(OUP, '\n\nHas solution vector:\n');
for I = 1:N
fprintf(OUP, ' %12.8f', X(I));
end;
fprintf (OUP, '\n\nwith %d row interchange(s)\n', ICHG);
if OUP ~= 1
fclose(OUP);
fprintf(1,'Output file %s created successfully \n',NAME);
end;
end;
end;
if OK == FALSE
fprintf(1,'System has no unique solution\n');
end;
end;

Algoritmo 4. Método de Gauss con sustitución hacia atrás

Ejercicios

______________________________________________________________________
32 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Resolver mediante el método de Gauss con sustitución hacia atrás los siguientes SEL:

6x 1 − 2x 2 + 2x 3 + 4x 4 = 12
12x 1 − 8x 2 + 6x 3 + 10x 4 = 34
([Kincaid y Cheney, 1990], pag. 139)
3x 1 − 13x 2 + 9x 3 + 3x 4 = 27
−6x 1 + 4x 2 + x 3 − 18x 4 = −38

0.2614x 1 + 0.1735x 2 + 0.8642x 3 = −0.7521


0.9411x 1 + 0.0175x 2 + 0.1463x 3 = 0.6310 ([Kincaid y Cheney, 1990], pag. 158,
−0.8641x 1 − 0.4243x 2 + 0.0711x 3 = 0.2501
ejercicio 22)

⎛1 −1 2 −1⎞⎟ ⎛x 1 ⎞ ⎛−8 ⎞⎟
⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟ ⎜⎜ ⎟
⎜⎜2 −2
⎜⎜ 3 −3⎟⎟ ⎜⎜x 2 ⎟⎟ ⎜⎜⎜−20⎟⎟⎟
⎟⎟ ⎜ ⎟⎟ = ⎜ ⎟⎟ ([Burden y Faires, 1985], pag. 298)
⎜⎜1 1 ⎜ ⎜
1 0 ⎟⎟ ⎜⎜ 3 ⎟⎟ ⎜⎜−2 ⎟⎟⎟
⎟ x ⎟
⎜⎜ ⎟⎟ ⎜ ⎟⎟ ⎜ ⎟⎟
⎜1 −1
⎜⎝ 4 3 ⎟⎟⎠ ⎜⎜⎝x 4 ⎟⎠ ⎜⎜⎝⎜−4 ⎠⎟⎟

Limitaciones
El método de eliminación gaussiana, esquematizado en el Algoritmo 4 presenta algunas
limitaciones.

En primer lugar, lógicamente, el algoritmo no es aplicable cuando no sistema no tiene


solución o no tiene solución única. No obstante, estos casos pueden ser fácilmente
identificados calculando previamente el determinante de la matriz asociada al sistema
(aunque esto incrementa considerablemente el número de operaciones).

Otra limitación obvia proviene del hecho que en algún paso intermedio del Algoritmo 4
se produzca una división por cero (o números cercanos en módulo a cero). Estos pueden
ocurrir al determinar los factores m ji = a ji / aii para i, j dados; aunque eso no implica
que el sistema no tenga solución, sino que la técnica debe ser modificada para resolver
esa eventualidad. En la mayoría de los casos, es suficiente hacer una búsqueda en los
elementos siguientes de la misma columna e intercambiar las filas del elemento (o
pivote) nulo y la del nuevo no nulo encontrado. Para ilustrar esta dificultad, tratemos de
resolver el tercer ejercicio propuesto en el apartado anterior.

El sistema propuesto es
⎛1 −1 2 −1⎞⎟ ⎛x 1 ⎞ ⎛−8 ⎟⎞
⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟ ⎜⎜ ⎟
⎜⎜2 −2
⎜⎜ 3 −3⎟⎟ ⎜⎜x 2 ⎟⎟ ⎜⎜⎜−20⎟⎟⎟
⎟⎟ ⎜ ⎟⎟ = ⎜ ⎟⎟ .
1 0 ⎟⎟⎟ ⎜⎜⎜x 3 ⎟⎟⎟ ⎜⎜⎜−2 ⎟⎟⎟
⎜⎜1 1 (1.9)
⎜⎜ ⎟⎟ ⎜ ⎟⎟ ⎜ ⎟⎟
⎜1 −1
⎜⎝ 4 3 ⎟⎟⎠ ⎜⎜⎝x 4 ⎟⎠ ⎜⎜⎜−
⎝ 4 ⎟⎟

______________________________________________________________________
33 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Si seguimos paso a paso el Algoritmo 4, se eliminan los ai 1 con 2 ≤ i ≤ n llegándose


al sistema A(1) ⋅ x = b (1) , donde el superíndice indica que se trata de la matriz resultante
después de la primera iteración, a saber

⎛1 −1 2 −1⎟⎞ ⎛x 1 ⎞ ⎛−8⎟⎞
⎜⎜ ⎟ ⎟ ⎜ ⎟
⎜⎜0 0 −1 −1⎟⎟ ⎜⎜⎜x ⎟⎟ ⎜⎜⎜−4⎟⎟
⎜⎜ ⎟⎟ ⎜ 2 ⎟⎟ ⎜ ⎟⎟
⎜⎜0 2 −1 1 ⎟⎟⎟ ⎜⎜⎜x 3 ⎟⎟⎟ = ⎜⎜⎜6 ⎟⎟⎟ . (1.10)
⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟
⎟ ⎟ ⎟
⎜⎜0 0
⎝ 2 4 ⎟⎠⎟ ⎜⎜⎝x 4 ⎠⎟ ⎜⎜⎝12 ⎠⎟⎟
El problema aparece a continuación: el elemento de pivote actual, el a22 , tras la primera
(1)
iteración (denotado como a22 ) es nulo. Por tanto, no podemos llevar a cabo la
eliminación de los siguientes elementos de la segunda columna. Nuestro algoritmo
produciría un “infinito” y dejaría de resolver el sistema o, en términos matemáticos,
multiplicar por cero elimina ecuaciones. Lo que sí podemos hacer es permutar la fila
con pivote nulo por otra con un elemento no nulo (sistema (1.11)) en la misma columna
(en este caso la fila tercera) y proseguir con el algoritmo.
⎛1 −1 2 −1⎟⎞ ⎛x 1 ⎞ ⎛−8⎟⎞
⎜⎜ ⎟ ⎟ ⎜ ⎟
⎜⎜0 2 −1 1 ⎟⎟ ⎜⎜⎜x ⎟⎟ ⎜⎜⎜6 ⎟⎟
⎜⎜ ⎟⎟ ⎜ 2 ⎟⎟ ⎜ ⎟⎟
⎜⎜0 0 −1 −1⎟⎟⎟ ⎜⎜⎜x 3 ⎟⎟⎟ = ⎜⎜⎜−4⎟⎟⎟ . (1.11)
⎜⎜ ⎟
⎟⎟ ⎜⎜ ⎟⎟⎟ ⎜⎜ ⎟⎟ ⎟
⎜⎜0 0 2 4 ⎟⎟ ⎜⎝⎜x 4 ⎠⎟ ⎜⎜12 ⎟⎟
⎝ ⎠ ⎝ ⎠
En caso de que no existiera otro pivote no nulo, lógicamente, el sistema podría presentar
infinitas soluciones o bien no tener solución. Así pues, el Algoritmo 4 modificado,
incluyendo la búsqueda de pivotes no nulos, quedaría como sigue:

Algoritmo[Burden y Faires, 1985]: Método de Gauss con búsqueda de pivote


Input n, aij , bi
// Proceso de eliminación gaussiana
For i = 1 to i = n − 1
Find la menor fila p with i ≤ p ≤ n and a pi ≠ 0
If ∃p (no existe solución única) Then Break
If p ≠ i then E p ↔ Ei
For j = i + 1 to j = n
m ji = a ji / aii
(E j − m jiEi ) → E j
End
End
If ann = 0 (no existe solución única) Then Break

// Sustitución regresiva hacia atrás


For i = 1 to i = n
⎛ n ⎞
x i ← ⎜⎜⎜bi − ∑ aij x j ⎟⎟⎟ / aii
⎜⎝ j =i +1
⎟⎠

______________________________________________________________________
34 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

End
Output x i
Break

En caso que el sistema no presente solución única (tenido en cuenta en este algoritmo),
discernir entre infinitas soluciones o sistema incompatible requeriría operaciones
adicionales.
% GAUSSIAN ELIMINATION WITH PARTIAL PIVOTING ALGORITHM 6.2
%
% To solve the n by n linear system
%
% E1: A(1,1) X(1) + A(1,2) X(2) +...+ A(1,n) X(n) = A(1,n+1)
% E2: A(2,1) X(1) + A(2,2) X(2) +...+ A(2,n) X(n) = A(2,n+1)
% :
% .
% EN: A(n,1) X(1) + A(n,2) X(2) +...+ A(n,n) X(n) = A(n,n+1)
%
% INPUT: number of unknowns and equations n; augmented
% matrix A = (A(I,J)) where 1<=I<=n and 1<=J<=n+1.
%
% OUTPUT: solution x(1), x(2),...,x(n) or a message that the
% linear system has no unique solution.
syms('AA', 'NAME', 'INP', 'OK', 'N', 'I', 'J', 'A');
syms('M', 'NROW', 'NN', 'ICHG', 'IMAX', 'AMAX', 'JJ');
syms('IP', 'JP', 'NCOPY', 'I1', 'J1', 'XM', 'K', 'N1');
syms('X', 'N2', 'SUM', 'KK', 'FLAG', 'OUP');
TRUE = 1;
FALSE = 0;
fprintf(1,'This is Gaussian Elimination with Partial Pivoting.\n');
fprintf(1,'The array will be input from a text file in the
order:\n');
fprintf(1,'A(1,1), A(1,2), ..., A(1,N+1) \n');
fprintf(1,'A(2,1), A(2,2), ..., A(2,N+1),\n');
fprintf(1,'..., A(N,1), A(N,2), ..., A(N,N+1)\n\n');
fprintf(1,'Place as many entries as desired on each line, but
separate ');
fprintf(1,'entries with\n');
fprintf(1,'at least one blank.\n\n\n');
fprintf(1,'Has the input file been created? - enter Y or N.\n');
AA = input(' ','s');
if AA == 'Y' | AA == 'y'
fprintf(1,'Input the file name in the form - drive:\\name.ext\n');
fprintf(1,'for example: A:\\DATA.DTA\n');
NAME = input(' ','s');
INP = fopen(NAME,'rt');
OK = FALSE;
while OK == FALSE
fprintf(1,'Input the number of equations - an integer.\n');
N = input(' ');
if N > 0
A = zeros(N,N+1);
X = zeros(1,N);
NROW = zeros(1,N);
for I = 1:N
for J = 1:N+1
A(I,J) = fscanf(INP, '%f',1);
end;
end;
OK = TRUE;

______________________________________________________________________
35 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

fclose(INP);
else fprintf(1,'The number must be a positive integer.\n');
end;
end;
else
fprintf(1,'The program will end so the input file can be
created.\n');
end;
if OK == TRUE
M = N+1;
% STEP 1
for I = 1:N
NROW(I) = I;
end;
% initialize row pointer
NN = N-1;
ICHG = 0;
I = 1;
% STEP 2
while OK == TRUE & I <= NN
% STEP 3
IMAX = NROW(I);
AMAX = abs(A(IMAX,I));
IMAX = I;
JJ = I+1;
for IP = JJ:N
JP = NROW(IP);
if abs(A(JP,I)) > AMAX
AMAX = abs(A(JP,I));
IMAX = IP;
end;
end;
% STEP 4
if AMAX <= 1.0e-20
OK = FALSE;
else
% STEP 5
% simulate row interchange
if NROW(I) ~= NROW(IMAX)
ICHG = ICHG+1;
NCOPY = NROW(I);
NROW(I) = NROW(IMAX);
NROW(IMAX) = NCOPY;
end;
I1 = NROW(I);
% STEP 6
for J = JJ:N
J1 = NROW(J);
% STEP 7
XM = A(J1,I)/A(I1,I);
% STEP 8
for K = JJ:M
A(J1,K) = A(J1,K)-XM*A(I1,K);
end;
% Multiplier XM could be saved in A(J1,I)
A(J1,I) = 0;
end;
end;
I = I+1;
end;
if OK == TRUE

______________________________________________________________________
36 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

% STEP 9
N1 = NROW(N);
if abs(A(N1,N)) <= 1.0e-20
OK = FALSE;
% system has no unique solution
else
% STEP 10
% start backward substitution
X(N) = A(N1,M) / A(N1,N);
% STEP 11
for K = 1:NN
I = NN - K + 1;
JJ = I + 1;
N2 = NROW(I);
SUM = 0;
for KK = JJ:N
SUM = SUM-A(N2,KK)*X(KK);
end;
X(I) = (A(N2,M) + SUM) / A(N2,I);
end;
% STEP 12
% procedure completed successfully
fprintf(1,'Choice of output method:\n');
fprintf(1,'1. Output to screen\n');
fprintf(1,'2. Output to text file\n');
fprintf(1,'Please enter 1 or 2.\n');
FLAG = input(' ');
if FLAG == 2
fprintf(1,'Input the file name in the form - drive:\\name.ext\n');
fprintf(1,'for example: A:\\OUTPUT.DTA\n');
NAME = input(' ','s');
OUP = fopen(NAME,'wt');
else
OUP = 1;
end;
fprintf(OUP, 'GAUSSIAN ELIMINATION - PARTIAL PIVOTING\n\n');
fprintf(OUP, 'The reduced system - output by rows:\n');
for I = 1:N
for J = 1:M
fprintf(OUP, ' %11.8f', A(I,J));
end;
fprintf(OUP, '\n');
end;
fprintf(OUP, '\n\nHas solution vector:\n');
for I = 1:N
fprintf(OUP, ' %12.8f', X(I));
end;
fprintf (OUP, '\n\nwith %d row interchange(s)\n', ICHG);
fprintf(OUP, '\nThe rows have been logically re-ordered to:\n');
for I = 1:N
fprintf(OUP, ' %2d', NROW(I));
end;
fprintf(OUP,'\n');
if OUP ~= 1
fclose(OUP);
fprintf(1,'Output file %s created successfully \n',NAME);
end;
end;
end;
if OK == FALSE
fprintf(1,'System has no unique solution\n');

______________________________________________________________________
37 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

end;
end;

Algoritmo 5. Método de Gauss con sustitución hacia atrás y búsqueda de pivote.

Orden del algoritmo

Dos aspectos importantes a la hora de comparar diferentes métodos de resolución son


los errores de redondeo y el tiempo de cálculo. Ambos dependen críticamente del
número de operaciones llevadas a cabo al resolver el algoritmo. Por ello, en los
algoritmos que aquí presentamos daremos el número total de operaciones aritméticas
que requiere el algoritmo, aunque no entraremos en los detalles de cómo son calculados.
Usualmente, el número total de operaciones se da por separado en sumas y restas y en
productos y divisiones, puesto que el ordenador (concretamente la unidad aritmético-
lógica) emplea tiempos distintos para cada pareja de operaciones. Las suma de
multiplicaciones y divisiones la denotaremos como ∑ y ∑ para sumas y restas.
×÷ +−

Así, para el algoritmo de eliminación gaussiana con sustitución hacia atrás (incluyendo
la búsqueda de pivote no nulo), el número total de operaciones es de

2n 3 + 3n 2 − 5n n(n + 1) n 3 + 3n 2 − n

×÷
=
6
+
2
=
3
,
n 3 − n n(n − 1) 2n 3 + 3n 2 − 5n
∑+−
=
3
+
2
=
6
donde los primeros sumandos se refieren al cómputo para el proceso de eliminación
gaussiana y los segundos a la sustitución regresiva.

Ejemplos

x1 + x 2 + x 3 + x 4 = 7
x 1 + x 2 + 2x 4 = 8
([Burden y Faires, 1985], pag 300, falla por infinitas
2x 1 + 2x 2 + 3x 3 = 10
−x 1 − x 2 − 2x 3 + 2x 4 = 0
soluciones)

x1 + x 2 + x 3 + x 4 = 7
x 1 + x 2 + 2x 4 = 5
([Burden y Faires, 1985], pag 300, falla por no tener
2x 1 + 2x 2 + 3x 3 = 10
−x 1 − x 2 − 2x 3 + 2x 4 = 0
solución, sistema incompatible)

______________________________________________________________________
38 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

0.0003x 1 + 1.566x 2 = 1.569


([Conte y Boor, 1980], pag. 157, motiva la sección
0.3454x 1 − 2.436x 2 = 1.018
siguiente)

Método de Gauss con sustitución hacia delante

El método de eliminación gaussiana con sustitución hacia delante es en todo análogo al


visto en el apartado anterior, con sustitución hacia atrás; pero en este caso, el sistema
original se reduce a una matriz triangular inferior. Por lo demás, el orden del algoritmo
y las limitaciones del mismo son idénticas a las del Algoritmo 5. Por ello, proponemos
como ejercicio al lector desarrollar e implementar (o adaptar el Algoritmo 5) el método
de gauss con sustitución hacia delante

Método de Gauss-Jordan

Otro método de resolución, en la misma línea que los dos métodos anteriores, es el
llamado método de Gauss-Jordan. El método de Gauss-Jordan reduce la matriz asociada
al sistema de ecuaciones a una matriz diagonal, en vez de triangular superior o inferior.

Limitaciones

El método adolece de las mismas limitaciones que los anteriores. Hay que tener especial
cuidado en que el pivote sea no nulo para lo cual es a veces necesario hacer búsquedas
de pivotes en la columna.

Algoritmo [Burden y Faires, 1985]: Método de Gauss-Jordan con búsqueda de


pivote
Input n, aij , bi
// Proceso de eliminación gaussiana
For i = 1 to i = n − 1
Find el menor p with i ≤ p ≤ n and a pi ≠ 0
If ∃p (no existe solución única) Then Break
If p ≠ i then E p ↔ Ei
For j = i + 1 to j = n
m ji = a ji / aii
(E j − m jiEi ) → E j
End
For j = 1 to j = i − 1
m ji = a ji / aii

______________________________________________________________________
39 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

(E j − m jiEi ) → E j
End
End
If ann = 0 (no existe solución única) Then Break
// Sustitución directa (matriz diagonal)
For i = 1 to i = n
x i ← bi / aii
End
Output x i
Break

Algoritmo 6. Método de Gauss-Jordan con búsqueda de pivote

Orden del algoritmo

Es claro que el número de operaciones a la hora de resolver un sistema triangular es


inferior que en el caso de matrices triangulares. No obstante, globalmente, el número de
operaciones totales del algoritmo se incrementa con respecto a los dos anteriores puesto
que el número de operaciones realizadas para llegar a la matriz triangular es mayor. Los
números de operaciones requeridos son los siguientes:

n 3 + 2n 2 − 3n n 3 + 2n 2 − n
∑=
×÷ 2
+n =
2
,
n3 − n n3 − n
∑+−
=
2
+0=
2
donde los primeros sumandos se refieren al número de operaciones requeridas para el
proceso de eliminación gaussiana y los segundos a la sustitución regresiva, en este caso
directa.

Otros métodos

Para un tratamiento más extenso y detallado de otros métodos directos para la


resolución de SELs remitimos a la obra del Prof. Fuentes O’Connor [O'connor, 1993].

Método híbrido
Otra posible variación de los métodos anteriores, aunque similar al método de Gauss-
Jordan, consiste en transformar un sistema dado en un sistema triangular superior
(inferior) mediante el método de Gauss y entonces transformar éste en uno diagonal. Por
la evidente similitud con los casos anteriores no profundizamos más en este método.
Simplemente mostramos el orden de este algoritmo, que es el siguiente:

______________________________________________________________________
40 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

2n 3 + 3n 2 − 5n 2n 3 + 9n 2 − 5n
∑=
×÷ 6
+ n(n − 1) + n =
6
,
n3 − n n2 − n 2n 3 + 3n 2 − 5n
∑+−
=
3
+
2
+0=
6
donde el primer sumando es consecuencia de la triangulación, el segundo de la
diagonalización y el tercero para despejar las incógnitas del sistema ya diagonalizado.

Métodos de Givens (o de las rotaciones) y Householder


En estos métodos [Molina, 1996] se busca una descomposición de la forma A = Q ⋅U ,
siendo Q matriz ortogonal y U una matriz triangular superior. De este modo, al
multiplicar por la matriz Q traspuesta, que coincide con su inversa, se llega a
QT A = U , quedando un sistema triangular. Esta descomposición es siempre posible
para cualquier matriz A no singular.

Para órdenes grandes ( n 1 ), el coste operacional del método de Givens es de ∼ 2n 3


4n 3
y para Householder ∼ . Para estimar estos órdenes de magnitud sólo se ha tenido
3
en cuenta la factorización en QT A = U , no la resolución completa, que añade del orden
de ∼ n 2 operaciones.

Método de Cramer y de la matriz inversa


Los métodos que requieren del cálculo de determinantes o de matrices inversas para
determinar la solución del SEL (1.24) son, aunque teóricamente interesantes,
especialmente costosos. Dos ejemplos claros son determinar A−1 para resolver
x = A−1 ⋅ b , y el segundo el método de Cramer.

Para el primero, sólo calcular la matriz inversa, si existe, requiere las siguientes
operaciones [Burden y Faires, 1985]
4n 3 − n
∑×÷
=
3
mediante el método de Gauss
8n 3 − 9n 2 + n
∑+−
=
6

3n 3 − n
∑=
×÷ 2
mediante el método de Gauss-Jordan
3n 3 − 4n 2 + n

+−
=
2

Para el método de Cramer, se puede demostrar por inducción que si n > 1 , calcular un
sólo determinante de una matriz cuadrada de orden n requiere más de n ! operaciones.

______________________________________________________________________
41 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Concretamente (n − 1) ⋅ n ! productos y n !− 1 sumas y restas. Luego el total para el


método de Cramer asciende a
∑ = n + (n − 1)(n + 1)!
×÷

∑ = (n + 1)(n !− 1)
+−

Los órdenes de estos algoritmos son mucho más elevados que los mostrados por los
métodos de Gauss y sus variaciones, lo que los hace impracticables (especialmente el de
Cramer).

Métodos a medida
En muchas ocasiones los sistemas a resolver poseen ciertas simetrías que hacen que la
matriz asociada tenga una estructura muy concreta (e. g. matrices banda). Conocer las
simetrías y las estructuras facilitan el diseño de algoritmos a medida eficientes.
Proponemos como ejercicio desarrollar un programa para resolver de forma eficiente
SEL con matrices en banda.

______________________________________________________________________
42 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Estrategias de pivotaje
Ya vimos anteriormente que un elemento de pivote nulo requería de un intercambio de
filas. No obstante, en la práctica es a menudo necesario intercambiar filas aunque los
pivotes sean no nulos. Los algoritmos presentados anteriormente determinan la solución
(exacta) del sistema A ⋅ x = b , si todas las operaciones se llevan a cabo con precisión
infinita. Este es un problema estrictamente computacional, puesto que matemáticamente
las soluciones son exactas. Los computadores, emplean una aritmética de precisión
finita (15 dígitos es lo usual) puesto que, lógicamente, no tienen una capacidad infinita
ni de almacenamiento ni de cómputo. No obstante, actualmente existen módulos y
paquetes de programación estándar que permiten incrementar la precisión de los
cálculos de forma considerable, a costa del coste computacional.

El sistema siguiente, cuya solución exacta es (x 1, x 2 ) = (10.0,1.0) , propuesto en


secciones anteriores como ejercicio, es un ejemplo de cómo el uso de aritmética de
precisión finita puede conducir a resultados erróneos [Conte y Boor, 1980]:
0.0003x 1 + 1.566x 2 = 1.569
(1.12)
0.3454x 1 − 2.436x 2 = 1.018 .
Supongamos, para que los resultados sean más evidentes, que nuestro computador
trabaja con una aritmética de 4 dígitos decimales. Pretendemos resolver el sistema
(1.12) mediante el método de Gauss con búsqueda de pivote (Algoritmo 5). En tal caso,
el factor de escala para j = 2 y i = 1 es
m21 = 0.3454 / 0.0003 = 1151. (1.13)
Por tanto,
(1)
a22 = −2.436 − (1151.)(1.566) = −2.436 − 1802 = −1804
(1.14)
b2(1) = 1.018 − (1151.)(1.566) = 1.018 − 1806 = −1805,
resultando
x 2 = −1805 /1804 = 1.001
(1.15)
x 1 = (1.569 − 1.566 ⋅ 1.001)/ 0.0003 = 3.333,
que, evidentemente, es un resultado incorrecto, especialmente para x 1 .

Intuitivamente podría decirse que la fuente de error es el elemento a11 , que está
próximo a cero. Puesto que el algoritmo no es válido si a11 = 0 , en una máquina de
precisión finita, es lógico que el algoritmo no resuelva correctamente el sistema para a11
cercanos a cero.
Esta intuición es cierta en parte, aunque imprecisa. Lo que realmente conduce a
resultados erróneos es el hecho de que a11 y a12 son muy distintos en módulo, esto es,
a11 − a12 1 , por lo que un pequeño error debido a truncamiento o redondeo en
x 2 da lugar a una gran error en x 1 . Dicho de otro modo, para calcular x 1 nos queda en el
denominador a11 = 0.0003 y en el numerador a12 = 1.566 , magnificando
a11/ a12 = 1.566 / 0.0003 = 5220 veces el error por truncamiento. De hecho, este es
un problema general de la aritmética que emplean los computadores: operaciones con
números muy dispares. En la medida de lo posible debe evitarse este tipo de situaciones.

______________________________________________________________________
43 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

En el caso del sistema (1.12) y otros similares, el problema puede solucionarse


escogiendo como pivote el elemento a21 > a11 de la segunda ecuación, que no difiere
tanto del a22 . Haciendo esto, m11 = 0.0003 / 0.3454 = 0.0008 , que multiplicado por la
segunda ecuación y restado a la primera proporciona
1.568x 2 = 1.568, (1.16)
y despejando x 2 = 1.00 , que es el valor correcto. Sustituyendo este valor en la segunda
ecuación y despejado, llegamos a
1.018 + 2.438
x1 = = 10.01 (1.17)
0.3454
, que también es el valor correcto para x 1 . Nótese que en (1.17) las diferencias de
magnitud entre denominador y numerador no son tan grandes, impidiendo errores por
truncamiento y redondeo abultados.

A simple vista, puede resultar este problema de la aritmética finita un problema menor,
puesto que, a fin de cuentas, los ordenadores actuales trabajan con 15 dígitos sin
problemas. La respuesta es que depende del problema en cuestión. Sin bien es posible
que para resolver un sistema particular dado nos podamos permitir errores de redondeo
en la (e. g.) 12ª cifra decimal, también puede ocurrir que al resolver secuencialmente
SELs anidados el error se vaya acumulando, resultando al final del proceso un error
inaceptable en la solución. Esto último se da con frecuencia en la solución de
ecuaciones diferenciales en derivadas parciales dependientes del tiempo y discretizadas
mediante diferencias finitas.

Pivotaje máximo en la columna o pivotaje parcial

Basados en las dificultades a la hora de resolver el sistema (1.12) a partir del Algoritmo
5, diseñamos una nueva estrategia. La más sencilla es seleccionar el elemento (en la
misma columna) que esté por debajo de la diagonal y que tome el valor absoluto mayor.
Ese elemento será considerado como el pivote. El pseudocódigo se detalla a
continuación:

Algoritmo [Burden y Faires, 1985]: Método de Gauss con sustitución hacia atrás y
búsqueda de pivote máximo en la columna
Input n, aij , bi
// Proceso de eliminación gaussiana
For i = 1 to i = n − 1
Find el menor p with i ≤ p ≤ n and a pi = max a ji
i ≤ j ≤n

If ∃p or a pi = 0 (no existe solución única) Then Break


If p ≠ i Then E p ↔ Ei
For j = i + 1 to j = n
m ji = a ji / aii
(E j − m jiEi ) → E j
______________________________________________________________________
44 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

End
End

If ann = 0 (no existe solución única) Then Break

// Sustitución hacia atrás


For i = 1 to i = n
⎛ n ⎞
x i ← ⎜⎜⎜bi − ∑ aij x j ⎟⎟⎟ / aii
⎜⎝ j =i +1
⎟⎠
End
Output x i
Break
El algoritmo garantiza que los multiplicadores m ji no exceden la unidad (esto no es un
factor determinante en el buen funcionamiento del algoritmo)

% GAUSSIAN ELIMINATION WITH PARTIAL PIVOTING ALGORITHM 6.2


%
% To solve the n by n linear system
%
% E1: A(1,1) X(1) + A(1,2) X(2) +...+ A(1,n) X(n) = A(1,n+1)
% E2: A(2,1) X(1) + A(2,2) X(2) +...+ A(2,n) X(n) = A(2,n+1)
% :
% .
% EN: A(n,1) X(1) + A(n,2) X(2) +...+ A(n,n) X(n) = A(n,n+1)
%
% INPUT: number of unknowns and equations n; augmented
% matrix A = (A(I,J)) where 1<=I<=n and 1<=J<=n+1.
%
% OUTPUT: solution x(1), x(2),...,x(n) or a message that the
% linear system has no unique solution.
syms('AA', 'NAME', 'INP', 'OK', 'N', 'I', 'J', 'A');
syms('M', 'NROW', 'NN', 'ICHG', 'IMAX', 'AMAX', 'JJ');
syms('IP', 'JP', 'NCOPY', 'I1', 'J1', 'XM', 'K', 'N1');
syms('X', 'N2', 'SUM', 'KK', 'FLAG', 'OUP');
TRUE = 1;
FALSE = 0;
fprintf(1,'This is Gaussian Elimination with Partial Pivoting.\n');
fprintf(1,'The array will be input from a text file in the
order:\n');
fprintf(1,'A(1,1), A(1,2), ..., A(1,N+1) \n');
fprintf(1,'A(2,1), A(2,2), ..., A(2,N+1),\n');
fprintf(1,'..., A(N,1), A(N,2), ..., A(N,N+1)\n\n');
fprintf(1,'Place as many entries as desired on each line, but
separate ');
fprintf(1,'entries with\n');
fprintf(1,'at least one blank.\n\n\n');
fprintf(1,'Has the input file been created? - enter Y or N.\n');
AA = input(' ','s');
if AA == 'Y' | AA == 'y'
fprintf(1,'Input the file name in the form - drive:\\name.ext\n');
fprintf(1,'for example: A:\\DATA.DTA\n');
NAME = input(' ','s');
INP = fopen(NAME,'rt');
OK = FALSE;
while OK == FALSE
fprintf(1,'Input the number of equations - an integer.\n');

______________________________________________________________________
45 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

N = input(' ');
if N > 0
A = zeros(N,N+1);
X = zeros(1,N);
NROW = zeros(1,N);
for I = 1:N
for J = 1:N+1
A(I,J) = fscanf(INP, '%f',1);
end;
end;
OK = TRUE;
fclose(INP);
else fprintf(1,'The number must be a positive integer.\n');
end;
end;
else
fprintf(1,'The program will end so the input file can be
created.\n');
end;
if OK == TRUE
M = N+1;
% STEP 1
for I = 1:N
NROW(I) = I;
end;
% initialize row pointer
NN = N-1;
ICHG = 0;
I = 1;
% STEP 2
while OK == TRUE & I <= NN
% STEP 3
IMAX = NROW(I);
AMAX = abs(A(IMAX,I));
IMAX = I;
JJ = I+1;
for IP = JJ:N
JP = NROW(IP);
if abs(A(JP,I)) > AMAX
AMAX = abs(A(JP,I));
IMAX = IP;
end;
end;
% STEP 4
if AMAX <= 1.0e-20
OK = FALSE;
else
% STEP 5
% simulate row interchange
if NROW(I) ~= NROW(IMAX)
ICHG = ICHG+1;
NCOPY = NROW(I);
NROW(I) = NROW(IMAX);
NROW(IMAX) = NCOPY;
end;
I1 = NROW(I);
% STEP 6
for J = JJ:N
J1 = NROW(J);
% STEP 7
XM = A(J1,I)/A(I1,I);

______________________________________________________________________
46 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

% STEP 8
for K = JJ:M
A(J1,K) = A(J1,K)-XM*A(I1,K);
end;
% Multiplier XM could be saved in A(J1,I)
A(J1,I) = 0;
end;
end;
I = I+1;
end;
if OK == TRUE
% STEP 9
N1 = NROW(N);
if abs(A(N1,N)) <= 1.0e-20
OK = FALSE;
% system has no unique solution
else
% STEP 10
% start backward substitution
X(N) = A(N1,M) / A(N1,N);
% STEP 11
for K = 1:NN
I = NN - K + 1;
JJ = I + 1;
N2 = NROW(I);
SUM = 0;
for KK = JJ:N
SUM = SUM-A(N2,KK)*X(KK);
end;
X(I) = (A(N2,M) + SUM) / A(N2,I);
end;
% STEP 12
% procedure completed successfully
fprintf(1,'Choice of output method:\n');
fprintf(1,'1. Output to screen\n');
fprintf(1,'2. Output to text file\n');
fprintf(1,'Please enter 1 or 2.\n');
FLAG = input(' ');
if FLAG == 2
fprintf(1,'Input the file name in the form - drive:\\name.ext\n');
fprintf(1,'for example: A:\\OUTPUT.DTA\n');
NAME = input(' ','s');
OUP = fopen(NAME,'wt');
else
OUP = 1;
end;
fprintf(OUP, 'GAUSSIAN ELIMINATION - PARTIAL PIVOTING\n\n');
fprintf(OUP, 'The reduced system - output by rows:\n');
for I = 1:N
for J = 1:M
fprintf(OUP, ' %11.8f', A(I,J));
end;
fprintf(OUP, '\n');
end;
fprintf(OUP, '\n\nHas solution vector:\n');
for I = 1:N
fprintf(OUP, ' %12.8f', X(I));
end;
fprintf (OUP, '\n\nwith %d row interchange(s)\n', ICHG);
fprintf(OUP, '\nThe rows have been logically re-ordered to:\n');
for I = 1:N

______________________________________________________________________
47 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

fprintf(OUP, ' %2d', NROW(I));


end;
fprintf(OUP,'\n');
if OUP ~= 1
fclose(OUP);
fprintf(1,'Output file %s created successfully \n',NAME);
end;
end;
end;
if OK == FALSE
fprintf(1,'System has no unique solution\n');
end;
end;

Algoritmo 7. Método de Gauss con sustitución hacia atrás y búsqueda de pivote máximo en la columna

Limitaciones

Se ha optado por la estrategia de pivotaje más sencilla. Determinar cuál es la más


óptima para resolver un SEL general, de nuevo depende del sistema.

En la mayoría de situaciones este procedimiento es válido, aunque existen situaciones


en las que resulta inadecuado. Por ejemplo, un rescalamiento trivial puede dar al traste
con el Algoritmo 7.

Considérese, de nuevo es sistema (1.12), pero multiplicando la primera ecuación por


10m , con m ≥ 4 :
0.0003 ⋅ 10m x 1 + 1.566 ⋅ 10m x 2 = 1.569 ⋅ 10m
(1.18)
0.3454x 1 − 2.436x 2 = 1.018 .
Evidentemente, la soluciones exactas no cambian: (x 1, x 2 ) = (10.0,1.0) . Si tratamos de
aplicar el Algoritmo 7, encontramos que el pivote máximo es de nuevo
a11 = 0.0003 ⋅ 10m , llevándonos al mismo problema. En efecto,
m21 = (0.3454 / 0.0003) ⋅ 10−m = 1151 ⋅ 10−m . Multiplicando m21 por la primera
ecuación y restando la segunda, se obtiene
(1)
a22 = −2.436 − (1151 ⋅ 10−m )(1.566 ⋅ 10m ) = −2.436 − 1802 = −1804
(1.19)
b2(1) = 1.018 − (1151 ⋅ 10−m )(1.566 ⋅ 10m ) = 1.018 − 1806 = −1805,
dando lugar a x 2 = 1.0011 , que es la solución correcta. Sustituyendo x 2 = 1.0011 en la
primera ecuación llegamos nuevamente a
x 1 = (0.001 ⋅ 10m )/(0.0003 ⋅ 10m ) = 3.333. (1.20)
m
El factor de escalado 10 se cancela, pero hace que la ecuación del pivote sea de nuevo
la primera, que es la que presenta los problemas.

Para evitar que un rescalado trivial confunda al algoritmo, se introduce en el apartado


siguiente el pivotaje de columna escalada.

Ejercicios
Implemetar el algoritmo anterior con sustitución hacia delante.

______________________________________________________________________
48 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Pivotaje de columna escalada

La siguiente técnica es apropiada para resolver el problema del ejemplo (1.18). El


primer paso es definir un factor de escala si = max aij , representativo del “tamaño”
j =1,…,n

de la fila. Si si = 0 para algún i , por los teoremas 6.11 y 6.12 vistos en Burden, se sabe
que el sistema no tiene solución única y el procedimiento se detiene. El intercambio de
fila apropiado para obtener ceros en la primera columna ( E1 ←⎯→ Ek ) se determina
ak 1 a
eligiendo el primer entero k que verifica = max j 1 . El efecto del escalado es
sk j =1,…,n s
j

para asegurar que el elemento mayor en cada fila tiene una magnitud relativa unidad
antes de la comparación para el intercambio entre filas. Además, al principio del paso de
eliminación gaussiana, el algoritmo selecciona el pivote que tiene el valor mayor
relativo al “tamaño” de la fila, lo que garantiza que sea a estrategia correcta.

El escalado se realiza sólo para la comparación. El factor de escalado no introduce


errores de redondeo; y nótese que es importante realizar la determinación de los factores
de escala una vez, por eficiencia computacional.

Algoritmo [Burden y Faires, 1985]: Método de Gauss con sustitución hacia atrás y
búsqueda pivote de columna escalada
Input n, aij , bi
For i = 1 to i = n
si = max aij
1≤ j ≤n

End
If si = 0 then (no existe solución única) End
// Proceso de eliminación gaussiana
For i = 1 to i = n − 1
a pi a ji
Find el menor p with i ≤ p ≤ n and = max
sp i ≤ j ≤n s
j

If ∃p or a pi = 0 (no existe solución única) Then Break


If p ≠ i then E p ↔ Ei
For j = i + 1 to j = n
m ji = a ji / aii
(E j − m jiEi ) → E j
End
End

If ann = 0 (no existe solución única) Then Break

// Sustitución hacia atrás

______________________________________________________________________
49 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

For i = 1 to i = n
⎛ n ⎞
x i ← ⎜⎜bi − ∑ aij x j ⎟⎟⎟ / aii

⎜⎝ j =i +1
⎟⎠
End
Output x i
Break
Los si representan el “tamaño” de la fila, definido como si = max aij
1≤ j ≤n

% GAUSSIAN ELIMINATION WITH SCALED PARTIAL PIVOTING ALGORITHM 6.3


%
% To solve the n by n linear system
%
% E1: A(1,1) X(1) + A(1,2) X(2) +...+ A(1,n) X(n) = A(1,n+1)
% E2: A(2,1) X(1) + A(2,2) X(2) +...+ A(2,n) X(n) = A(2,n+1)
% :
% .
% EN: A(n,1) X(1) + A(n,2) X(2) +...+ A(n,n) X(n) = A(n,n+1)
%
% INPUT: number of unknowns and equations n; augmented
% matrix A = (A(I,J)) where 1<=I<=n and 1<=J<=n+1.
%
% OUTPUT: solution x(1), x(2),...,x(n) or a message that the
% linear system has no unique solution.
syms('AA', 'NAME', 'INP', 'OK', 'N', 'I', 'J', 'A', 'M');
syms('S', 'NROW', 'NN', 'ICHG', 'IMAX', 'AMAX', 'JJ');
syms('IP', 'JP', 'TEMP', 'NCOPY', 'I1', 'J1', 'XM', 'K');
syms('N1', 'X', 'N2', 'SUM', 'KK', 'FLAG', 'OUP','s');
TRUE = 1;
FALSE = 0;
fprintf(1,'This is Gauss Elimination with Scaled Partial
Pivoting.\n');
fprintf(1,'The array will be input from a text file in the
order:\n');
fprintf(1,'A(1,1), A(1,2), ..., A(1,N+1), \n');
fprintf(1,'A(2,1), A(2,2), ..., A(2,N+1),\n');
fprintf(1,'..., A(N,1), A(N,2), ..., A(N,N+1)\n\n');
fprintf(1,'Place as many entries as desired on each line, but
separate ');
fprintf(1,'entries with\n');
fprintf(1,'at least one blank.\n\n\n');
fprintf(1,'Has the input file been created? - enter Y or N.\n');
AA = input(' ','s');
if AA == 'Y' | AA == 'y'
fprintf(1,'Input the file name in the form - drive:\\name.ext\n');
fprintf(1,'for example: A:\\DATA.DTA\n');
NAME = input(' ','s');
INP = fopen(NAME,'rt');
OK = FALSE;
while OK == FALSE
fprintf(1,'Input the number of equations - an integer.\n');
N = input(' ');
if N > 0
A = zeros(N,N+1);
X = zeros(1,N);
for I = 1 : N
for J = 1 : N+1

______________________________________________________________________
50 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

A(I,J) = fscanf(INP, '%f',1);


end;
end;
OK = TRUE;
fclose(INP);
else fprintf(1,'The number must be a positive integer.\n');
end;
end;
else
fprintf(1,'The program will end so the input file can be
created.\n');
OK = FALSE;
end;
if OK == TRUE
M = N+1;
% STEP 1
S = zeros(1,N);
NROW = zeros(1,N);
for I = 1 : N
S(I) = abs(A(I,1));
% initialize row pointer
NROW(I) = I;
for J = 1 : N
if abs(A(I,J)) > S(I)
S(I) = abs(A(I,J));
end;
end;
if S(I) <= 1.0e-20
OK = FALSE;
end;
end;
NN = N-1;
ICHG = 0;
I = 1;
% STEP 2
% elimination process
while OK == TRUE & I <= NN
% STEP 3
IMAX = NROW(I);
AMAX = abs(A(IMAX,I))/S(IMAX);
IMAX = I;
JJ = I+1;
for IP = JJ : N
JP = NROW(IP);
TEMP = abs(A(JP,I)/S(JP));
if TEMP > AMAX
AMAX = TEMP;
IMAX = IP;
end;
end;
% STEP 4
% system has no unique solution
if AMAX <= 1.0e-20
OK = FALSE;
else
% STEP 5
% simulate row interchange
if NROW(I) ~= NROW(IMAX)
ICHG = ICHG+1;
NCOPY = NROW(I);
NROW(I) = NROW(IMAX);

______________________________________________________________________
51 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

NROW(IMAX) = NCOPY;
end;
% STEP 6
I1 = NROW(I);
for J = JJ : N
J1 = NROW(J);
% STEP 7
XM = A(J1,I)/A(I1,I);
% STEP 8
for K = JJ : M
A(J1,K) = A(J1,K)-XM*A(I1,K);
end;
% Multiplier XM could be saved in A(J1,I)
A(J1,I) = 0;
end;
end;
I = I+1;
end;
if OK == TRUE
% STEP 9
N1 = NROW(N);
if abs(A(N1,N)) <= 1.0e-20
OK = FALSE;
% system has no unique solution
else
% STEP 10
% start backward substitution
X(N) = A(N1,M)/A(N1,N);
% STEP 11
for K = 1 : NN
I = NN-K+1;
JJ = I+1;
N2 = NROW(I);
SUM = 0;
for KK = JJ : N
SUM = SUM-A(N2,KK)*X(KK);
end;
X(I) = (A(N2,M)+SUM)/A(N2,I);
end;
% STEP 12
% procedure completed successfully
fprintf(1,'Choice of output method:\n');
fprintf(1,'1. Output to screen\n');
fprintf(1,'2. Output to text file\n');
fprintf(1,'Please enter 1 or 2\n');
FLAG = input(' ');
if FLAG == 2
fprintf(1,'Input the file name in the form - drive:\\name.ext\n');
fprintf(1,'For example A:\\OUTPUT.DTA\n');
NAME = input(' ','s');
OUP = fopen(NAME,'wt');
else
OUP = 1;
end;
fprintf(OUP, 'GAUSSIAN ELIMINATION WITH SCALED PARTIAL
PIVOTING\n\n');
fprintf(OUP, 'The reduced system - output by rows:\n');
for I = 1 : N
for J = 1 : M
fprintf(OUP, ' %11.8f', A(I,J));
end;

______________________________________________________________________
52 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

fprintf(OUP,'\n');
end;
fprintf(OUP, '\n\nHas solution vector:\n');
for I = 1 : N
fprintf(OUP, ' %11.8f', X(I));
end;
fprintf(OUP, '\nwith %3d row interchange(s)\n', ICHG) ;
fprintf(OUP, '\nThe rows have been logically re-ordered to:\n');
for I = 1 : N
fprintf(OUP, ' %2d', NROW(I));
end;
fprintf(OUP, '\n');
if OUP ~= 1
fclose(OUP);
fprintf(1,'Output file %s created successfully \n',NAME);
end;
end;
end;
if OK == FALSE
fprintf(1,'System has no unique solution\n');
end;
end;

Algoritmo 8. Método de Gauss con sustitución hacia atrás y búsqueda pivote de columna escalada

Orden del algoritmo


El pivotaje de columna escalada sólo requiere efectuar comparaciones, cuyo tiempo
computacional es similar a de las sumas y restas, y divisiones. En total agrega [Burden y
Faires, 1985]

3
∑ = 2n(n − 1)
comp .

n(n + 1)
∑=
÷ 2
−1

operaciones, la cuales, comparadas con el número requerido para un algoritmo de


eliminación de gauss, son despreciables para n grandes. Este tipo de pivotaje no
aumenta de forma significativa el tiempo invertido para resolver un SEL.

Puede ocurrir que el sistema sea especialmente rebelde, de tal forma que se requiera
calcular los factores de escala dada vez que se realiza un intercambio de filas. En este
caso, lo recomendable es emplear el pivotaje máximo o completo, que sólo requiere el
siguiente número de compraciones

n(n − 1)(2n + 5)
∑= 6
.
comp .

Nótese que calcular los si cada vez que se realiza un intercambio de filas graba
considerablemente el algoritmo ( ∼ n 3 / 6 ).

______________________________________________________________________
53 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Factorización de Matrices
Supóngase que A ∈ M 4 ( ) puede factorizarse en el producto dos matrices triangulares:
una inferior, L = (lij )n×n , y otra superior, U = (uij )n×n , ambas L,U ∈ M n ( ) . Si es así,
diremos que A tiene una descomposición o factorización LU . No obstante, hay que
decir que no toda matriz puede descomponerse de esta forma. Véanse los teoremas
dados en el apartado de fundamentos. Entonces, para resolver el sistema
Ax = LUx = b , donde x , b, y ∈ M n×1( ) , es posible resolverlo en dos pasos
1. Ly = b para y , por el (v.gr.) método de Gauss con sustitución hacia delante
2. Ux = y para x , por el (v.gr) método de Gauss con sustitución hacia atrás

Los análisis previos realizados en la sección anterior indican que resolver sistemas
triangulares es sencillo. Para determinar sus coeficientes emplearemos la igualdad
A = LU , desarrollando el producto de ambas matrices. Puesto que A tiene 16
coeficientes y la suma de coeficientes incógnita de las matrices L y U son 20, se
requieren 4 condiciones adicionales. Por ejemplo, se puede considerar que lii = 1
(método de Doolittle) o uii = 1 (método de Crout) o uii = lii (método de Choleski),
para todo 1 ≤ i ≤ n .

Antes de presentar, de forma algo más formal, el algoritmo de descomposición LU ,


puede resultar útil dar un ejemplo del mismo, para así familiarizarse con el mismo.
Supongamos una matriz A ∈ M 4 ( ) :
⎛ 6 2 1 −1⎞⎟
⎜⎜ ⎟⎟
⎜⎜ 2 4 1 0 ⎟⎟
⎜⎜ ⎟⎟
A=⎜ (1.21)
⎜⎜ 1 1 4 1 ⎟⎟⎟
⎜⎜ ⎟⎟
⎜⎜− 1 0 − 1 3 ⎟⎟
⎝ ⎠
Las matrices triangular superior y triangular inferior se definen como sigue
⎛l11 0 0 0 ⎞⎟ ⎛u11 u12 u13 u14 ⎞⎟
⎜⎜ ⎟⎟ ⎜⎜ ⎟
⎜⎜l l 0 0 ⎟⎟ ⎜ ⎜ 0 u22 u23 u24 ⎟⎟
⎜ ⎟
⎟⎟, U = ⎜⎜
21 22
L = ⎜⎜ ⎟ ⎜ ⎟⎟
⎟ (1.22)
⎜⎜l31 l32 l33 0 ⎟ ⎟ ⎜⎜ 0 0 u u 34 ⎟
⎜ ⎟⎟ ⎜⎜
33


⎜⎜⎜⎝l41 l42 l43 l44 ⎟⎠⎟ ⎜⎝ 0 0 0 u44 ⎟⎟⎠
Supóngase además la condición de Doolittle l11 = l22 = l 33 = l44 = 1 . El producto de la
primera fila de L con las columnas de U proporciona directamente la primera fila
completa de coeficientes de U :
l11u11 = 6 → u11 = 6
u12 = 2
(1.23)
u13 = 1
u14 = −1.
La primera columna de L multiplicada por las diferentes filas de U dan lugar a

______________________________________________________________________
54 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

l21u11 = 2 → l21 = 1/ 3
l 31 = 1/ 3 (1.24)
l 41 = −1/ 6.
Repitiendo el mismo proceso anterior pero con las segundas filas y columnas, en este
orden, de L se llega a
l21u12 + l22u22 = 4 → u22 = 10 / 3
u23 = 2 / 3 (1.25)
u24 = 1/ 3
y
l 31u12 + l 32u22 = 1 → l 32 = 1/ 5
(1.26)
l 42 = 1/10,

respectivamente. Y así, sucesivamente, se determinarían todos los coeficientes de las


matrices triangulares, resultando
⎛ 1 0 0 0⎞⎟ ⎛6 2 1 −1 ⎞⎟
⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟
⎜⎜ 1/ 3 1 0 0 ⎟⎟ ⎜⎜0 10 / 3 2 / 3 1/ 3 ⎟⎟
⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟
L =⎜ ⎟⎟, U = ⎜⎜ ⎟ . (1.27)
⎜⎜ 1/ 6 1/ 5 1 0⎟ ⎜ 0 0 37 /10 −9 /10 ⎟⎟
⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟
⎜⎜−1/ 6 1/10 −9 / 37 1⎟⎟⎟ ⎜⎜0 ⎟
⎝ ⎠ ⎝ 0 0 191/ 74 ⎠⎟⎟

Para derivar el algoritmo general para la factorización LU partimos de la fórmula del


producto de matrices [Kincaid y Cheney, 1990]
n min(i , j )
aij = ∑ lik ukj = ∑ lik ukj (1.28)
k =1 k =1
donde en la segunda igualdad hemos hecho uso del hecho que lik = 0 para k > i y que
ukj = 0 para k > j .
Cada paso de este proceso determina una nueva fila de U y una nueva columna de L ,
como se ha podido comprobar en el ejemplo (1.21). En el paso q -ésimo, se puede
asumir que las filas 1,2, …, q − 1 han sido ya calculadas en U y que las columnas
1,2, …, q − 1 se han calculado en L . Para i = j = q se obtiene
q −1
aqq = lqq uqq + ∑ lqk ukq . (1.29)
k =1
Luego, si lqq o uqq han sido especificados, se emplea la ecuación (1.29) para determinar
la otra. Con lqq y uqq conocidas , se emplea la ecuación (1.29) para escribir para la q -
ésima fila ( q = i ) y la q -ésima columna
q −1
aqj = lqq uqj + ∑ lqk ukj (q + 1 ≤ j ≤ n ) (1.30)
k =1
q −1
aiq = lqq uqq + ∑ lik ukq (q + 1 ≤ i ≤ n ). (1.31)
k =1

______________________________________________________________________
55 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Si lqq ≠ 0 la ecuación (1.30) puede ser usada para obtener los elementos uqj . Del forma
similar, si los coeficientes uqq ≠ 0 , a partir de ellos puede determinarse mediante la
ecuación (1.31) los elementos liq . Esta condición es porque el método implica
divisiones por lqq y uqq , por lo que si son nulos el cálculo no podrá completarse
(excepto en casos muy concretos en los que de algún modo se elimine esa posible
divergencia).

Evidentemente, no cualquier matriz tiene una representación LU . Las condiciones para


que una matriz dada A ∈ M n ( ) , asociada a un sistema Ax = b , pueda descomponerse
en el producto LU se dan en los tres teoremas siguientes. Lejos de tratarse de mero
formalismo matemático, son útiles para realizar los chequeos pertinentes al inicio del
programa a fin de que el programa funcione correctamente.

Teorema: Descomposición LU (i)


Si un procedimiento estándar de eliminación de Gauss que resuelve el sistema Ax = b ,
donde A ∈ M n ( ) y b, x ∈ M n×1( ) , se ha llevado a cabo sin permutación de filas,
entonces la matriz A admite una descomposición en producto de una matriz triangular
inferior L y triangular superior U ( L,U ∈ M n ( ) ):
A = LU , (1.32)
siendo la matriz U la determinada mediante el método de eliminación de Gauss con
sustitución hacia atrás y los coeficientes de la diagonal principal de L son lii = 1

Teorema: Descomposición LU (ii)


Si todos los menores principales A1, …, An de una matriz A ∈ M n ( ) son no-singulares
( det(Ai ) ≠ 0 ) , entonces A tiene una descomposición LU . (1.33)

Teorema: Factorización de Choleski


Si A ∈ M n ( ) es una matriz simétrica y definida positiva, tiene una única factorización
de la forma
A = LLT (1.34)
en la cual L es una matriz diagonal inferior con coeficientes en la diagonal positivos.
Nótese que LT es una matriz diagonal superior, por un momento llamémosla
LT = U = (uij )n×n , verificándose uii = lii (condición de Choleski).

Corolario: Factorización y matrices diagonalmente dominantes


Toda matriz diagonalmente dominante es no singular y tiene una descomposición LU .

Nótese que en la práctica, para asegurarnos de que una matriz A ∈ M n ( ) admite una
descomposición LU unívoca, basta con comprobar que es definida positiva o que es
diagonalmente dominante. En caso de no serlo (es condición suficiente) no podemos
asegurar si tiene o no tiene descomposición.

______________________________________________________________________
56 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Método de Doolittle

Presentamos a continuación el algoritmo de Doolittle para la descomposición LU ,


admitiendo que existe y es única, de una matriz A ∈ M n ( ) dada asociada a un SEL.
Recordemos que Dolittle suponía lii = 1 , ∀i, 1 ≤ i ≤ n , para suplir el exceso de
incógnitas introducidas al factorizar A en dos nuevas matrices. El algoritmo es el
siguiente:

Algoritmo[Kincaid y Cheney, 1990]: Factorización LU por el método de Doolittle


Input n, aij
For k = 1 to k = n
lkk ← 1
For j = k to k = n
⎛ k −1 ⎞
ukj ← ⎜⎜akj − ∑ lks usj ⎟⎟ / lkk
⎜⎝ s =1
⎟⎠
End
For i = k + 1 to k = n
⎛ k −1 ⎞
lik ← ⎜⎜aik − ∑ lis usk ⎟⎟ / ukk
⎜⎝ s =1
⎟⎠
End
End
Output lij , uij
Break
Es importante añadir al inicio del programa los chequeos necesarios, proporcionados
por los teoremas anteriores, a fin de que esté garantizada la existencia y unicidad de la
descomposición LU . Por ejemplo, se puede comprobar que la matriz A es
diagonalmente dominante.

Sólo se muestra la parte de factorización de la matriz A en el producto de LU . El


algoritmo completo para la resolución del sistema debe ser completado con los pasos
indicados al inicio de la sección.
% DIRECT FACTORIZATION ALGORITHM 6.4
%
% To factor the n by n matrix A = (A(I,J)) into the product of the
% lower triangular matrix L = (L(I,J)) and the upper triangular
% matrix U = (U(I,J)), that is A = LU, where the main diagonal of
% either L or U consists of all ones:
%
% INPUT: dimension n; the entries A(I,J), 1<=I, J<=n, of A;
% the diagonal L(1,1), ..., L(N,N) of L or the diagonal
% U(1,1), ..., U(N,N) of U.
%
% OUTPUT: the entries L(I,J), 1<=J<=I, 1<=I<=n of L and the entries
% U(I,J), I<=J<=n, 1<=I<=n of U.
syms('AA', 'NAME', 'INP', 'OK', 'N', 'I', 'J', 'A');
syms('FLAG', 'ISW', 'XL', 'M', 'KK', 'S', 'K', 'JJ');
syms('SS', 'OUP', 's');
TRUE = 1;

______________________________________________________________________
57 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

FALSE = 0;
fprintf(1,'This is the general LU factorization method.\n');
fprintf(1,'The array will be input from a text file in the
order:\n');
fprintf(1,'A(1,1), A(1,2), ..., A(1,N), \n')
fprintf(1,'A(2,1), A(2,2), ..., A(2,N),\n');
fprintf(1,'..., A(N,1), A(N,2), ..., A(N,N)\n\n');
fprintf(1,'Place as many entries as desired on each line, but
separate\n');
fprintf(1,'entries with\n');
fprintf(1,'at least one blank.\n\n\n');
fprintf(1,'Has the input file been created? - enter Y or N.\n');
AA = input(' ','s');
if AA == 'Y' | AA == 'y'
fprintf(1,'Input the file name in the form - drive:\\name.ext\n');
fprintf(1,'for example: A:\\DATA.DTA\n');
NAME = input(' ','s');
INP = fopen(NAME,'rt');
OK = FALSE;
while OK == FALSE
fprintf(1,'Input the dimension n - an integer.\n');
N = input(' ');
if N > 0
A = zeros(N,N);
XL = zeros(1,N);
for I = 1 : N
for J = 1 : N
A(I,J) = fscanf(INP, '%f',1);
end;
end;
OK = TRUE;
fclose(INP);
else fprintf(1,'The number must be a positive integer.\n');
end;
end;
fprintf(1,'Choice of diagonals:\n');
fprintf(1,'1. Diagonal of L consists of ones\n');
fprintf(1,'2. Diagonal of U consists of ones\n');
fprintf(1,'Please enter 1 or 2.\n');
FLAG = input(' ');
if FLAG == 1
ISW = 0;
else
ISW = 1;
end
else
fprintf(1,'The program will end so the input file can be
created.\n');
OK = FALSE;
end;
if OK == TRUE
for I = 1 : N
XL(I) = 1;
end;
% STEP 1
if abs(A(1,1)) <= 1.0e-20
OK = FALSE;
else
% the entries of L below the main diagonal will be placed
% in the corresponding entries of A; the entries of U
% above the main diagonal will be placed in the

______________________________________________________________________
58 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

% corresponding entries of A; the main diagonal which


% was not input will become the main diagonal of A;
% the input main diagonal of L or U is,
% of course, placed in XL
A(1,1) = A(1,1)/XL(1);
% STEP 2
for J = 2 : N
if ISW == 0
% first row of U
A(1,J) = A(1,J)/XL(1);
% first column of L
A(J,1) = A(J,1)/A(1,1);
else
% first row of U
A(1,J) = A(1,J)/A(1,1);
% first column of L
A(J,1) = A(J,1)/XL(1);
end;
end;
% STEP 3
M = N-1;
I = 2;
while I <= M & OK == TRUE
% STEP 4
KK = I-1;
S = 0;
for K = 1 : KK
S = S-A(I,K)*A(K,I);
end;
A(I,I) = (A(I,I)+S)/XL(I);
if abs(A(I,I)) <= 1.0e-20
OK = FALSE;
else
% STEP 5
JJ = I+1;
for J = JJ : N
SS = 0;
S = 0;
for K = 1 : KK
SS = SS-A(I,K)*A(K,J);
S = S-A(J,K)*A(K,I);
end;
if ISW == 0
% Ith row of U
A(I,J) = (A(I,J)+SS)/XL(I);
% Ith column of L
A(J,I) = (A(J,I)+S)/A(I,I);
else
% Ith row of U
A(I,J) = (A(I,J)+SS)/A(I,I);
% Ith column of L
A(J,I) = (A(J,I)+S)/XL(I);
end;
end;
end;
I = I+1;
end;
if OK == TRUE
% STEP 6
S = 0;
for K = 1 : M

______________________________________________________________________
59 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

S = S-A(N,K)*A(K,N);
end;
A(N,N) = (A(N,N)+S)/XL(N);
% If A(N,N) = 0 then A = LU but the matrix is singular.
% Process is complete, all entries of A have been determined.
% STEP 7
fprintf(1,'Choice of output method:\n');
fprintf(1,'1. Output to screen\n');
fprintf(1,'2. Output to text file\n');
fprintf(1,'Please enter 1 or 2\n');
FLAG = input(' ');
if FLAG == 2
fprintf(1,'Input the file name in the form - drive:\\name.ext\n');
fprintf(1,'For example A:\\OUTPUT.DTA\n');
NAME = input(' ','s');
OUP = fopen(NAME,'wt');
else
OUP = 1;
end;
fprintf(OUP, 'GENERAL LU FACTORIZATION\n\n');
if ISW == 0
fprintf(OUP, 'The diagonal of L consists of all entries = 1.0\n');
else
fprintf(OUP, 'The diagonal of U consists of all entries = 1.0\n');
end;
fprintf(OUP, '\nEntries of L below/on diagonal and entries of U
above');
fprintf(OUP, '/on diagonal\n');
fprintf(OUP, '- output by rows in overwrite format:\n');
for I = 1 : N
for J = 1 : N
fprintf(OUP, ' %11.8f', A(I,J));
end;
fprintf(OUP, '\n');
end;
if OUP ~= 1
fclose(OUP);
fprintf(1,'Output file %s created successfully \n',NAME);
end;
end;
end;
if OK == FALSE
fprintf(1,'The matrix does not have an LU factorization.\n');
end;
end;

Algoritmo 9. Factorización LU por el método de Doolittle.

Método de Crout

El pseudocódigo para llevar a cabo la factorización LU según el método de Crout, que


asume uii = 1 , ∀i, 1 ≤ i ≤ n , es el siguiente:

Algoritmo[Kincaid y Cheney, 1990]: Factorización LU por el método de Crout

______________________________________________________________________
60 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Input n, aij
For k = 1 to k = n
ukk ← 1
For i = k to i = n
⎛ k −1 ⎞
lik ← ⎜⎜aik − ∑ lis usk ⎟⎟⎟ / ukk
⎝⎜ s =1 ⎠
End
For j = k + 1 to j = n
⎛ k −1 ⎞
ukj ← ⎜akj − ∑ lks usj ⎟⎟ / lkk

⎜⎝ s =1
⎟⎠
End

End
Output lij , uij
Break
Es importante añadir al inicio del programa los chequeos necesarios, proporcionados
por los teoremas anteriores, a fin de que esté garantizada la existencia y unicidad de la
descomposición LU . Por ejemplo, se puede comprobar que la matriz A es definida
positiva.

Sólo se muestra la parte de factorización de la matriz A en el producto de LU . El


algoritmo completo para la resolución del sistema debe ser completado con los pasos
indicados al inicio de la sección, a saber, determinar Lz = b y, seguidamente, Ux = z ,
siendo z ∈ n .
% CROUT FACTORIZATION FOR TRIDIAGONAL LINEAR SYSTEMS ALGORITHM 6.7
%
% To solve the n x n linear system
%
% E1: A(1,1) X(1) + A(1,2) X(2) = A(1,n+1)
% E2: A(2,1) X(1) + A(2,2) X(2) + A(2,3) X(3) = A(2,n+1)
% :
% .
% E(n): A(n,n-1) X(n-1) + A(n,n) X(n) = A(n,n+1)
%
% INPUT: the dimension n; the entries of A.
%
% OUTPUT: the solution X(1), ..., X(N).
syms('AA', 'OK', 'NAME', 'INP', 'N', 'I', 'A', 'B', 'NN');
syms('C', 'BB', 'Z', 'X', 'II', 'FLAG', 'OUP', 's');
TRUE = 1;
FALSE = 0;
fprintf(1,'This is Crout Method for tridiagonal linear systems.\n');
fprintf(1,'The array will be input from a text file in the
order:\n');
fprintf(1,'all diagonal entries, all lower sub-diagonal entries, all
');
fprintf(1,'upper sub-diagonal\n');
fprintf(1,'entries, inhomogeneous term.\n\n');
fprintf(1,'Place as many entries as desired on each line, but
separate ');
fprintf(1,'entries with\n');
fprintf(1,'at least one blank.\n\n\n');

______________________________________________________________________
61 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

fprintf(1,'Has the input file been created? - enter Y or N.\n');


AA = input(' ','s');
OK = FALSE;
if AA == 'Y' | AA == 'y'
fprintf(1,'Input the file name in the form - drive:\\name.ext\n');
fprintf(1,'for example: A:\\DATA.DTA\n');
NAME = input(' ','s');
INP = fopen(NAME,'rt');
OK = FALSE;
while OK == FALSE
fprintf(1,'Input the number of equations - an integer.\n');
N = input(' ');
if N > 0
A = zeros(1,N);
B = zeros(1,N);
C = zeros(1,N);
BB = zeros(1,N);
X = zeros(1,N);
Z = zeros(1,N);
% A(I,I) is stored in A(I), 1 <= I <= n */
for I = 1 : N
A(I) = fscanf(INP, '%f',1);
end;
% the lower sub-diagonal A(I,I-1) is stored
%in B(I), 2 <= I <= n */
for I = 2 : N
B(I) = fscanf(INP, '%f',1);
end;
% the upper sub-diagonal A(I,I+1) is stored
%in C(I), 1 <= I <= n-1 */
NN = N-1;
for I = 1 : NN
C(I) = fscanf(INP, '%f',1);
end;
% A(I,N+1) is stored in BB(I), 1 <= I <= n */
for I = 1 : N
BB(I) = fscanf(INP, '%f',1);
end;
OK = TRUE;
fclose(INP);
else
fprintf(1,'The number must be a positive integer.\n');
end;
end;
else
fprintf(1,'The program will end so the input file can be created.\n')
end;
if OK == TRUE
% Steps 1-3 set up and solve LZ = B
% STEP 1
% the entries of U overwrite C and the entries of L overwrite A
C(1) = C(1)/A(1);
Z(1) = BB(1)/A(1);
% STEP 2
for I = 2 : NN
A(I) = A(I)-B(I)*C(I-1);
C(I) = C(I)/A(I);
Z(I) = (BB(I)-B(I)*Z(I-1))/A(I);
end;
% STEP 3
A(N) = A(N)-B(N)*C(N-1);

______________________________________________________________________
62 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Z(N) = (BB(N)-B(N)*Z(N-1))/A(N);
% STEP 4
% STEPS 4, 5 solve UX = Z
X(N) = Z(N);
% STEP 5
for II = 1 : NN
I = NN-II+1;
X(I) = Z(I)-C(I)*X(I+1);
end;
% STEP 6
fprintf(1,'Choice of output method:\n');
fprintf(1,'1. Output to screen\n');
fprintf(1,'2. Output to text file\n');
fprintf(1,'Please enter 1 or 2.\n');
FLAG = input(' ');
if FLAG == 2
fprintf(1,'Input the file name in the form - drive:\\name.ext\n');
fprintf(1,'for example: A:\\OUTPUT.DTA\n');
NAME = input(' ','s');
OUP = fopen(NAME,'wt');
else
OUP = 1;
end;
fprintf(OUP, 'CROUT METHOD FOR TRIDIAGONAL LINEAR SYSTEMS\n\n');
fprintf(OUP, 'The solution is\n');
for I = 1 : N
fprintf(OUP, ' %12.8f', X(I));
end;
fprintf(OUP, '\n');
if OUP ~= 1
fclose(OUP);
fprintf(1,'Output file %s created successfully \n',NAME);
end;
end;

Algoritmo 10. Factorización LU según el método de Crout

Método de Choleski

Cuando U = LT , así que lii = uii ∀i, 1 ≤ i ≤ n , el algoritmo se denomina método de


Choleski. La factorización de A en el producto de LU exige que la matriz A sea
simétrica y definida positiva.

Algoritmo[Kincaid y Cheney, 1990]: Factorización LU por el método de Choleski


Input n, aij
For k = 1 to k = n
1/ 2
⎛ k −1 ⎞
2 ⎟

lkk ← ⎜akk − ∑ lks ⎟⎟
⎜⎝ s =1 ⎠
For i = k + 1 to i = n

______________________________________________________________________
63 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

⎛ k −1 ⎞
lij ← ⎜aik − ∑ lis uks ⎟⎟ / lkk

⎜⎝ s =1 ⎠⎟
End

End

Output lij
Break
U = LT , luego las entradas verifican uij = l ji

Es importante añadir al inicio del programa los chequeos necesarios, proporcionados


por los teoremas anteriores, a fin de que esté garantizada la existencia y unicidad de la
descomposición LU .

Sólo se muestra la parte de factorización de la matriz A en el producto de LU . El


algoritmo completo para la resolución del sistema debe ser completado con los pasos
indicados al inicio de la sección.

El algoritmo del método de Choleski presenta poca sensibilidad a los errores de


redondeo.
% CHOLESKI'S ALGORITHM 6.6
%
% To factor the positive definite n by n matrix A into LL**T,
% where L is lower triangular.
%
% INPUT: the dimension n; entries A(I,J), 1<=I, J<=n of A.
%
% OUTPUT: the entries L(I,J), 1<=J<=I, 1<=I<=n of L.
%
syms('AA', 'NAME', 'INP', 'OK', 'N', 'I', 'J', 'A', 'NN');
syms('KK', 'S', 'K', 'JJ', 'FLAG', 'OUP', 's');
TRUE = 1;
FALSE = 0;
fprintf(1,'This is Choleski Factorization Method.\n');
fprintf(1,'The array will be input from a text file in the
order:\n');
fprintf(1,'A(1,1), A(1,2), ..., A(1,N), \n');
fprintf(1,'A(2,1), A(2,2), ..., A(2,N),\n');
fprintf(1,'..., A(N,1), A(N,2), ..., A(N,N)\n\n');
fprintf(1,'Place as many entries as desired on each line, but
separate\n');
fprintf(1,'entries with\n');
fprintf(1,'at least one blank.\n\n\n');
fprintf(1,'Has the input file been created? - enter Y or N.\n');
AA = input(' ','s');
if AA == 'Y' | AA == 'y'
fprintf(1,'Input the file name in the form - drive:\\name.ext\n');
fprintf(1,'for example: A:\\DATA.DTA\n');
NAME = input(' ','s');
INP = fopen(NAME,'rt');
OK = FALSE;
while OK == FALSE
fprintf(1,'Input the dimension n - an integer.\n');
N = input(' ');
if N > 0

______________________________________________________________________
64 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

A = zeros(N,N);
for I = 1 : N
for J = 1 : N
A(I,J) = fscanf(INP, '%f',1);
end;
end;
OK = TRUE;
fclose(INP);
else fprintf(1,'The number must be a positive integer.\n');
end;
end;
else
fprintf(1,'The program will end so the input file can be
created.\n');
OK = FALSE;
end;
if OK == TRUE
% STEP 1
A(1,1) = sqrt(A(1,1));
% STEP 2
for J = 2 : N
A(J,1) = A(J,1)/A(1,1);
end;
% STEP 3
NN = N-1;
for I = 2 : NN
% STEP 4
KK = I-1;
S = 0;
for K = 1 : KK
S = S-A(I,K)*A(I,K);
end;
A(I,I) = sqrt(A(I,I)+S);
% STEP 5
JJ = I+1;
for J = JJ : N
S = 0;
KK = I-1;
for K = 1 : KK
S = S - A(J,K)*A(I,K);
end;
A(J,I) = (A(J,I)+S)/A(I,I);
end;
end;
% STEP 6
S = 0;
for K = 1 : NN
S = S-A(N,K)*A(N,K);
end;
A(N,N) = sqrt(A(N,N)+S);
% STEP 7
fprintf(1,'Choice of output method:\n');
fprintf(1,'1. Output to screen\n');
fprintf(1,'2. Output to text file\n');
fprintf(1,'Please enter 1 or 2.\n');
FLAG = input(' ');
if FLAG == 2
fprintf(1,'Input the file name in the form - drive:\\name.ext\n');
fprintf(1,'for example: A:\\OUTPUT.DTA\n');
NAME = input(' ','s');
OUP = fopen(NAME,'wt');

______________________________________________________________________
65 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

else
OUP = 1;
end;
fprintf(OUP, 'CHOLESKI FACTORIZATION\n\n');
fprintf(OUP, 'The matrix L output by rows:\n');
for I = 1 : N
for J = 1 : I
fprintf(OUP, ' %12.8f', A(I,J));
end;
fprintf(OUP, '\n');
end;
if OUP ~= 1
fclose(OUP);
fprintf(1,'Output file %s created successfully \n',NAME);
end;
end;

Algoritmo 11. Factorización LU según el método de Choleski

El número de operaciones para resolver un sistema de orden n mediante el método de


Choleski es

n 3 + 9n 2 + 2n
∑=
×÷ 6
n 3 + 6n 2 − 7n
∑=
+− 2
∑= n

La matriz L y su traspuesta son matrices triangulares, por lo que se resuelven


directamente empleando la sustitución hacia delante o hacia atrás. Por tanto, la
descomposición LLT , y en general la descomposición LU , es especialmente eficiente
sólo cuando tenemos que resolver la misma ecuación matricial repetidas veces para
distintos vectores b . Pero incluso si no es así, el número de operaciones llega a ser del
orden de la mitad de las requeridas en los métodos de eliminación gaussiana, para
órdenes grandes.

Ejercicios
Completar los algoritmos de Crout y Doolittle hasta resolver completamente un SELs
genérico, sígase lo indicado al principio de esta sección (pag. 345 Burden).

Elección de un método para resolver SELs

______________________________________________________________________
66 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

No existe un método universal para resolver SELs. El número de operaciones es un


criterio importante para tomar la decisión, pero la elección depende en gran medida de
la estructura de los SELs. Por ejemplo, un método tipo Crout diseñado a medida para
resolver matrices tridiagonales requiere solamente (5n − 4) multiplicaciones y
n3 n3
divisiones y 3(n − 1) sumas y restas, frente a las multiplicaciones/divisiones y
6 2
sumas/restas de un método de Choleski que no considere la tridiagonalidad de la matriz.
Si de antemano conocemos la estructura de la matriz, esto es, sabemos que las entradas
nulas de la matriz siguen un patrón regular, podemos implementar algoritmos eficientes.
Como vimos en el ejemplo de la motivación, sistemas de este tipo surgen con frecuencia
a la hora de resolver ecuaciones en derivadas parciales discretizadas en diferencias
finitas. En la Tabla 1 se muestran los números de operaciones requeridas para cada
método.

A falta de más información, y para número de ecuaciones elevados n 1 , parece


razonable afirmar que el más rápido, el que menos operaciones necesita, es el método de
Choleski. Para valores de n moderados, otros métodos podrían ser más eficientes.

Método Productos/Divisiones Sumas/Restas/Comparaciones


Eliminación de Gauss n 3 + 3n 2 − n 2n 3 + 3n 2 − 5n
hacia delante (1) 3 6
Eliminación de Gauss n + 3n 2 − n
3
2n + 3n 2 − 5n
3

hacia atrás (1) 3 6


Gauss-Jordan (1) n + 2n 2 − n
3 3
n −n
2 2
Híbrido (1) 2n 3 + 9n 2 − 5n 2n 3 + 3n 2 − 5n
6 6
Cálculo de A−1 con 3
4n − n 8n − 9n 2 + n
3

Gauss (1) 3 6
Cálculo de A−1 con 3n 3 − n 3n 3 − 4n 2 + n
Gauss-Jordan (1) 2 2
Cramer n + (n − 1)(n + 1)! (n + 1)(n !− 1)
Givens (2) ∼ 2n 3
Householder (2) 4n 3

3
3 2
Choleski (3) n + 9n + 2n n 3 + 6n 2 − 7n
+n
6 2
Crout (2) 2n 3

3
Doolittle (2) 2n 3

3
Tabla 1. Órdenes de los algoritmos.

______________________________________________________________________
67 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

3
1. Añaden n(n − 1) comparaciones y ¡Error! No se pueden crear objetos modificando
2
códigos de campo. divisiones por pivotaje de columna escalada.
2. Muestran el total de operaciones, no desglosado.
3. El segundo sumando en Productos/Divisiones es el número de raices cuadradas.

______________________________________________________________________
68 Manuel Díez Minguito
Análisis Numérico: Matrices y Métodos directos de resolución de SEL

Bibliografía
Burden, R.L. and Faires, J.D., 1985. Numerical Analysis. PWS-Kent Publishing
Company, Boston, EE. UU.
Conte, S.D. and Boor, C.d., 1980. Elementary Numerical Analysis: An algorithmic
approach. International Series in Pure and Applied Mathematics. McGraw-Hill,
Nueva York, EE. UU.
Gerald, C.F. and Wheatley, P.O., 2000. Análisis Numérico con Aplicaciones. Pearson
Educación, México D.F.
Kincaid, D. and Cheney, W., 1990. Numerical Analysis. Brooks/Cole Publishing,
Pacific Grove, California, EE. UU.
Lang, S., 1987. Linear Algebra. Undergraduate Texts in Mathematics. Springer, Nueva
York, EE.UU. .
Molina, J.J.Q., 1996. Ecuaciones Diferenciales, Análisis Numérico y Métodos
Matemáticos. Editorial Santa Rita, Granada.
O'Connor, J.L.F., 1993. Tecnicas de Cálculo para Sistemas de Ecuaciones,
Programación Lineal y Programación Entera, Madrid, España.
Ruiz, A., El problema del tapón salino II.

______________________________________________________________________
69 Manuel Díez Minguito

También podría gustarte