Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1.1.1 Introducción
x1
x2
x= .
xn-1
xn
donde las componentes xi son números reales. Puesto que por convención se toman los
Del mismo modo que se ha definido xTy, también se puede definir xyT . Sin embargo, el
significado de este último producto entre vectores es radicalmente distinto. Sean x e y dos
vectores no nulos; la matriz xyT es de Rnxn y se escribe como :
donde A es una matriz de n x n coeficientes reales a i,j con i =1....n, j = 1...n. Por otra parte,
x = A-1.b (1.2)
Sin embargo, a pesar de tener todo el fundamento analítico necesario, calcular mediante
este procedimiento la solución de (1.1) es el peor método posible desde un punto de vista
numérico. Para darse cuenta de ello, basta observar sólo dos de los problemas que
plantea.
En primer lugar, para determinar la unicidad de la solución, debería realizarse el cálculo
del determinante. Sin embargo, este trabajo puede ser bastante tedioso puesto que el de-
terminante puede variar bruscamente con pequeños escalados de la matriz.
Obsérvese, por ejemplo, que si A es de orden n, entonces det(A) = yn.det(A). Para ver
las implicancias que esta igualdad impone bastaría tomar el caso particular de n = 100,
(número de ecuaciones pequeño hoy en día), entonces: det(0.1 A) = 10-100.det(A). Es
decir, dividiendo los coeficientes de A por diez, se reduce el determinante de A en un
(n + 1) (n! - 1) sumas
(n + 1) n! n productos
n divisiones
A pesar de ello, aquí se les asignará el mismo costo computacional a todas las
operaciones elementales puesto que ello permite realizar las comparaciones pertinentes.
n TC
5 4319
10 4 x 108
100 10158
Rango de aplicabilidad: no todos los métodos sirven para cualquier matriz no singular;
además, en función del método y de las propiedades de la matriz, la precisión de los
resultados puede verse afectada dramáticamente. Como se verá más adelante,
pequeños errores de redondeo pueden producir errores en la solución numérica
completamente desproporcionados. No se debe olvidar que debido al enorme número
de operaciones necesarias para la resolución de un sistema de ecuaciones de tamaño
medio a grande, el análisis estándar de propagación de errores de redondeo no es en
absoluto trivial.
Desde un punto de vista general las matrices más usuales en las ciencias aplicadas y en
ingeniería pueden englobarse en dos grandes categorías:
Matrices llenas, pero no muy grandes. Por llenas se entiende que poseen pocos
elementos nulos y por no muy grandes que el número de ecuaciones es de unos
pocos miles a lo sumo. Estas matrices aparecen en problemas estadísticos,
matemáticos, físicos e ingenieriles.
Matrices vacías (esparzas) y muy grandes. En oposición al caso anterior, vacías indica
que hay pocos elementos no nulos y además están situados con una cierta
regularidad. En la mayoría de estos casos el número de ecuaciones supera los miles y
puede llegar en ocasiones a los millones. Estas matrices son comunes en la resolución
de ecuaciones diferenciales de problemas de ingeniería.
Parece lógico que los métodos para resolver sistemas lineales de ecuaciones se adecuen
a las categorías de matrices anteriormente expuestas. En general los métodos directos se
aplican al primer tipo de matrices, mientras que los métodos iterativos se emplean con el
segundo grupo. Es importante observar que no existen reglas absolutas y que todavía en
la actualidad existe cierta controversia sobre los métodos óptimos a aplicar en cada caso.
Observación: En todo lo que sigue se supone que A y b son de coeficientes reales. Si los
elementos de A o b son complejos, aparte de las generalizaciones de los métodos que
aquí se estudian o de los algoritmos específicos para este caso, se puede replantear el
C -D y = c
D C z d
1.2.1 Introducción
Los métodos directos de resolución de sistemas lineales de ecuaciones son aquellos que
permiten obtener la solución después de un número finito de operaciones aritméticas.
Este número de operaciones es, obviamente, función del tamaño de la matriz.
Si los ordenadores pudieran almacenar y operar con todas las cifras de los números
reales, es decir, si emplearan una aritmética exacta, con los métodos directos se
obtendría la solución exacta del sistema en un número finito de pasos.
Puesto que los ordenadores tienen una precisión finita, los errores de redondeo se
propagan y la solución numérica obtenida siempre difiere de la solución exacta.
La cota del error, para una matriz y término independiente dados, se asocia por lo general
al número de operaciones de cada método. Se pretende, por lo tanto, obtener métodos
con el mínimo número de operaciones posible.
Otra particularidad de los métodos directos es que siempre conducen, después de ciertas
operaciones, a la resolución de uno o varios sistemas con solución inmediata. Es decir,
sistemas donde la matriz es diagonal o triangular. Los métodos para sistemas de
resolución inmediata son, de hecho, métodos directos.
Una clasificación habitual de estos procedimientos de resolución es aquella que considera
que los mismos pertenecen a una de las dos categorías siguientes: métodos de
eliminación y métodos de descomposición.
Matriz Diagonal, A = D
Sistemas con solución inmediata Matriz Triangular Superior, A = U
Matriz Triangular Inferior, A = L
Método de Doolittle, A = LU
Método de Crout, A = LU
Métodos de Descomposición Método de Cholesky, A = L.LT
Descomposición generalizada, A=L.D.LT
Método de Thomas (A Tridiagonal)
Métodos de ortogonalización
bi
xi i 1..... n
d ii
Existe solución si todos los términos de la diagonal son no nulos. Además, si se desea
En este caso la solución de la última ecuación es trivial x n = bn/unn. Una vez conocido xn,
la penúltima ecuación (la n - 1) sólo tiene una incógnita que se deduce de forma sencilla.
Conocidos ahora xn y xn-1 se pasa a la ecuación anterior (la n - 2) y se resuelve para su
única incógnita, Xn-2 .
Retrocediendo progresivamente se obtiene el algoritmo de sustitución hacia atrás que se
escribe de la siguiente forma:
x n b n / u nn
n
b u ij.x j
i
ji 1
xi i n 1, n 2,...... 1
u ii
i 1
b lij.x j
i
j1
xi i 2,.........n
lii
a i(,01) (0)
a i(1, j) a i(,0j) mi,1.a1(,0j) a i(,0j) a1, j
a1(,01)
i 2,.....n
j 2......n
a i(,01) (0)
bi(1) bi(0) mi,1.b1(0) bi(0) b1
a1(,01)
donde la segunda columna a partir de la tercera fila sólo contiene términos nulos y los
nuevos coeficientes de la matriz y término independiente se obtienen con las siguientes
ecuaciones:
a i(1, 2) (1)
a i(,2j) a i(1, j) mi, 2 .a (21,)j a i(1, j) a 2, j
a (21,)2
i 3,.....n
j 3......n
a i(1, 2) (1)
bi( 2) bi(1) mi,2 .b (21) bi(1) b2
a (21,)2
( k 1)
( k 1) ( k 1) ( k 1) a i, k
(k )
a i, j a i, j mi, k .a k , j a i, j a ( k 1)
( k 1) k , j
a k ,k
i k 1,.....n
j k 1......n
a i(,kk1) ( k 1)
bi( k ) bi( k 1) mi, k .b (kk 1) bi( k 1) bk
a (kk, k1)
Obsérvese que al pasar del (k-1)-ésimo al k-ésimo sistema es necesario realizar las
siguientes operaciones:
(n - k)(n - k + 1) sumas
(n - k)(n - k + 1) productos
n-k divisiones
a i(,kk1) (k 1)
a i(,kj) a i(,kj1) mi, k .a (kk, j1) a i(,kj1) a k, j
a (kk, k1)
k 1,....., n 1
i k 1,.....n
j k 1......n
(k ) ( k 1) ( k 1) ( k 1)
a i(,kk1) ( k 1)
bi bi mi, k .b k bi bk
a (kk,k1)
donde los términos de superíndice (0) son iguales a los originales del sistema de
ecuaciones. El sistema triangular obtenido es de resolución inmediata (Véase el apartado
1.2..2.2). El número de operaciones necesarias para realizar esta primera fase de
eliminación ha sido de :
n 1
n ( n 2 1)
(n k )(n k 1) 3
sumas
k 1
n 1
n ( n 2 1)
(n k )(n k 1) 3
productos
k 1
n 1
n ( n 1)
(n k ) 2
divisiones
k 1
n TG
5 115
10 805
100 681 550
1000 6.68 x 108
Como ya se ha comentado, se ha supuesto a lo largo de todo este análisis que los pivotes
eran distintos de cero. Si durante el proceso de eliminación se obtiene un pivote nulo, por
ejemplo el ak,k(k-1), se debe buscar en la parte inferior de la columna k-ésima un coeficiente
no nulo, es decir de entre los a i,k(k-1) i=k+1,..., n se toma uno que sea distinto de cero. Se
sustituye entonces la fila k (y su término independiente) por la fila i (y su término
independiente) que se haya escogido. Si dicho coeficiente no nulo no existiera, la matriz
sería singular.
Esta permutación de filas no sólo tiene interés cuando el pivote es exactamente cero. Es
obvio que valores pequeños del pivote pueden producir grandes errores de redondeo, ya
que siempre se divide por el valor del pivote.
Por consiguiente, para reducir los errores de redondeo conviene escoger el pivote máximo
en valor absoluto. Para ello, hay dos técnicas posibles:
Observación: Si la matriz A es simétrica, las matrices llenas de orden n - k sobre las que
se aplica sucesivamente el algoritmo sólo permanecen simétricas si no se realiza ninguna
permutación de filas o columnas. La misma observación es válida si la matriz A tiene una
estructura que permite el almacenamiento en banda o en perfil.
En lo que sigue se utilizará como herramienta para el desarrollo básico de los algoritmos
su escritura en un metalenguaje que permita poner en evidencia las estructuras que
componen el programa y la organización de sus secuencias. Tal metodología es una de
las tantas que pueden utilizarse (diagramas de llaves, diagramas de flujo.. etc) y como tal
debe servir para facilitar la construcción de un programa armónico, con una estructura
sencilla de interpretar y revisar, en el lenguaje que se elija o se disponga.
xn = bn/ann
Repetir i=n-1,.... 1
s=0
Repetir j=i+1,... n
s = s + aij.xj
Fin j
xi = (bi-s)/aii
Fin i
CAPITULO 1 – SISTEMAS DE ECUACIONES LINEALES
CATEDRA METODOS COMPUTACIONALES 2 Pág.17
Podrá reconocerse en su seguimiento, una primer parte a partir de la cual se obtiene la
triangulación de la matriz coeficientes y una segunda en la cual se realiza la sustitución
hacia atrás.
+2 -2 +1 +1 0 X1 +1
-2 +4 -4 +1 +1 X2 +2
+1 -4 +6 -4 1 X3 +2
+1 +1 -4 +4 -2 X4 = +2
0 +1 +1 -2 +2 X5 +1
Paso 1
m21 = -2/2 = -1 m31 = +1/2 m41 = +1/2
a21=-2 – (-1).2 =0 a31=+1 – 0.5*2 =0 a41=+1 – 0.5*2 =0
a22 = +4 – (-1).(-2)= +2 a32 = -4 – 0.5.(-2)= -3 a42 = +1 – 0.5.(-2)= +2
a23 = -4 – (-1).(+1)= -3 a33 = +6 – 0.5.(+1)= +5.5 a43 = -4 – 0.5.(+1)= -4.5
a24 = +1 – (-1).(+1)= +2 a34 = -4 – 0.5.(+1)= -4.5 a44 = +4 – 0.5.(+1)= +3.5
a25 = +1 – (-1).(0)= +1 a35 = +1 – 0.5.(0)= +1 a45 = -2 – 0.5.(0)= -2
b2 = +2 – (-1).(+1) = +3 b3 = +2 – 0.5.(+1) = +1.5 b4 = +2 – 0.5.(+1) = +1.5
+2 -2 +1 +1 0 +1
0 +2 -3 +2 +1 +3
0 -3 +5.5 -4.5 +1 +1.5
0 +2 -4.5 +3.5 -2 +1.5
0 +1 +1 -2 +2 +1
Notar que la submatriz punteada en rojo sigue siendo simétrica por lo cual, los
coeficientes sombreados en amarillo en la tabla de procedimiento podrían no haberse
calculado, y asumido directamente los términos simétricos determinados con
anterioridad. Este punto constituye la diferencia fundamental que permite optimizar (y
de hecho, reducir) las operaciones necesarias para llegar a triangularizar la matriz de
coeficientes.
+2 -2 +1 +1 0 +1
0 +2 -3 +2 +1 +3
0 0 +1 -1.5 +2.5 +6
0 0 -1.5 +1.5 -3 -1.5
0 0 +2.5 -3 +1.5 -0.5
Paso 3
m43 = -1.5/1 = -1.5 m53 = +2.5/1 = +2.5
a43=-1.5 – (-1.5).(1) =0 a53=+2.5 – (2.5).(1) =0
a44= +1.5 – (-1.5).(-1.5) = -0.75 a54= a45 = +0.75
a45 = -3– (-1.5).(+2.5)= +0.75 a55 = +1.5– (2.5).(+2.5)= -4.75
b4 = -1.5 – (-1.5).(+6) = +7.5 b5 = -0.5 – (2.5).(+6) = -15.5
+2 -2 +1 +1 0 +1
0 +2 -3 +2 +1 +3
0 0 +1 -1.5 +2.5 +6
0 0 0 -0.75 +0.75 +7.5
0 0 0 +0.75 -4.75 -15.5
Paso 4
m54 = 0.75/(-0.75) = -1
a54=+0.75 – (-1).(-0.75) =0
a55= -4.75 – (-1).(+0.75) = -4
b5 = -15.5 – (-1).(7.5) = -8
+2 -2 +1 +1 0 +1
0 +2 -3 +2 +1 +3
0 0 +1 -1.5 +2.5 +6
0 0 0 -0.75 +0.75 +7.5
0 0 0 0 -4 -8
xn = bn/ann
Repetir i=n-1,.... 1
s=0
Repetir j=i+1,... n
s = s + aij.xj
Fin j
xi = (bi-s)/aii
Fin i
En donde se han destacado en color rojo las secuencias modificadas respecto del
algoritmo de Gauss estándar. Se hace notar que en ningún momento se opera sobre
coeficientes ubicados por debajo de la diagonal, situación que hace plantear si es
realmente necesario almacenar inicialmente esos coeficientes.
Como se indicó anteriormente, para pasar del (k-1)esimo al K-esimo sistema es preciso
realizar:
(n - k)(n - k + 1) sumas
(n - k)(n - k + 1) productos
n-k divisiones
sin embargo, para este caso particular, puede advertirse que, en función de las
condiciones de simetría al operar sobre cada una de las n-k últimas ecuaciones,
solamente en la primera (la k+1), se realizan (n-k+1) operaciones, en el resto , se continúa
con la siguiente secuencia:
lo cual, implica que al pasar del (k-1) esimo sistema al K-esimo , al utilizar las propiedades
de simetría de la matriz transformada se realizan:
60
% Reducción de operaciones
50
40
30
20
10
0
0 20 40 60 80 100 120 140 160 180 200
nº de ecuaciones
Un caso de interés particular son las matrices denominadas “bandeadas”. Como se verá
más adelante, tales matrices son muy comunes en problemas de ingeniería en los cuales
se realiza el planteo numérico de las ecuaciones diferenciales de gobierno de un
problema físico determinado.
Tales matrices se caracterizan por tener un número muy importante de elementos nulos
en relación al número total de coeficientes de la matriz (n 2) y porque además, esos
elementos no nulos se ubican a lo ancho de una “banda” paralela a la diagonal de la
matriz.
Se denomina precisamente “ancho de banda” al número de columnas distribuidas en
forma simétrica a la diagonal, por fuera de la cual, los coeficientes de la matriz son nulos.
Numero de operaciones
A continuación se presenta una variante del método de Gauss que conviene considerar.
En este procedimiento, además de sustraer la fila k multiplicada por mik = aik(k-1)/akk(k-1) a
las filas posteriores, también se sustrae a las anteriores. Es práctica común también en
este caso dividir la fila k por el término diagonal a fin de que este quede unitario.
El procedimiento general se ilustra con el siguiente ejemplo:
1 -1 1 X1 -4
5 -4 3 X2 = -12
2 1 1 X3 11
Paso 1
m21= a21/a11 =5 m31 = a31/a11 = +2
a21 = 5- 5.1 = 0 a31 = 2- 2.(1) = 0
a22 = -4 – 5.(-1) = +1 a32 = 1 – 2.(-1) = +3
a23 = 3 – 5.1 = -2 a33 = 1 – 2 (1) = -1
b2= -12 –5..(-4) = 8 b3= 11 –2..(-4) = 19
1 -1 1 X1 -4
0 1 -2 X2 = 8
0 3 -1 X3 19
Paso 2
m12= a12/a22 =-1 m32 = a32/a22 = +3
a11 = 1- (-1).0 = 1
a12 = -1- (-1).1 = 0 a32 = 3 – 3.(1) = 0
a13 = 1 – (-1).(-2) = -1 a33 = -1 – 3 (-2) = 5
b1= -4 –(-1).(8) = 4 b3= 19 –3..(8) = -5
1 0 -1 X1 4
0 1 -2 X2 = 8
0 0 5 X3 -5
Paso 3:
Dividir la 3era ecuación por a33
1 0 -1 X1 4
0 1 -2 X2 = 8
0 0 1 X3 -1
CAPITULO 1 – SISTEMAS DE ECUACIONES LINEALES
CATEDRA METODOS COMPUTACIONALES 2 Pág.25
m13= a13/a33 =-1 m23 = a23/a33 = -2
a11 = 1- (-1).0 = 1
a12 = -0- (-1).0 = 0 a23 = -2 – (-2).(1) = 0
a13 = -1 – (-1).(1) = 0
b1= 4 –(-1).(-1) = 3 b2= 8 –(-2).(-1) = 6
1 0 0 X1 3
0 1 0 X2 = 6
0 0 1 X3 -1
Algoritmo de Gauss-Jordan
Repetir k=1,... n
PIV = akk
Repetir j=k,... n
ak,j = akj / PIV
Fin j
bk = bk/PIV
Repetir i=1,... n
Si ik
m = aik
Repetir j=k+1,..., n
aij = aij – m. akj
Fin j
bi = bi – m.bk
Fin Si
Fin i
Fin k
Paso 2
m32= a32/a22 = -0.7957
a32 = 111.8-(m32x(-140.5))= 0
a33 = -170.2-(m32x(223.6))= -170.2+177.9=7.7
b3= -257.1-(m32x350.1)=-257.1+278.6=21.5
X3=+2.792 (Er=2%)
X2= +(350.1 –223.6x2.792)/(-140.5) =+(350.1 –624.3)/(-140.5) = +1.952 (Er=4%)
X1 = (-7.70 – 3.01x1.952-(-4.88x2.792))/0.10 = (-7.7-5.876+13.62)/0.1 =0.44 (Er=9%)
Los errores indicados resultan excesivos para un sistema de ecuaciones de muy reducido
tamaño como el considerado. Debe notarse, que esos errores crecen en la medida que
algún término diagonal resulte de un orden de magnitud notoriamente diferente al del
Paso 1
m21= a21/a11 =463 m31 = a31/a11 = -339
a21 = 4.63- 463x0.01 = 0 a31 = -3.39-(-339x0.01) = 0
a22=-1.06-3.01x463 = -1.06-1394=-1395 a32 = 9.81-(-339x3.01) = 1030
a23 =-2.27-(-4.88x463)=-2.27+2259=2257 a33 = -4.78-(-339x(-4.88)) = -1659
b2= -6.36-(-7.7x463)=-6.36+3565=3559 b3= 3.95-(-339x(-7.7)) = -2606
Paso 2
m32= a32/a22 = -0.7384
a32 = 1030-(m32x(-1395))= 0
a33 = -1659-(m32x(2257))= -1659+1667=8
b3= -2606-(m32x3559)=-2606+2628=22
X3=+2.75 (Er=1%)
X2= +(3559 –2257x2.75)/(-1395) =+(3559 –6207)/(-1395) = +1.898 (Er=2%)
X1 = (-7.70 – 3.01x1.898-(-4.88x2.75))/0.01 = (-7.7-5.713+13.42)/0.01 =0.7 (Er=78%)
En todos los casos, los errores obtenidos respecto de la solución exacta resultan
inferiores al 0.1 %.
Supongamos que la ecuación (1) se puede expresar como un sistema triangular superior,
esto es:
Podrá reconocerse fácilmente que la expresión anterior coincide con el estado final de la
etapa de eliminación seguida en el algoritmo de Gauss, la cual, puede resumirse en:
U.x – d = 0 (4)
Ahora bien, supóngase por un momento la existencia de una matriz triangular inferior con
coeficientes iguales a 1 sobre su diagonal, esto es:
1 0 0
L= l21 1 0 (5)
l31 l32 1
la cual, supóngase también, tiene la propiedad que al premultiplicarla por la ecuación (4)
su resultado es (1), es decir:
L.U = A (7)
L.d = b (8)
Esta posibilidad resulta inmediata a partir de la propia forma de la matriz U, que, como se
indicara con anterioridad, puede escribirse a U de la siguiente forma:
Paso 1
m21= a21/a11 m31 = a31/a11 a11 a12 a13
a’21= a21 – m21*a11 = 0 a’31= a31 – m31*a11 = 0 0 a’22 a’23
a’22= a22 – m21*a12 a’32= a32 – m31*a12 0 a’32 a’33
a’23= a23 – m21*a13 a’33= a33 – m31*a13
Paso 2
m’32= a’32/a’22 a11 a12 a13
a”32= a’32 – m’32*a’22 = 0 0 a’22 a’23
a”33= a’33 – m’32*a’23 0 0 a”33
m’21
m’31 m”32
En la misma se almacenan todos los “pivote” de cada una de las transformaciones de fila
realizadas. Un punto fácilmente verificable es el hecho que, la matriz siguiente formada a
partir de la “tabla de memoria”,
1 0 0
L= m’21 1 0
m’31 m”32 1
al premultiplicar a la matriz U dada por (9), genera como resultado la matriz A original, es
decir:
L.U = A
a) Fase de Descomposición
Paso 1
m21= 1/3 = 0.333 m31 = 3/3 = 1 3 -1 -2
a’21= 1 – 0.333*3 = 0 a’31= 3 – 1*3 = 0 0 7.33 -2.33
a’22= 7 – 0.333*(-1) = +7.333 a’32= -2 – 1*(-1)= -1 0 -1 12
a’23= -3 – 0.333*(-2)= -2.333 a’33= 10 – 1*(-2)= 12
Paso 2
m’32= -1/7.33 = -0.136 3 -1 -2
a”32= -1 +0.136*7.33 = 0 0 7.33 -2.33
a”33= 12 + 0.136*(-2.33) 0 0 11.68
1 0 0 3 -1 -2
L= 0.333 1 0 ; U= 0 7.33 -2.33
1 -0.136 1 0 0 11.68
b) Fase de Sustitución
d1 = b1/L11 = +7
d2 = (b2-L21*d1)/L22 = (-19-0.333*7)/1 = -21.33
d3 = (b3-L31*d1-L32*d2)/L33 = (+4-1*7 +0.136*(-21.33))/1 =-5.90
Descomposición LU
Repetir k=1,... n-1
Repetir i=k+1,... n
aik = aik/akk
Repetir j=k+1,..., n
aij = aij – aik. akj
Fin j
Fin i
Fin k
Sustitución hacia adelante
d1 = b1
Repetir i=2,.... n
s=0
Repetir j=1,... i-1
s = s + aij.dj
Fin j
di = bi-s
Fin i
Una segunda optimización puede realizarse realmacenando los coeficientes del vector d
en el proceso de sustitución hacia adelante en el mismo espacio que el vector b, cuyos
coeficientes ya no resulta necesario almacenar en esa etapa del cálculo.
Finalmente, un punto de interés reside en la determinación del número de operaciones
realizadas por el algoritmo anteriormente desarrollado. Como puede verificarse, el número
total de operaciones a realizar en el proceso de descomposición y sustitución es idéntico
a aquel realizado en el algoritmo de eliminación de Gauss. Evidentemente, la gran ventaja
de LU surge en el caso de tener que resolver en forma reiterada el mismo sistema pero
para términos independientes diferentes. En este caso, cada nuevo sistema requiere
realizar solamente un orden de n2 operaciones.
a1,1 a1,2
A 2
a 2,1 a 2, 2
A c k 1
k
A k 1 T
f a k 1.k 1
k 1
en donde:
a1, k 1 a k 1,1
a a
2, k 1 k 1,2
c k 1 : ; f k 1 :
: :
a k , k 1 a k 1, k
A k c k 1 L k 0 U u k 1
k (1)
fT a k 1.k 1 l Tk 1 l k 1.k 1 0 T 1
k 1
en donde:
u1, k 1 l k 1,1 0
u l 0
2, k 1 k 1,2
u k 1 : ; l k 1 : ; 0 :
: : :
u k , k 1 l k 1, k 0
Finalmente, de (1):
L k .u k 1 c k 1
Es importante notar que en las ecuaciones anteriores tanto u[k+1] como l[k+1] se obtienen
mediante sustitución hacia adelante ya que tanto L[k] como U[k]T son matrices triangulares
inferiores.
3 -1 -2 x1 +7
1 7 -3 x2 = -19
A.x = b
3 -2 10 x3 +4
Paso 1: k=1
L1 0 U 1 u 2
L 2 T ; U 2
l 2 LINEALES
CAPITULO 1 – SISTEMAS DE ECUACIONES l 2,2 0 1
CATEDRA METODOS COMPUTACIONALES 2 Pág.39
A1 c 2 2 1
A 2 T
f 2 a 2,2 1 7
L[1] = A[1] = a11 = 3
U[1] = u11 = 1
U T .l
1 2
f 2 1.l 2 1 l 2 1
3 0 1 0.33
L 2 ; U 2
1 7.33 0 1
Paso 2: k=2
3 0 0 1 0.33 3 1 2
L 2 0 1 7.33 0 u 3 c 3 1
0 1 A 2 7 3
L 3 T ; U 3 ; A 3 T
l l3,3 lT 1 f3 a3,3
3 l3,3 0 0 3 2 10
3
3 0 2 0.67
L 2 .u 3 c 3 1 .u 3 u 3
7.33
3
0.32
1 0 3 3
U T2 .l 3 f 3 0.33 l 3 l 3
1 2
1
0.67
l3,3 a3,3 lT3 .u 3 10 3 1. 11 .69
0.32
3 0 0 1 0.33 0.67
L 3 L 1 7.33 0
; U 3 U 0 1 0.32
3 1 11 .69 0 0 1
L[K]
U[K]
A[K]
i ui,k+1 ai,k+1
x =
u[k+1] c[k+1]
L U A
i
L[K]
U[K]
A[K]
x =
l[k+1] f[k+1]
lk+1,i ak+1,i
L U A
Los elementos a calcular, sombreados en color negro, son obtenidos a partir de los
aquellos valores ubicados en las zonas coloreadas en gris.
De ello se deduce que para evaluar un elemento u i,k+1 de U, únicamente es necesario
conocer el elemento correspondiente a i,k+1 de A, los elementos de U que se encuentran
En síntesis, el método de Crout está diseñado para reducir las necesidades de memoria
almacenando las dos matrices triangulares en las mismas posiciones de memoria que
ocupaba inicialmente la matriz de coeficientes A.
3 -1 -2 x1 +7
A.x = b 1 7 -3 x2 = -19
3 -2 10 x3 +4
U[1] = u11 = 1
l 2, 2 a 2, 2 lT2 .u 2 7 1.( 1 ) 7.33
3
3 -1/3 -2
 = 1 7.33 -3
