Sie sind auf Seite 1von 15

Tema 3: Mtodos numricos para la resolucin de sistemas lineales compatibles y determinados

pgina 1

3 MTODOS NUMRICOS PARA LA RESOLUCIN DE SISTEMAS LINEALES COMPATIBLES Y DETERMINADOS

ndice 3 Mtodos numricos para la resolucin de sistemas lineales compatibles y determinados ...........1
3.1 Introduccin a los sistemas de ecuaciones lineales............................................................................................ 1 3.1.1 Interpretaciones del sistema Ax=b....................................................................................................... 1 3.1.2 Algunos casos posibles del sistema Ax=b en 2-D ............................................................................... 2 3.1.3 Sistema de m ecuaciones con n incgnitas........................................................................................... 2 3.2 Mtodos directos: revisin del mtodo de eliminacin de Gauss ...................................................................... 3 3.2.1 Operaciones con filas por medio de matrices elementales................................................................... 3 3.2.2 Programa de Gauss bsico nn ............................................................................................................ 4 3.3 Mtodo de Gauss con pivotamiento parcial y total............................................................................................ 5 3.3.1 Necesidad del pivotamiento................................................................................................................. 5 3.3.2 Mtodo de Gauss con pivotamiento por columnas .............................................................................. 6 3.3.3 Mtodo de Gauss con pivotamiento total............................................................................................. 7 3.4 Factorizacin LU ............................................................................................................................................... 8 3.4.1 Factorizacin LU equivalente a la eliminacin de Gauss .................................................................... 8 3.4.2 Programa para resolver un sistema Ax=b basado en la factorizacin A=LU ...................................... 9 3.4.3 Factorizacin LU directa ................................................................................................................... 10 3.5 Caso de matrices simtricas y definidas-positivas: factorizacin de Cholesky ............................................... 11 3.6 Acotacin de valores propios: crculos de Gerschgorin................................................................................... 12 3.6.1 Crculos de Gerschgorin .................................................................................................................... 12 3.7 Mtodos iterativos: mtodos de Jacobi y Gauss-Seidel ................................................................................... 13 3.7.1 Mtodo de Jacobi............................................................................................................................... 14 3.7.2 Mtodo de Gauss-Seidel .................................................................................................................... 14 3.7.3 Convergencia de los mtodos de Jacobi y Gauss-Seidel con matrices de diagonal dominante ......... 15

3.1

Introduccin a los sistemas de ecuaciones lineales

La resolucin de sistemas de ecuaciones lineales es uno de los problemas matemticos ms importantes en ingeniera. Hasta la llegada de los computadores digitales (segunda mitad del s. XX) la capacidad de resolver sistemas de ecuaciones lineales estaba muy limitada, no por la dificultad conceptual del problema, sino por el gran nmero de operaciones aritmticas necesarias. Ahora se puede resolver con un PC un sistema 10001000 en menos de 1 seg. Con programas especiales que aprovechan la estructura de la matriz, se pueden resolver con PCs en unos pocos segundos o minutos sistemas de decenas de miles de ecuaciones lineales. Muchos mtodos matemticos (clculo de valores y vectores propios, integracin de ecuaciones diferenciales, optimizacin, ...) estn basados en la resolucin repetida de sistemas de ecuaciones lineales. Adems, la resolucin de sistemas de ecuaciones lineales tiene un importante valor didctico, para los mtodos numricos en general y para la programacin de ordenadores en particular. 3.1.1 Interpretaciones del sistema Ax=b

El sistema de ecuaciones lineales Ax=b admite al menos las dos interpretaciones siguientes: 1. Interseccin de hiperplanos (Figura 1). La solucin es el punto (o conjunto de puntos) que satisface las ecuaciones de todos los hiperplanos, es decir, su interseccin. La interseccin puede ser un punto, un subespacio de dimensin nr, o el conjunto vaco. 2. Combinacin lineal de vectores (Figura 2). El vector trmino independiente b es una combinacin lineal de las columnas de A, cuyos coeficientes son los valores de x. Con notacin de Matlab (A(i,:) y A(:,j) representan respectivamente la fila i y la columna j de A): Ax = b; A (:,1) x1 + A (:, 2) x2 + ... + A (:, n ) xn = b (1)

Tema 3: Mtodos numricos para la resolucin de sistemas lineales compatibles y determinados

pgina 2

b
A(:,1)x1 A(:,1) A(:,3)x3 A(:,3)

A(:,2) A(:,2)x2
Figura 1. Interseccin de hiperplanos. Figura 2. Combinacin lineal de vectores columna.

La expresin (1) indica que para que el sistema Ax=b tenga solucin, es necesario y suficiente que el vector b pertenezca a Im(A), es decir, al subespacio generado por las columnas de A. La solucin ser nica si hay una nica forma de expresar b como combinacin lineal de las columnas de A. 3.1.2 Algunos casos posibles del sistema Ax=b en 2-D