3 -2 10
Paso 2: k=2
3 0 2 0.67
L 2 .u 3 c 3 1 .u 3 u 3 (a)
7.33 3 0.32
1 0 3 3
U T2 .l 3 f 3 0.33 1l 3 2 l 3 (b)
1
0.67
l3,3 a3,3 lT3 .u 3 10 3 1. 11 .69 (c)
0.32
(a) Nótese que en el cálculo de u[3], todos los coeficientes no nulos necesarios para su
determinación -tanto de L[2] como de c[3]- se encuentran disponibles sobre Â. Los
coeficientes de u[3] calculados se almacenan sobre la matriz  en similar posición a la
que ocuparían en la matriz U:
3 -1/3 -0.67
 = 1 7.33 -0.32
3 -2 10
(b) Para el cálculo de l[3] los coeficientes fuera de la diagonal no nulos de U (en este caso
–1/3) se encuentra disponible sobre Â. El coeficiente que interviene en los cálculos
corresponde a u1,2 el cual se encuentra almacenado en Â1,2. Los coeficientes de l[3] así
determinados se almacenan sobre  en idéntica posición a la que ocuparían en la
matriz L:
3 -1/3 -0.67
 = 1 7.33 -0.32
3 -1 10
(c) Finalmente, el cálculo de l3,3 se realiza en base al coeficiente a3,3 (=10) y los valores de
3 -1/3 -0.67
 = 1 7.33 -0.32