Como ejemplo ilustrativo de lo dicho en el apartado anterior, en la Figura 3 se muestran geomtricamente algunos casos posibles de sistemas de ecuaciones en R2, teniendo en cuenta los nmeros de ecuaciones m y de incgnitas n, el rango de la matriz A y el vector b. m=2, n=2, r=2 m=3, n=2, r=2 bIm(A) m=3, n=2, r=2 bIm(A)

m=1, n=2, r=1

m=2, n=2, r=1 bIm(A)

m=2, n=2, r=1 bIm(A)

Figura 3. Algunos casos posibles del sistema Ax=b en R2.

3.1.3

Sistema de m ecuaciones con n incgnitas


a11 a12 a a22 21 am1 am 2 a1n x1 b1 x b a2 n 2 2 = amn xn bm

Se parte de un sistema de ecuaciones lineales expresado en forma matricial del siguiente modo:
a11 x1 + a12 x2 + ... + a1n xn = b1 a21 x1 + a22 x2 + ... + a2 n xn = b2 Ax = b ... am1 x1 + am 2 x2 + ... + amn xn = bm

(2)

Tema 3: Mtodos numricos para la resolucin de sistemas lineales compatibles y determinados

pgina 3

Como se ha dicho anteriormente, para que el sistema tenga solucin, el vector b debe poderse expresar como combinacin lineal de las columnas de A: Ax = b A (:,1) x1 + A (:, 2) x2 + ... + A (:, n ) xn = b (3)

El mtodo de eliminacin de Gauss est basado en el hecho de que una ecuacin cualquiera puede sustituirse por una combinacin lineal de esa ecuacin y de las dems, sin que vare la solucin del sistema. As pues, el mtodo de eliminacin de Gauss: Combina ecuaciones (filas de la matriz A y elementos del vector b) de forma que el sistema adopte una forma ms sencilla: forma triangular superior o forma de escalera. La forma final de las ecuaciones permite entender mejor las caractersticas del sistema a resolver, como si el sistema tiene solucin o no, si la solucin es nica, etc. Es equivalente a una factorizacin PA=LU, donde P es una matriz de permutacin, L es una matriz triangular inferior mm con unos en la diagonal, que contiene los factores por los que se han multiplicado las filas de los pivots y U es una matriz mn que resulta de transformar A a la forma de escalera. 3.2 Mtodos directos: revisin del mtodo de eliminacin de Gauss

3.2.1 Operaciones con filas por medio de matrices elementales A continuacin se describe el mtodo de eliminacin de Gauss con un ejemplo 44. En primer lugar se hace un cero en la posicin (2,1) multiplicando el sistema por la matriz P21:
a11 a12 a a A = 21 22 a31 a32 a41 a42 a13 a23 a33 a43 a14 a24 , a34 a44 1 m P21 = 21 0 0 0 0 0 1 0 0 , 0 1 0 0 0 1 a11 a12 0 a 22 P21A = a31 a32 a41 a42 a13 a23 a33 a43 a14 a24 a34 a44

(4)

donde:

m21 =

a21 ; a11

= a21 m21a11 = a21 a21

a21 a11 = 0; a11

j = a2 j m21a1 j , a2

j = 2,..., 4

(5)

Seguidamente se obtienen ceros en los restantes elementos de la 1 columna pre-multiplicando por las matrices P31 y P41. Se llega a la situacin siguiente:
1 0 P31 = m31 0 0 1 0 0 0 0 1 0 0 0 , 0 1 a12 a22 a32 a42 0 0 0 1 ai1 0 1 0 0 mi1 = a , P41 = 11 0 0 1 0 a = a m a ij i1 1 j ij m41 0 0 1 a13 a14 0 0 0 1 a24 a23 m21 1 0 0 , P1 P41P31P21 = a34 m31 0 1 0 a33 a44 a43 m41 0 0 1

a11 0 P41P31P21A = 0 0

(6)

Obsrvese la forma peculiar en que se multiplican las matrices Pi1. Si la matriz A es simtrica, la submatriz de P1A en la que hay que seguir haciendo ceros tambin lo es. De forma anloga se hacen ceros debajo de la diagonal en las columnas 2 y 3, pre-multiplicando por unas matrices P2 y P3:

Tema 3: Mtodos numricos para la resolucin de sistemas lineales compatibles y determinados

pgina 4

a11 0 P42 P32 P1A = 0 0 a11 0 P3P2 P1A = 0 0

a12 a22 0 0 a12 a22 0 0

a13 a23 a33 a43 a13 a23 a33 0

a14 a24 , a34 a44 a14 a24 , a34 a44

0 1 0 1 P2 P42 P32 = 0 m32 0 m42 1 0 P3 P43 = 0 0 0 0 1 0 0 1 0 m43

0 0 0 0 1 0 0 1 0 0 0 1

(7)

(8)

Para llegar a este resultado se ha supuesto que los elementos que aparecen sobre la diagonal los y a33 son distintos de cero, pues aparecen en los denominadores de los factores mji. pivots: a11 , a22 Finalmente se llega a un sistema de ecuaciones lineales equivalente al original, que tiene la forma:

( P3P2P1A ) x = P3P2P1b

(9)

Este sistema es ms fcil de resolver que el original, por los ceros introducidos. Ahora se puede calcular x4 de la cuarta ecuacin, x3 de la tercera, x2 de la segunda, y x1 de la primera ecuacin.

k k i
0

j k = i k

k * 0

i * = *k

Figura 4. Eliminacin de Gauss.

Figura 5. Vuelta atrs.

3.2.2 Programa de Gauss bsico nn A continuacin se presenta un programa bsico para resolver sistemas de n ecuaciones lineales con n incgnitas, utilizando Matlab. Se realizan dos tareas sucesivas: en primer lugar la triangularizacin, basada hacer cero el elemento (i,k) combinando las filas i y k:
% triangularizacin de la matriz A, de tamao (n,n) % se hacen ceros en las n-1 primeras columnas for k=1:n-1 % se hacen ceros en la columna k, debajo de la diagonal for i=k+1:n m=A(i,k)/A(k,k); % a la fila i se resta la fila k multiplicada por m for j=k+1:n A(i,j)=A(i,j)-m*A(k,j); end % se transforma del mismo modo el trmino independiente b(i) b(i)=b(i)-m*b(k); end end

En una segunda fase se calculan las incgnitas mediante la vuelta atrs, con el siguiente proceso que comienza calculando la ltima incgnita y luego las anteriores:

Tema 3: Mtodos numricos para la resolucin de sistemas lineales compatibles y determinados

pgina 5

% se calcula x(n) de la ltima ecuacin x(n)=b(n)/A(n,n); % se calcula x(k) de la ecuacin k for k=n-1:-1:1 s=0; for i=k+1:n s=s+A(k,i)*x(i); end x(k)=(b(k)-s)/A(k,k); end

El algoritmo bsico puede modificarse si la matriz A es simtrica, haciendo que el nmero de operaciones se reduzca aproximadamente a la mitad (en negrita las dos sentencias modificadas):
% triangularizacin de la matriz A (simtrica) % se hacen ceros en las n-1 primeras columnas for k=1:n-1 % se hacen ceros en la columna k for i=k+1:n m=A(k,i)/A(k,k); % se tiene en cuenta la simetra % a la fila i se resta la fila k multiplicada por m % slo se opera por encima de la diagonal for j=i:n A(i,j)=A(i,j)-m*A(k,j); end % se transforma del mismo modo el trmino independiente b(i)=b(i)-m*b(k); end end

3.3

Mtodo de Gauss con pivotamiento parcial y total

3.3.1 Necesidad del pivotamiento En el proceso de eliminacin de Gauss bsico anteriormente explicado es necesario dividir por los elementos que aparecen en la diagonal, que se denominan "pivots" o "pivotes". En ocasiones puede aparecer un cero (o un elemento de valor muy pequeo) en la posicin de un pvot: en ese caso el proceso no puede continuar si se utiliza el algoritmo previo. Si debajo del pvot hay elementos no nulos se pueden permutar las filas correspondientes y proseguir la eliminacin (la solucin del sistema no vara). Se considerar un sistema 45, con un elemento nulo en la posicin (2,2):
a11 a12 0 0 P1A = 0 a32 0 a42 a13 a14 a24 a23 a34 a33 a44 a43 a15 a25 a35 a45

(10)

La permutacin de filas puede hacerse pre-multiplicando por una matriz P en la forma:


1 0 PP1A = 0 0 0 0 1 0 0 1 0 0 0 a11 a12 0 0 0 0 0 a32 1 0 a42 a13 a14 a24 a23 a34 a33 a44 a43 a15 a11 a12 0 a32 a25 = 0 a35 0 0 a42 a45 a13 a14 a34 a33 a24 a23 a44 a43 a15 a35 a25 a45

(11)

La matriz P puede construirse a partir de un vector p que contiene el orden de los pivots [1,3,2,4]. Tambin puede suceder que algunas columnas carezcan de pvot vlido. Por ejemplo, si al hacer ceros en la columna 2 los elementos correspondientes de la columna 3 se han hecho tambin cero:

Tema 3: Mtodos numricos para la resolucin de sistemas lineales compatibles y determinados

pgina 6

a11 a12 0 a 22 P2 P1A = 0 0 0 0

a13 a14 a24 a23 0 a34 0 a44

a15 a25 , a35 a45

1 0 P44 = 0 0

0 1 0

0 0 1

0 m43

0 0 P4 , 0 1

m43 =

a44 a34

(12)

En este caso el proceso normal falla y hay dos posibilidades: 1. La eliminacin puede proseguir en las columnas posteriores y llegar hasta un ltimo pvot en la ltima fila (x3 es una variable libre o independiente, que puede tomar un valor arbitrario).
a11 a12 0 a 22 P4P2P1A = 0 0 0 0

a13 a23 0 0

a14 a24
a34

a15 a25 a35 a45

(13)