3 -1 11.69
A k f k 1 L k 0 LT l k 1
k (3)
fT a k 1.k 1 l Tk 1 l k 1.k 1 0 T l k 1.k 1
k 1
descomposición de orden k, A[k]= L[k].L[k]T, de la cual puede obtenerse la descomposición
para el menor de orden k+1:
Nótese que, por ser A una matriz simétrica, los vectores c[k+1] y f[k+1] definidos en las
ecuaciones (1) coinciden.
De (3) se obtienen las ecuaciones necesarias para la descomposición del menor principal
A[k+1]:
L k .l k 1 f k 1
Debe notarse que el cálculo de l[k+1] indicado en la primera de las ecuaciones anteriores
implica una sustitución hacia adelante, considerando las características de matriz
triangular inferior de L.
Ejemplo
2 -1 0 x1 5
-1 2 -1 x2 = 0
0 -1 2 x3 0
2 -1 0
A[3] = -1 2 -1 |A[3]|=4 >0
0 -1 2
k=1
A1 f 2 2 1
L1 a11 2 1.414 A 2 T
f a2, 2 1 2
2
1
L1 .l 2 1 l 2 0.707
1.414
1.414 0
l2, 2 a2,2 lT2 .l 2 2 ( 0.707) 2 1.225 L 2
0.707 1.225
k=2
1.414 0 0 0
L 2 .l 3 f 3 0.707 .l 3 l 3
1.225 1 0.816
0
l3,3 a3,3 lT3 .l 3 2 0 0.816. 1.155
0.816
2 1 0
A 2 f 3 1 2 1.414 0 0
1
A 3 T
f
L 3 0.707 1.225 0
a3,3 0 1
3 2
0 0.816 1.155
Es posible demostrar que el algoritmo detallado puede utilizarse para cualquier matriz
simétrica y definida positiva.
Sin embargo imagínese por un instante la necesidad de almacenar una matriz simétrica,
es evidente que solo resultaría imprescindible asignar espacios de memoria para la matriz
triangular superior (o inferior, es indistinto). Supóngase, por ejemplo, que se trata de una
matriz cuadrada de orden 100; en este caso al asignar un espacio de memoria para la
matriz (paso imprescindible antes de su utilización en cualquier lenguaje) se reservará un
arreglo de 100 filas y 100 columnas, del cual solo serán utilizados aquellos
correspondientes a la diagonal y a los elementos ubicados encima –o debajo- de ella.
Sobre este punto en particular existe un considerable desarrollo dentro de las técnicas de
cálculo numérico orientados a determinados tipos especiales de matrices, característicos
de algunos problemas de la ingeniería. En los puntos siguientes se tratarán algunas de
estas técnicas las cuales, claro está, son solo un pequeño segmento del numeroso campo
existente sobre este particular.
De esta forma, los coeficientes de la matriz serán ubicados dentro del vector en base al
siguiente ordenamiento:
CT = {c1, c2, ...cm, cm+1,cm+2.... cm+m, c2m+1,c2m+2...c3m, ......, c(n-1)m+1, c(n-1)m+2 ... cn.m} =
k = (j-i) * m + i
f = {f1, f2, ..... fn, fn+1, fn+2...., f2n, f2n+1, f2n+2...., f3n..........f(m-1)*n+1, f(m-1)*n+2,..... fm*n} =
= {a1,1, a1,2,... a1,n, a2,1, a2,2, ... a2,n, a3,1, a3,2,....,a3,n ........am,1, am,2,.... am,n}
Una vez almacenada una matriz sobre un vector en base al ordenamiento comentado, es
necesario establecer las relaciones de transformación que permitan ubicar a un elemento
cualquiera a(i,j) de la matriz dentro del vector f. Es fácil comprobar que esa relación viene
dada por la expresión:
k = (i-1) * n + j
En una matriz simétrica resulta evidente que solo resulta imprescindible almacenar
aquellos elementos que se ubican en la diagonal y por sobre –triangular superior- o por
debajo –triangular inferior- de la misma. Una situación similar presentan las matrices
triangulares (superiores o inferiores) en donde los coeficientes por debajo o por encima de
la diagonal resultan nulos y por lo tanto no resulta necesario almacenarlos en la memoria.
A fin de retener solamente aquellos coeficientes necesarios para el cálculo, una
alternativa es disponer en un arreglo unidimensional -vector- cada una de las columnas de
la matriz pero limitando su extensión a los elementos ubicados entre la primer fila y la
diagonal. Se estará almacenando así una matriz triangular superior. En caso de que se
requiera almacenar una matriz triangular inferior –o la mitad inferior de una matriz
simétrica- las transformaciones son similares y pueden encararse sin dificultad por lo cual
no serán comentadas aquí en forma explícita.
A modo de ejemplo, puede suponerse el caso de una matriz triangular superior –el caso
de una matriz simétrica es enteramente equivalente-:
i j
a11 a12 a 1i a1j a 1n
0 a22 a 2i a2j a 2n
i 0 aii aij ain
A=
j 0 ajj ajn
0 0 0 0 ann
CT = {a11, a12, a22, a13, a23, a33, ......, a1n, a2n, .... ann}
xn = bn/ann
Repetir i=n-1,.... 1
s=0
Repetir j=i+1,... n
s = s + C(f[i,j]).xj
Fin j
xi = (bi-s)/C(f[i,i])
Fin i
u
a11 a12 a1,u+1
a21 a22
g
ag+1,1
A=
an-u,n
u
an-1,n-1 an-1,n
an,n-g an,n-1 ann
g
en la cual:
g= semiancho inferior a(i,j)=0 si i>j+g
u= semiancho superior a(i,j)=0 si j>i+u
Como se observa en el esquema anterior, la matriz R posee el mismo número de filas que
A y un número de columnas igual al ancho de banda, esto es 1+u+g. En el caso particular
(y frecuente) que u=g, los elementos diagonales de la matriz de coeficientes se
almacenarán sobre la columna central de R.
Evidentemente, este esquema de almacenamiento presentará ventajas sobre aquel que
maneja directamente la matriz como llena, en el caso que n 2>>n(1+u+g) situación que es
frecuente en los sistemas reales que responden a la solución numérica de ecuaciones
diferenciales de problemas de ingeniería en donde n adquiere dimensiones de miles o
superior, y el ancho de banda total (1+u+g) no supera el 10 o 20% de n.
Establecida la forma en que se realizará el almacenamiento quedan por establecer las
relaciones de transformación que permitan, dado un elemento genérico a(i,j) de la matriz
de coeficientes del sistema, ubicarlo dentro de la tabla de almacenamiento diseñada.
Es sencillo verificar que tales relaciones de transformación quedan establecidas por las
siguientes expresiones:
= i
= 1+g+(j-i)
las cuales permiten obtener el coeficiente R( en donde se aloja el término A(i,j) de la
matriz original.
Una instancia posterior es disponer que la matriz R se almacene por filas o columnas
dentro de un vector, disposición muy frecuente cuando se trabaja en lenguajes como
Fortran. Para ello, no hay más que aplicar las reglas de transformación detalladas al
k = (-1).n+ = [g+(j-i)].n +i
la cual permite obtener la posición “k” del vector V en donde se aloja el coeficiente A(i,j)
de la matriz original.
Se hace notar que al almacenar la matriz R por columnas, lo que se está realizando en
realidad es un almacenamiento de A por diagonales, ya que cada columna de R se
corresponde con una diagonal de la matriz original A. Esta disposición es particularmente
útil cuando los coeficientes de la matriz original son generados por un programa que
incluye también en su desarrollo la solución del sistema de ecuaciones.
Ejemplo:
Supóngase que se desea encontrar la solución del sistema de ecuaciones A.x = b donde
A es una matriz de orden n, simétrica, en banda y cuyos coeficientes resultan:
2
5 -4 1
-4 6 -4 1
2 1 -4 6 -4 1
1 -4 6 -4 1
A=
1 -4 6 -4
1 -4 5
2
5 -4 1
6 -4 1
6 -4 1
R=
6 -4 1
6 -4
5
1.4.1 Introducción
Llamamos x(1)
i a la primera aproximación de xi , x(2)
i a la segunda aproximación, y así
sucesivamente, y asumimos que n de ellas han sido calculadas, es decir que conocemos
x(n)
i para i = 1 a 4. Entonces el método de Jacobi expresa los (n+1)-ésimos valores
iterativos exclusivamente en función de los n-ésimos valores iterativos. La iteración
correspondiente al sistema de ecuaciones antes descripto es:
x1( n 1 )
1
a11
b1 a12 x2( n ) a13 x3( n ) a14 x4( n )
x2( n 1 )
a
1
b a2
(n) (n) (n)
21 x1 1 a23 x3 a24 x4
22
b a
1
x3( n 1 ) 3
(n) (n) (n)
31 x1 a32 x2 a34 x4
a 33
b a
1
x4( n 1 ) 4
(n) (n) (n)
41 x1 a42 x2 a43 x3
a 44
1 i 1 m
xi( n 1 ) bi aij x(j n ) aij x(j n ) con i 1 a m
aii
j 1 j i 1
Ingresar s
Repetir i = 1,....n
x1i = valores iniciales
Fin repetir
Repetir i = 1,....n
x1i = x2i
Fin repetir
Fin repetir mientras
x1( n 1 )
1
a11
b1 a12 x2( n ) a13 x3( n ) a14 x4( n )
b a
1
x2( n 1 ) 2
( n 1 )
21 x1 1
a23 x3( n ) a24 x4( n )
a22
x3( n 1 )
a
1
b a
3
( n 1 )
31 x1 a32 x2( n 1 ) a34 x4( n )
33
b a
1
x4( n 1 ) 4
( n 1 )
41 x1 a42 x2( n 1 ) a43 x3( n 1 )
a44
1 i 1 m
xi( n 1 ) bi aij x(j n 1 ) aij x(j n ) con i 1 a m
aii
j 1 j i 1
Ingresar s
Ejemplo:
Resolviendo esta ecuación por algún método que se vera mas adelante se llega a un
sistema de ecuaciones algebraicas lineales. Las incógnitas de dicho sistema de
ecuaciones son valores discretos de la función en determinados puntos del dominio. En
este caso se tomaron 9 puntos interiores equidistantes en el intervalo 0 < x < 1. Entonces,
en principio, las incógnitas del sistema de ecuaciones serían 9. Por cuestiones de simetría
de la función solución respecto del punto central del intervalo en el sistema de ecuaciones
aparecerán solo 5 incógnitas que denotaremos por u i con i = 1 a 5.
Planteada la situación de esta manera el sistema resultante es:
4 u1 u2 1
u1 4 u2 u3 2
u2 4 u3 u4 2
u3 4 u4 u5 2
u4 2 u5 1
1
u1 u2 1
4
1
u2 u1 u3 2
4
1
u3 u2 u4 2
4
1
u4 u3 u5 2
4
1
u2 u4 1
2
ui = 1 para i = 1 a 5.
u1( n 1 )
1
4
u (n)
2 1
u2( n 1 )
1
4
u
(n) (n)
1 u3 2
u3( n 1 )
1
4
u (n) (n)
2 u4 2
u4( n 1 )
1
4
u (n) (n)
3 u5 2
u5( n 1 )
1
2
u (n)
4 1
u1( 1 )
1
4
u (0 )
2 1 41 1 1 0.5
u2( 1 )
1
4
u
(0 )
1 u 2 1 1 2 1
(0 )
3
1
4
u u 2 1 1 2 1
1 1
u3( 1 ) (0 )
2
(0 )
4
4 4
u4( 1 )
1
4
u (0 )
3 u 2 1 1 2 1
(0 )
5
1
4
u5( 1 )
1
2
u (0 )
4 1 1 1 1
1
2
u1( 3 )
1
4
u (2)
2 1 41 0.875 1 0.46875
u2( 3 )
1
4
u(2)
1 u (2)
3 2 0.5 1 2 0.875
4
1
u 2 0.875 1 2 0.96875
1 1
u3( 3 ) (2)
2 u (2)
4
4 4
u4( 3 )
1
4
u (2)
3 u (2)
5 2 1 1 2 1
4
1
u5( 3 )
1
2
u (2)
4 1 1 1 1
1
2
MÉTODO DE JACOBI
4 u1 u 2 0.8564
u1 4 u 2 u 3 1.4254
u 2 4 u 3 u 4 1.8454
u 3 4 u 4 u 5 1.9558
u 4 2 u 5 0.9890
u1( n 1 )
1
4
u (n)
2 1
u2( n 1 )
1
4
u
( n 1 )
1 u3( n ) 2
u 2
1
u3( n 1 ) ( n 1 )
2 u4( n )
4
u 2
1
u4( n 1 ) ( n 1 )
3 u5( n )
4
u5( n 1 )
1
2
u ( n 1 )
4 1
u(21 )
1
4
u (1) (0 ) 1
4
1 u3 2 0.5 1 2 0.875
u3( 1 )
1
4
u (1) (0 ) 1
4
2 u4 2 0.875 1 2 0.96875
u4( 1 )
1
4
u (1) (0 ) 1
4
3 u5 2 0.96875 1 2 0.99219
u5( 1 )
1
2
u (1) 1
2
4 1 0.99219 1 0.99609
u1( 2 )
1
4
u (1)
2
1
1
4
0.875 1 0.46875
u(22 )
1
4
u (2) (1)
4
1
1 u3 2 0.46875 0.96875 2 0.85938
u3( 2 )
1
4
u (2) (1)
4
1
2 u4 2 0.85938 0.99219 2 0.96289
u4( 2 )
1
4
u (2) (1)
4
1
3 u5 2 0.96289 0.99609 2 0.98975
u5( 2 )
1
2
u (2) 1
2
4 1 0.98975 1 0.99488
u1( 3 )
1
4
u (2)
2
1
4
0.85938 1 0.46485
1
u(23 )
1
4
u
(3) (2) 1
4
1 u3 2 0.46485 0.96289 2 0.85694
u3( 3 )
1
4
u
(3) (2) 1
4
2 u4 2 0.85694 0.98975 2 0.96167
u4( 3 )
1
4
u
(3) (2) 1
4
3 u5 2 0.96167 0.99488 2 0.98914
u5( 3 )
1
2
u
(3) 1
2
4 1 0.98914 1 0.99457
4 u1 u2 0.8564
u1 4 u2 u3 1.4254
u2 4 u3 u4 1.8454
u3 4 u4 u5 1.9558
u4 2 u5 .9890