2. La eliminacin se detiene porque debajo del ltimo pvot encontrado todas las filas restantes se han hecho cero (una fila dependiente de las dems, y dos variables libres: x3 y x5). a11 a12 0 a 22 P4P2P1A = 0 0 0 0 a13 a23 0 0 a14 a24 a34 0 a15 a25 a35 0

(14)

3.3.2 Mtodo de Gauss con pivotamiento por columnas Continuando con lo indicado en la seccin anterior, en el caso general el mtodo de Gauss con pivotamiento por columnas procede del siguiente modo, ilustrado con un ejemplo en la Figura 6: 1. Se busca el mayor elemento en valor absoluto de la primera columna. Este elemento servir como pvot para hacer ceros en dicha columna. 2. El segundo pvot es el mximo elemento en valor absoluto de la 2 columna, sin contar el elemento de la fila del primer pvot. Con este pvot se hacen ceros en los elementos de la 2 columna que no pertenecen a una fila de un pvot anterior. 3. De modo anlogo se calculan los pivots en las restantes columnas y se hacen cero los elementos de cada columna, pero slo en las filas en las que no han aparecido pivots. 4. En el sistema final es fcil hallar las incgnitas xn, ..., x1, partiendo de la fila en la que ha aparecido el ltimo pvot, luego en la del penltimo pvot, y as hasta la del primero. 5. En la prctica, no es necesario intercambiar filas: basta conocer las filas dnde han ido apareciendo los sucesivos pivots, almacenando en un vector la informacin correspondiente.
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Figura 6. Mtodo de eliminacin de Gauss con pivotamiento por columnas.

Posibles dificultades del mtodo de Gauss con el pivotamiento por columnas descrito:

Tema 3: Mtodos numricos para la resolucin de sistemas lineales compatibles y determinados

pgina 7

Si una ecuacin del sistema (o una fila de la matriz) se multiplica por un nmero muy grande (por ejemplo, 1e10), la solucin del sistema no vara, pero se puede alterar el orden en el que se eligen los pivots, y con dicho orden la precisin de la solucin calculada. Por ello es conveniente que todas las filas de la matriz sean vectores que tengan aproximadamente la misma norma, o bien que, al elegir los pivots, se comparen los elementos de la columna correspondiente, dividiendo cada uno de ellos por la norma de su fila. A este proceso se le denomina escalamiento o scaling por filas. A continuacin se presenta un programa de Matlab, llamado pivotcol1.m, que selecciona directamente los pivots en cada columna, sin dividir por la norma de la fila.
% fichero pivotcol1.m % Gauss y pivotamiento por columnas. Vectorizacin simple % se generan aleatoriamente la matriz y el vector de un tamao dado n=5; A=round(rand(n,n)*20-10); b=round(rand(n,1)*20-10); x=zeros(n,1); % se calcula la solucin exacta con el operador (\) xe=AA\bb; % vector que contendr el orden de los pivots p=[1:n]; for k=1:n-1 % buscar el pvot en columna k. No intervienen las filas de pivots anteriores [pk,ik]=max(abs(A(p(k:n),k))); % se intercambian los elementos en p para indicar el orden de los pivots temp=p(k); p(k)=p(ik+k-1); p(ik+k-1)=temp; % hacer ceros en columna pvot for i=p(k+1:n) m=A(i,k)/A(p(k),k); A(i,k:n)=A(i,k:n)-m*A(p(k),k:n); b(i)=b(i)-m*b(p(k)); %A(i,k)=m; end end % vuelta atrs: orden inverso de aparicin de pivots x(n)=b(p(n))/A(p(n),n); for i=n-1:-1:1 s=A(p(i),i+1:n)*x(i+1:n); x(i)=(b(p(i))-s)/A(p(i),i); end disp('Solucin de Matlab'); disp(xe); disp('Solucin calculada'); disp(x); disp('Ya he terminado')

3.3.3 Mtodo de Gauss con pivotamiento total En muchas aplicaciones prcticas el pivotamiento por columnas descrito anteriormente es suficiente para obtener una solucin correcta y con pequeos errores numricos. Sin embargo, existen casos en los cuales es necesario realizar pivotamiento total, eligiendo el pvot no entre los elementos de una columna, sino entre todos los elementos de la matriz que no estn en una fila y/o columna de los pivots anteriores. Una posible aplicacin del pivotamiento total es en los sistemas indeterminados, cuando es necesario elegir las variables libres ms adecuadas. El mtodo de Gauss con pivotamiento total se ilustra en la Figura 7 y procede del siguiente modo: 1. En primer lugar se busca el mayor elemento en valor absoluto de toda la matriz. Este elemento ser el primer pvot: en el caso de la Figura 7 se supone que es la fila 4, columna 2. 2. Se hacen ceros todos los elementos de la columna 2 (menos el pvot).

Tema 3: Mtodos numricos para la resolucin de sistemas lineales compatibles y determinados

pgina 8

3. Se busca el mximo elemento en valor absoluto de toda la matriz, excluyendo la fila 4 y la columna 2. Este elemento ser el 2 pvot (fila 3, columna 4). 4. Se hacen ceros en la columna 4 excepto en las filas de pivots anteriores. 5. Se prosigue de la misma forma hasta que todas las filas y/o columnas tienen un pvot. 6. En la vuelta atrs, las incgnitas se calculan en orden decreciente de columnas en las que han aparecido los pivots, y cada una de ellas se calcula en el orden decreciente de filas en las que han aparecido pivots.
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Figura 7. Mtodo de eliminacin de Gauss con pivotamiento total.

El pivotamiento total mejora algo la estabilidad del proceso de eliminacin de Gauss, pero en general se considera que esta ganancia no merece la pena por el esfuerzo adicional que lleva consigo. Como ya se ha dicho, se utiliza en ocasiones cuando el objetivo es determinar el rango de la matriz o una particin ptima entre variables bsicas y variables libres. Con pivotamiento total puede ser conveniente utilizar escalamiento por filas y por columnas, segn la siguiente expresin (D1 y D2 permutaciones de una matriz diagonal): D1AD 2 y = D1b, siendo x = D 2 y (15)

El escalamiento por columnas implica un cambio de unidades en las incgnitas: en algunos casos puede ser conveniente no mezclar metros con micras, y en otros casos puede ser necesario hacerlo. Hay que sealar que no hay criterios absolutos para hacer un buen escalamiento por columnas. Un buen criterio podra ser hacer que el mximo elemento de cada fila y columna tenga una magnitud parecida, por ejemplo que est entre y 1. Hay que tener en cuenta que si al hacer el scaling se multiplica y divide siempre por potencias de 2, no se introducen errores de redondeo adicionales.
3.4 Factorizacin LU

3.4.1 Factorizacin LU equivalente a la eliminacin de Gauss Las matrices elementales Pi introducidas en las expresiones (6), (7) y (8) tienen propiedades especiales y operan de una forma particular. Por una parte, es fcil comprobar que el producto P3P2 no ofrece ninguna caracterstica especial:
1 0 P3P2 = 0 0 0 1 0 0 0 1 0 0 0 1 0 0 m32 1 0 m42 0 0 0 1 0 1 0 0 = 1 0 0 m32 0 1 0 m43m32 m42 0 0 1 m43 0 0 0 1

0 1 0 m43

(16)

Sin embargo, la inversa de las matrices Pj tiene una forma muy sencilla, ya que se obtiene simplemente cambiando el signo de los factores mij, como se comprueba a continuacin para P2:

Tema 3: Mtodos numricos para la resolucin de sistemas lineales compatibles y determinados

pgina 9

0 1 0 1 P2P21 = 0 m32 0 m42

0 0 1 0

0 1 0 0 0 1 0 0 m32 1 0 m42

0 0 1 0

0 1 0 0 = 0 0 1 0

0 1 0 0

0 0 1 0

0 0 0 1

(17)

Ahora se comprobar que el producto de las inversas de P3P2 en orden inverso se realiza mediante simple "superposicin" de elementos no nulos:
1 0 0 1 P21P31 = 0 m32 0 m42 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 1 = 0 0 m32 1 0 m42 0 0 1 m43 0 0 0 1

(18)

0 m43

Pre-multiplicando la ecuacin (8) por las inversas de las matrices Pi y teniendo en cuenta la forma (18) que adopta dicho producto de inversas:
a11 a12 0 a 22 A = P11P21P31 0 0 0 0 0 a13 a14 1 a24 a23 m 1 = 21 a34 m31 m32 a33 0 a44 m41 m42 0 0 1 m43 0 a11 a12 0 0 a22 0 0 0 1 0 0 a13 a14 a24 a23 a34 a33 0 a44

(19)

Se ve que el mtodo de eliminacin de Gauss equivale a descomponer la matriz A en el producto de una matriz triangular inferior L con "1" en la diagonal, por una matriz triangular superior U:
A = LU

(20)

La factorizacin LU tiene una gran importancia en lgebra lineal numrica. 3.4.2 Programa para resolver un sistema Ax=b basado en la factorizacin A=LU Los programas anteriores suponen que las operaciones sobre las filas en el sistema Ax=b se realizan simultneamente en ambos miembros. En realidad, es posible separar las operaciones sobre la matriz A y sobre el vector b. En una primera fase se realiza la triangularizacin de la matriz A sin operar con el vector b, pero almacenando los factores m que aparecen en la ec. (19) en las posiciones de los nuevos ceros de A, con objeto de disponer al final de las matrices L y U. Una vez hecha la factorizacin, el sistema LUx=b se transforma definiendo un nuevo vector incgnita yUx, con lo que se tiene el sistema Ly=b, del que se puede despejar fcilmente el vector y porque L es triangular inferior. Conocido y, se despeja el vector x del sistema Ux=y teniendo en cuenta que U es triangular superior. A continuacin se dan los programas de Matlab que realizan la triangularizacin y las dos resoluciones con matrices triangulares (ver Figura 8 y Figura 9). Por brevedad, se han reducido al mnimo los comentarios en el cdigo.
% factorizacin A=LU for k=1:n-1 for i=k+1:n m=A(i,k)/A(k,k); for j=k+1:n A(i,j)=A(i,j)-m*A(k,j); end % se almacena el factor m en la posicin del cero A(i,k)=m; end end

Tema 3: Mtodos numricos para la resolucin de sistemas lineales compatibles y determinados

pgina 10

% Resolucin del sistema Ly=b y=zeros(n,1); y(1)=b(1); for k=2:n s=0; for j=1:k-1 s=s+A(k,j)*y(j); end y(k)=b(k)-s; end % Resolucin del sistema Ux=y x=zeros(n,1); x(n)=y(n)/A(n,n); for k=n-1:-1:1 s=0; for j=k+1:n s=s+A(k,j)*x(j); end x(k)=(y(k)-s)/A(k,k); end

k 0 k 1 1 * = *k

k k * 0

i * = *k

Figura 8. Resolucin de Ly=b.

Figura 9. Resolucin de Ux=y.

3.4.3 Factorizacin LU directa En los apartados anteriores se ha visto la estrecha relacin que existe entre la eliminacin de Gauss y la factorizacin LU. Ahora se va a ver que se puede llegar al mismo con una secuencia diferente de operaciones aritmticas, sin disminuir su nmero, pero con ventajas importantes desde el punto de vista de gestin de la memoria del ordenador.

=
Figura 10. Representacin simblica del clculo directo de la factorizacin LU.

En la Figura 10 se ha representado grficamente el proceso seguido para la factorizacin LU directa de la matriz A. Supngase que ya se han calculado las i 1 primeras columnas de L y las i 1 primeras filas de U. Se ver a continuacin cmo se calcula la columna i de L y la fila i de U. Se comenzar estableciendo la expresin del elemento aii como producto de la fila i de L por la columna i de U. De dicha expresin se puede calcular el valor de uii , que es la nica incgnita que aparece (en las expresiones siguientes se separa el ltimo trmino del sumatorio, pues es el que contiene la nica incgnita de la ecuacin):

Tema 3: Mtodos numricos para la resolucin de sistemas lineales compatibles y determinados


i 1 i 1

pgina 11

aii = lik uki + uii


k =1

uii = aii lik uki


k =1

(21) como producto de la fila i

La fila i de U se puede calcular expresando el valor de aij de L por la columna j de U: aij = lik ukj + uij
k =1 i 1 i 1

( j = i + 1,..., n )

uij = aij lik ukj


k =1

j = i + 1,..., n

(22)

Finalmente, la columna de i de L se puede determinar expresando los elementos a ji como producto de las filas j de L por la columna i de U: a ji = l jk uki + l ji uii
k =1 i 1

( j = i + 1,..., n )
(23)

l ji =

1 uii

i 1 a ji l jk uki k =1

j = i + 1,..., n

La ventaja de las expresiones (21)-(23) respecto a las usadas en la eliminacin de Gauss es que cada elemento de las matrices L y U adquiere en ellas su valor definitivo, mientras que todos los elementos que aparecen en el miembro derecho de la igualdad son datos de "slo lectura". Esto contrasta con el mtodo de eliminacin de Gauss, en que cada elemento de A sufre sucesivas transformaciones, con las consiguientes operaciones de guardar en la memoria los valores intermedios para volverlos a leer posteriormente. Hasta finales de los aos 80 los ordenadores necesitaban mucho ms tiempo para una operacin aritmtica de punto flotante que para un acceso a memoria. Con los ordenadores actuales un acceso a memoria puede ser mucho ms costoso que varias operaciones aritmticas (sobre todo si el dato no se encuentra en las memorias cache de primer o segundo nivel).
3.5 Caso de matrices simtricas y definidas-positivas: factorizacin de Cholesky

Se dice que una matriz simtrica A es definida positiva cuando se cumple que xT Ax > 0 , x 0 . En el Tema 5 se estudiarn con detalle las propiedades de este tipo de matrices. Por ahora baste decir que las matrices definidas positivas tienen garantizado el que todos los pivots de la eliminacin de Gauss son positivos, por lo que no es necesario realizar pivotamiento. La factorizacin de Cholesky utiliza esta propiedad para constituirse en el mtodo directo ms eficiente para resolver sistemas de ecuaciones lineales con este tipo de matrices. De las expresiones (22) y (23) se deduce que si A es simtrica uij = l ji uii . La factorizacin de Cholesky est basada en la siguiente expresin:
A = LU = LDLT = LD1/ 2D1/ 2LT = LLT

(24)

Si se trabaja con L y con la parte inferior de A, las expresiones son las siguientes: Elemento de la diagonal:
aii = l l = l + l
k =1 T ik ki k =1 2 ik i i 1 2 ii i 1 2 lii = aii lik k =1 1

(25)

Restantes elementos de la columna i: a ji = l l = l jk lik + l ji lii


k =1 T jk ki k =1 i i 1

i 1 1 l ji = a ji l jk lik lii k =1

(26)

La factorizacin de Cholesky requiere un cdigo de Matlab muy similar al visto anteriormente.

Tema 3: Mtodos numricos para la resolucin de sistemas lineales compatibles y determinados

pgina 12

3.6

Acotacin de valores propios: crculos de Gerschgorin

3.6.1 Crculos de Gerschgorin


Los crculos de Gerschgorin constituyen una forma aproximada de situar los valores propios de una matriz cualquiera en el plano complejo, sin tener que calcularlos.
Proposicin: Cada valor propio C de una matriz A Cnn satisface al menos una de las desigualdades siguientes:

aii
T

j =1, j i

j =n

aij ,

i = 1, 2,..., n

(27)

Demostracin: Sea x = [ x1 , x2 ,..., xn ] el vector propio asociado al valor propio , y sea xi la mxima componente en valor absoluto del vector x,
Ax x = 0; xi = max x j > 0
j

(28)

Identificando la ecuacin i-sima en la ecuacin de valores y vectores propios (28):

( aii ) xi + aij x j = 0
j i

aii =

a
j i

xj xi

ij

aij
j i

xj xi

aij
j i

xj xi

aij
j i

(29)

de donde se deduce ya la desigualdad propuesta en la ecuacin (27). Los crculos j = n de Gerschgorin son crculos en el plano complejo con centro en el punto ( aii , 0 ) y radio r = aij . Se puede dar una definicin similar por columnas, en lugar de filas. Se puede dar la siguiente interpretacin geomtrica general de los crculos de Gerschgorin (sin demostracin): La unin de todos los crculos de Gerschgorin en el plano complejo debe contener todos los valores propios de A. Si la unin de k de los n crculos de Gerschgorin es una regin conexa, pero inconexa respecto a los nk crculos restantes, dicha unin contiene exactamente k valores propios de A. Ejemplo: Representar los crculos de Gerschgorin para la matriz:
7 3 5 A= 2 6 2 1 1 3
j =1, j i

(30)

Los valores propios de A son 10, 4 y 2. Por filas, los radios de los crculos de Gerschgorin son: 3+5=8, 2+2=4 y 1+1=2, con los centros situados en c=7, c=6 y c=3. Por columnas, los radios son:2+1=3, 3+1=4 y 5+2=7, con los centros situados en c=7, c=6 y c=3.

Tema 3: Mtodos numricos para la resolucin de sistemas lineales compatibles y determinados

pgina 13

Figura 11. Crculos de Gerschgorin por filas.

Figura 12. Crculos de Gerschgorin por columnas.

Los crculos de Gerschgorin se ajustan ms o menos dependiendo del caso concreto considerado.
3.7 Mtodos iterativos: mtodos de Jacobi y Gauss-Seidel

Aunque el campo de los mtodos iterativos es un campo muy extenso con un gran nmero de mtodos y de variantes, en este apartado se vern exclusivamente los mtodos de Jacobi y Gauss-Seidel. Se parte de un sistema de ecuaciones lineales expresado en forma matricial:
a11 x1 + a12 x2 + ... + a1n xn = b1 a21 x1 + a22 x2 + ... + a2 n xn = b2 ... an1 x1 + an 2 x2 + ... + ann xn = bn

Ax = b

(31)

Se puede considerar que la matriz A se descompone en la forma siguiente:


A = MN

(32) (33) (34)

con lo cual el sistema de ecuaciones Ax=b se puede escribir como:


Mx = Nx + b

Esta expresin sugiere la siguiente frmula iterativa: Mx(i +1) = Nx( i ) + b Partiendo de un x (0) adecuado (en principio, arbitrario) y suponiendo que det ( M ) 0 , la nueva aproximacin x(i +1) se podr calcular a partir de la anterior como:

x( i +1) = M 1 ( Nx(i ) + b ) Bx(i ) + f ;

B M 1N, f M 1b

(35)

Si x es la solucin exacta del sistema Ax = b , el error de la iteracin i se podr expresar como:

e(i ) = x(i ) x

(36)

Restando de la frmula de iteracin (35), la misma expresin evaluada en la solucin exacta se obtiene la frmula de evolucin para el error:
x ( i +1) = Bx ( i ) + f x = Bx + f

(x

( i +1)

x ) = B ( x(i ) x )

e(i +1) = Be(i )

(37)

Tema 3: Mtodos numricos para la resolucin de sistemas lineales compatibles y determinados

pgina 14

As pues, el error cumplir la siguiente expresin recursiva:

e(i +1) = Be( i ) = B 2e( i 1) = ... = Bi +1e(0)

(38)

Para que el error tienda a cero con las sucesivas iteraciones es condicin suficiente que la matriz B sea convergente (es decir, que tenga un radio espectral <1):

(B) < 1

(39)

Esta condicin es tambin necesaria, pues si hubiera un valor propio de mdulo mayor o igual que uno bastara tomar una aproximacin inicial cuyo error fuera el vector propio correspondiente, para que no se obtuviese convergencia. 3.7.1 Mtodo de Jacobi Con un ejemplo 33 el mtodo de Jacobi procede obteniendo de cada ecuacin un nuevo valor para la incgnita correspondiente:
i i a11 x1i +1 + a12 x2 + a12 x3 = b1 i +1 i a21 x1i + a22 x2 + a23 x3 = b2 i i +1 a31 x1i + a32 x2 + a33 x3 = b3

i i x1i +1 = ( b1 a12 x2 a13 x3 ) / a11 i +1 i x2 = ( b2 a21 x1i a23 x3 ) / a22 i +1 i x3 = ( b3 a31 x1i a32 x2 ) / a33

(40)

Obsrvese que, una vez calculada la primera incgnita x1i +1 , no se utiliza ese valor en el clculo de i +1 i +1 y x3 . En funcin de la descomposicin A=MN vista anteriormente: las restantes incgnitas x2
0 a11 0 0 a12 a13 M = diag ( A ) = 0 a22 0 N = a21 0 a23 0 a33 0 a31 a32 0 a12 a11 a13 a11 0 b1 a11 1 1 a23 a22 B = M N = a21 a22 f = M b = b2 a22 0 0 a31 a33 a32 a33 b2 a33

(41)

Se ver ms adelante que la convergencia est garantizada ( ( B ) < 1 ) si A es diagonal-dominante. 3.7.2 Mtodo de Gauss-Seidel Con el ejemplo 33 anterior, el mtodo de Gauss-Seidel (o de las adaptaciones sucesivas) utiliza los nuevos valores en cuanto estn disponibles, procediendo en la forma:
i i a11 x1i +1 + a12 x2 + a12 x3 = b1 i +1 i a21 x1i +1 + a22 x2 + a23 x3 = b2 i +1 i +1 a31 x1i +1 + a32 x2 + a33 x3 = b3

i i x1i +1 = ( b1 a12 x2 a12 x3 ) / a11 i +1 i x2 = ( b2 a21 x1i +1 a23 x3 ) / a22 i +1 i +1 x3 = ( b3 a31 x1i +1 a32 x2 ) / a33

(42)

Con notacin matricial (no confundir con las factorizaciones LU LDU): Lxi +1 + Dxi +1 + Uxi = b
a11 M= a21 a31 0 a22 a32 0 0 a33

xi +1 = D1Lxi +1 D1Uxi + D1b


0 a12 N= 0 0 0 0 a13 a23 0

(43)

Obsrvese que en este caso la descomposicin A = M N se realiza del siguiente modo: (44)

Tema 3: Mtodos numricos para la resolucin de sistemas lineales compatibles y determinados

pgina 15

Si dii 0, i = 1, 2,..n , la matriz M es invertible pues su determinante es distinto de cero. Se puede demostrar que tambin el mtodo de Gauss-Seidel converge si la matriz A es diagonal-dominante.

3.7.3 Convergencia de los mtodos de Jacobi y Gauss-Seidel con matrices de diagonal dominante
Una matriz se dice de diagonal estrictamente dominante por filas cuando el valor absoluto de cada elemento de la diagonal es mayor que la suma de los valores absolutos del resto de la fila:

aii > aij


j =1 j 1

(45)

Anlogamente, una matriz de diagonal estrictamente dominante por columnas, satisface:

aii > a ji
j =1 j 1

(46)

Toda matriz de diagonal estrictamente dominante (por filas o por columnas) es invertible, con lo que queda garantizada la existencia y unicidad de solucin. Se demuestra basndose en que el valor propio 0 queda fuera de los crculos de Gerschgorin, por lo que la matriz no puede ser singular:
0 aii >

j =1, j i

j =n

aij ,

i = 1, 2,..., n

(47)

Con el mtodo de Jacobi, la matriz de la iteracin y los crculos de Gerschgorin vienen dados por:
0 B=M N= a21 a22 a31 a33
1

a12 a11 0 a32 a33

a13 a11 a23 a22 , 0

j =1, j i

j =n

aij aii

< 1,

i = 1, 2,..., n

(48)

pues los crculos de Gerschgorin de B estn centrados en el origen y tienen como radio la suma de los valores absolutos de cada fila. Por tanto ( B ) < 1 . En el mtodo de Gauss-Seidel las matrices M y N son las dadas por la expresin (44). Supngase que 1 ; entonces la matriz M N sera tambin diagonal dominante y por tanto invertible, pues se verificara:
aii > aij aij +
j i j =1 i 1

j = i +1

aij

Sin embargo, esto no es posible. Los valores propios de B = M 1N vienen dados por la ecuacin:
det ( I M 1N ) = det ( M 1 ) det ( M N ) = n det ( M 1 ) det ( M N / ) = 0 det ( M N / ) = 0 (49)

Se concluye que < 1 , y por tanto el mtodo de Gauss-Seidel converge para estas matrices.

Das könnte Ihnen auch gefallen