90
1/90 Universidad Politécnica de Madrid–Escuela Técnica Superior de Ingenieros Industriales Grado en Ingeniería en Tecnologías Industriales. Curso 2015-2016-3º Matemáticas de Especialidad–Ingeniería Eléctrica Sistemas de ecuaciones lineales Métodos iterativos de resolución José Luis de la Fuente O’Connor [email protected] [email protected] Clase_itera_2016.pdf

Sistemas de ecuaciones lineales. Métodos iterativos de resolución

Embed Size (px)

Citation preview

Page 1: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

1/90Universidad Politécnica de Madrid–Escuela Técnica Superior de Ingenieros IndustrialesGrado en Ingeniería en Tecnologías Industriales. Curso 2015-2016-3º

Matemáticas de Especialidad–Ingeniería Eléctrica

Sistemas de ecuaciones lineales

Métodos iterativos de resolución

José Luis de la Fuente O’[email protected]@upm.es

Clase_itera_2016.pdf

Page 2: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

2/90

Índice

� Introducción

� Método de Jacobi

� Método de Gauss-Seidel

� Métodos de relajación

� Métodos iterativos y matrices dispersas

� Métodos de dirección de descenso (minimización)

� Obtención de direcciones de descenso�Método de los gradientes conjugados

� Métodos de proyección en subespacios de Krylov

� Comparación numérica de los métodos

Page 3: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

3/90Introducción

� Los procedimientos iterativos siguen un esquema de trabajo como el que sigue

� Algoritmo iterativo para la resolución de Ax D b

Dados Un x D x.0/ y una tol , hacer k D 1 y sol D false

while (not sol) and (k < kmax)Obtener nueva solución x D x.k/, k D k C 1if (x.k/ � x.k�1/ < tol), sol D true, FIN

end

Parten de un punto más o menos cercano a la solución y convergen a ella enuna sucesión de puntos más o menos extensa.

� Una forma iterativa busca acercarse a la solución mediante operaciones sencillasen cada paso: productos de matrices por vectores o similares.

� El método convergerá si limk!1 x.k/ D x o el error e.k/ D x.k/ � x tiende acero. El acercarse a la solución, lo medirá una métrica como jjb �Axjj.

Page 4: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

4/90

� La forma más simple de proceso iterativo es la que define la ley recurrencia

x.kC1/ DMx.k/CNb

donde M y N se escogen para que en un punto dado x solución de Ax D b,x DMx CNb:

Si A es invertible, se debe cumplir que .I �M /A�1b D Nb o A�1 D .I �M /�1 N .

� El método iterativo se denomina estacionario, o de punto fijo, si M y N sonconstantes en el proceso. Se escoge una M sencilla o con M�1 fácil de obtener.

� Si se divide A así, A D I � .I �A/, el sistema queda .I � .I �A//x D b. Unaposible sencilla ley de recurrencia1 de punto fijo sería

x.k/ D .I �A/x.k�1/ C b .

1Esquema de Richardson.

Page 5: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

5/90

Método de Jacobi Carl Gustav Jacobi, Alemania(Prusia), 1804-1851.

� Formulado hacia 1845. Supongamos que se desea resolver el sistema deecuaciones lineales

a11x1 C a12x2 C a13x3 D b1a21x1 C a22x2 C a23x3 D b2a31x1 C a32x2 C a33x3 D b3:

� Admitiendo que los coeficientes a11, a22 y a33 son distintos de cero, se puededespejar de la primera ecuación la incógnita x1, de la segunda x2 y x3 de latercera, resultando lo que sigue.

x1 D 1a11.b1 � a12x2 � a13x3/

x2 D 1a22.b2 � a21x1 � a23x3/

x3 D 1a33.b3 � a31x1 � a32x2/:

Page 6: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

6/90

� Estas expresiones sugieren emplear como método iterativo el que definen lassiguientes relaciones de recurrencia:

x.kC1/1 D 1

a11

�b1 � a12x.k/2 � a13x.k/3

x.kC1/2 D 1

a22

�b2 � a21x.k/1 � a23x.k/3

x.kC1/3 D 1

a33

�b3 � a31x.k/1 � a32x.k/2

�:

� Su generalización es el método de Jacobi para un sistema n � n es

x.kC1/i D 1

ai i

bi �

nXjD1j¤i

aijx.k/j

!; i D 1; : : : ; n:

Page 7: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

7/90

� Si se divide la matriz A de la forma A D �LCD C�U , donde

D D

266664

a11 0 � � � 0 00 a22 � � � 0 0:::

:::: : :

::::::

0 0 � � � an�1 n�1 00 0 � � � 0 ann

377775 ;�L D

266664

0 0 � � � 0 0a21 0 � � � 0 0:::

::::::

:::an�1 1 an�1 2 � � � 0 0an1 an2 � � �ann�1 0

377775 y �U D

266664

0a12 � � �a1 n�1 a1 n0 0 � � �a2 n�1 a2n::::::

::::::

0 0 � � � 0 an�1 n0 0 � � � 0 0

377775 ;

el esquema iterativo en forma matricial es

x.kC1/ D D�1 .LC U /›Matriz de Jacobi

x.k/ CD�1b

� Si los ai i , i D 1; : : : ; n son todos positivos D es invertible y

J D D�1.LC U /

es la matriz de Jacobi.

Page 8: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

8/90� Algoritmo de Jacobi:

while kx.kC1/ � x.k/k1=kx.kC1/k1 > Tol dofor i D 1 to n

x.i/ 1

a.i; i/

b.i/ �

nXjD1

j¤i

a.i; j /x.j /

!

endend

� Su código en Matlab, en dos formatos:

function [x k]=Jacobi_2(A,b)% Resuelve Ax=b por Jacobin=size(A,1); x=zeros(n,1); y=x; sm=1; k=0;while sm>=0.001

k=k+1;for i=1:n

j = [1:i-1 i+1:n];y(i)=(b(i)-A(i,j)*x(j))/A(i,i);

endsm=max(abs(x-y))/max(abs(y));x=y;

endend

function [x k]=Jacobi_NEW_1(A,b)% Resuelve Ax=b por Jacobi (compacto)n=length(b); x=zeros(n,1); k=0; sm=1;d=diag(A); r=A-diag(d);while sm>0.001

y = (b-r*x)./d;sm=max(abs(x-y))/max(abs(y));x = y;k = k+1;

endend

Page 9: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

9/90� Ejemplo Resolvamos este sistema de ecuaciones lineales:

10x1 � x2 C 2x3 D 6

�x1 C 11x2 � x3 C 3x4 D 25

2x1 � x2 C 10x3 � x4 D �113x2 � x3 C 8x4 D 15:

� Partiendo de x.0/ D Œ0; 0; 0; 0�T , aplicando la relación de recurrencia se tendrá:

x.1/1 D 1

10x.0/2 � 1

5x.0/3 C 3

5D 0,6000

x.1/2 D 1

11x.0/1 C 1

11x.0/3 � 3

11x.0/4 C 25

11D 2,2727

x.1/3 D �1

5x.0/1 C 1

10x.0/2 C 1

10x.0/4 � 11

10D �1,1000

x.1/4 D � 3

8x.0/2 C 1

8x.0/3 C 15

8D 1,8750:

� Las iteraciones que siguen se generan de forma similar:k 0 1 2 3 4 � � � 9

x.k/1 0,0000 0,6000 1,0473 0,9326 1,0152 0,9997x.k/2 0,0000 2,2727 1,7159 2,0533 1,9537 2,0004x.k/3 0,0000 -1,1000 -0,8052 -1,0493 -0,9681 -1,0009x.k/4 0,0000 1,8750 0,8852 1,1309 0,9739 1,0006

Page 10: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

10/90� El criterio de llegada al óptimo puede ser cualquiera; aquí hemos forzado a que x.k/ � x.k�1/

1 x.k/

1

< 10�3:

� En k D 9 se cumple que

kx.9/ � x.8/k1kx.9/k1

D 8,0 � 10�42,0004

D 0;0003999 < 10�3:

� Utilizando el código Jacobi_2.m para resolver el ejemplo:

>> A=[10 -1 2 0;-1 11 -1 3;2 -1 10 -1;0 3 -1 8];>> b=[6;25;-11;15];>> [x k]=Jacobi_2(A,b)x =

0.99972.0004

-1.00041.0006

k =9

En nueve iteraciones se satisface el criterio elegido con una milésima deprecisión.

Page 11: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

11/90� Ejemplo Resolvamos con el algoritmo de Jacobi el sistema

10x1 C x2 D 11

2x1 C 10x2 D 12

partiendo del punto x.0/ D Œ0; 0�T . La solución exacta es Œ1; 1�T .

� Los puntos que se generan en el proceso iterativo son los de esta tabla.k 0 1 2 3 4 5

x.k/1 0,0000 1,1000 0,9800 1,0020 0,9996 1,00004x.k/2 0,0000 1,2000 0,9800 1,0040 0,9996 1,00008

� Resolvamos también con Jacobi este nuevo sistema x1 C 10x2 D 11

10x1 C 2x2 D 12

cuya solución es también Œ1; 1�T . Partiendo de x.0/ D Œ0; 0�T , los primerospuntos que se generan son:

k 0 1 2 3 4 5

x.k/1 0,0000 11 -49 501 -2499 25001x.k/2 0,0000 6 -49 251 -2499 12501

El proceso diverge.

Page 12: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

12/90

Definición Se dice que una matriz An�n (compleja o real) es de diagonal estrictamentedominante por filas cuando cumple que

jai i j >Pj¤i jaij j; i D 1; : : : ; n:

Se define análogamente la matriz de diagonal dominante por columnas.

Teorema Si en el sistema Ax D b la matriz A es de diagonal estrictamente dominantey regular, para todo b y toda estimación inicial x.0/ el método iterativo de Jacobi convergea su única solución.

� La dominancia diagonal estricta es sólo una condición suficiente. El métodopuede converger aún en su ausencia.

Page 13: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

13/90

Método Gauss-SeidelCarl Friedrich Gauss, Ale-mania, 1777-1855 y PhillipLudwig von Seidel, Alema-nia, 1821-1896.

� Este procedimiento2 también estacionario calcula en una iteración cadacoeficiente de la solución utilizando el valor de aquellos ya calculados en esamisma iteración que se necesitan.

� Volviendo a un sistema simbólico de tres ecuaciones,

a11x1 C a12x2 C a13x3 D b1a21x1 C a22x2 C a23x3 D b2a31x1 C a32x2 C a33x3 D b3;

suponiendo que a11, a22 y a33 no son cero, el esquema iterativo es el que sigue.

2Lo introdujo Gauss en 1823 y lo perfeccionó Seidel (alumno de Jacobi), así como el análisis de su conver-gencia, en 1874

Page 14: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

14/90

x.kC1/1 D 1

a11

�b1 � a12x.k/2 � a13x.k/3

x.kC1/2 D 1

a22

�b2 � a21x.kC1/1 � a23x.k/3

x.kC1/3 D 1

a33

�b3 � a31x.kC1/1 � a32x.kC1/2

� La relación de recurrencia general para un sistema n � n es la siguiente:

x.kC1/i D 1

ai i

0@bi �

i�1XjD1

aijx.kC1/j �

nXjDiC1

aijx.k/j

1A ; i D 1; : : : ; n:

Page 15: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

15/90

� Descomponiendo de nuevo la matriz A como en el método de Jacobi, en formamatricial el método de Gauss-Seidel sigue esta fórmula

x.kC1/ D .D �L/�1�U x.k/ C b

� A la matrizG D .D �L/�1U

se la denomina matriz de Gauss-Seidel.

Page 16: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

16/90� El algoritmo de Gauss-Seidel es este.

while kx.kC1/ � x.k/k1=kx.kC1/k1 > Tol dofor i D 1 to n

x.i/ 1

a.i; i/

[email protected]/ �

i�1XjD1

a.i; j /x.j / �nX

jDiC1

a.i; j /x.j /

1A

endend

� En Matlab:

function [x k]=Gauss_Seidel_1_1(A,b)% Resolución por Gauss-Seideln=size(A,1); x=zeros(n,1); sm=1; k=0;while sm>0.001

k=k+1; sm=0;for i=1:n

j=[1:i-1 i+1:n];xi=(b(i)-A(i,j)*x(j))/A(i,i);sm=max(abs(x(i)-xi),sm);x(i)=xi;

endsm=sm/max(abs(x));

endend

function [x k]=Gauss_Seidel_NEW(A,b)% Resolución por Gauss-Seidel (compacto)D=diag(diag(A)); L=-tril(A,-1); U=-triu(A,1);n=size(A,1); x=zeros(n,1); k=0; sm=1;while sm>0.001

y = (D-L)\(U*x + b);sm=norm(abs(y-x),inf); k=k+1;x = y;

endend

Page 17: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

17/90� Ejemplo Resolvamos por Gauss-Seidel el sistema lineal anterior:

10x1 � x2 C 2x3 D 6

�x1 C 11x2 � x3 C 3x4 D 25

2x1 � x2 C 10x3 � x4 D �113x2 � x3 C 8x4 D 15:

� Aplicando la relación general de recurrencia de Gauss-Seidel a este caso,partiendo del punto inicial x.0/ D Œ0; 0; 0; 0�T , se tiene

x.1/1 D 1

10x.0/2 � 1

5x.0/3 C 3

5D 0,6000

x.1/2 D 1

11x.1/1 C 1

11x.0/3 � 3

11x.0/4 C 25

11D 2,3273

x.1/3 D �1

5x.1/1 C 1

10x.1/2 C 1

10x.0/4 � 11

10D �0,9873

x.1/4 D � 3

8x.1/2 C 1

8x.1/3 C 15

8D 0,8789:

� Las iteraciones que se generan son las de la tabla.

k 0 1 2 3 4 5

x.k/1 0,0000 0,6000 1,0302 1,0066 1,0009 1,0001

x.k/2 0,0000 2,3273 2,0369 2,0036 2,0003 2,0000

x.k/3 0,0000 -0,9873 -1,0145 -1,0025 -1,0003 -1,0000

x.k/4 0,0000 0,8789 0,9843 0,9984 0,9998 0,9999

Page 18: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

18/90

� Obsérvese que con este método el problema, con el mismo criterio deconvergencia, necesita 5 iteraciones; el de Jacobi lo hacía en 9.

� Con Gauss_Seidel_1_1.m para resolverlo:

>> A=[10 -1 2 0;-1 11 -1 3;2 -1 10 -1;0 3 -1 8];>> b=[6;25;-11;15];>> [x k]=Gauss_Seidel_NEW(A,b)x =

1.00012.0000

-1.00001.0000

k =5

En cinco iteraciones efectivamente converge, con el criterio elegido, con unamilésima de precisión.

Page 19: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

19/90Proposición Si la matriz A es de diagonal estrictamente dominante se cumple quekGk1 � kJk1.

Teorema El método de Gauss–Seidel para resolver Ax D b converge a su solución sila matriz de coeficientes es de diagonal estrictamente dominante.

Teorema El esquema iterativox.kC1/ DMx.k/ CNb

es convergente si y sólo si el radio espectral de M es menor que 1. En ese caso la sucesiónx.k/ converge a la solución de la ecuación x DMx CNb.

Teorema El método iterativo de Gauss–Seidel es convergente para todo sistema deecuaciones cuya matriz de coeficientes es simétrica y definida positiva.

Teorema Si A es una matriz simétrica y definida positiva el método iterativo de Jacobies convergente si y sólo si 2D �A es definida positiva.

Page 20: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

20/90

Métodos de relajación

� Recordando lo que vimos al principio de este tema, si se trata de resolverAx D b, haciendo A D I � .I �A/ el sistema queda .I � .I �A//x D b.Simplificando la notación, una ley de recurrencia sería xk D .I �A/xk�1C b.

� Si el vector residuos rk�1 D b �Axk�1, xk D xk�1 C rk�1; de formarecurrente, xk D x0 C r0 C r1 C � � � C rk�1:

� Los métodos de Jacobi y Gauss-Seidel se pueden generalizar escribiendo susrelaciones de recurrencia de esta forma

x.kC1/i D x.k/i C r .k/i ; i D 1; : : : ; n:

Page 21: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

21/90� Vistos así, Jacobi y Gauss-Seidel llegan a la solución mediante unos pasos, encada uno de los cuales se mejora la solución una cantidad r .k/.

� En el método de Jacobi, r .k/i Dbi�

PnjD1 aij x

.k/j

ai i.

� En Gauss-Seidel, r .k/i Dbi�

Pi�1jD1 aij x

.kC1/j �Pn

jDi aij x.k/j

ai i:

� Los métodos3 de relajación buscan mejorar las prestaciones de convergencia encada iteración potenciando la relación de recurrencia mediante un factor !,

x.kC1/i D x.k/i C !r .k/i ; i D 1; : : : ; n

de tal forma que se avance un paso más amplio, ! > 1, o más corto, ! < 1,según convenga al problema que se resuelve.

� Al ! se le conoce como parámetro de relajación.

3También estacionarios.

Page 22: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

22/90Método SOR

� Aunque a Jacobi se le puede aplicar esta idea, el más conocido quizás es elmétodo SOR, Successive Overrelaxation –sobrerrelajación sucesiva–. Resulta deaplicar la idea indicada al método de Gauss-Seidel.

� Su relación de recurrencia es:

x.kC1/i D !

ai i

0@bi �

i�1XjD1

aijx.kC1/j �

nXjDiC1

aijx.k/j

1AC

C.1 � !/x.k/i ; i D 1; : : : ; n:

� Si A D D �L � U , el esquema iterativo SOR en forma matricial es

x.kC1/ D .D � !L/�1 ..1 � !/D C !U /x.k/ C ! .D � !L/�1 b:

La matriz del método G .!/ D .D � !L/�1 ..1 � !/D C !U /

Page 23: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

23/90� El esquema del algoritmo SOR es el que sigue.

while kx.kC1/ � x.k/k1=kx.kC1/k1 > Tol dofor i D 1 to n

x.i/ !

a.i; i/

[email protected]/ �

i�1XjD1

a.i; j /x.j / �nX

jDiC1

a.i; j /x.j /

1AC .1 � !/x.i/

endend

� En Matlab:

function [x k]=SOR(A,b,w)% Resolución por SOR

n=size(A,1); x=zeros(n,1); sm=1; k=0;if nargin<3 w=1.25; endwhile sm>=0.0001

k=k+1; sm=0;for i=1:n

j=[1:i-1 i+1:n];su=b(i)-A(i,j)*x(j);xi=(1-w)*x(i)+w*su/A(i,i);sm=max(abs(x(i)-xi),sm);x(i)=xi;

endsm=sm/max(abs(x));

endend

function [x, error, iter] = sor_1(A, b, w, tol)% Resolución por SOR (compacto)

if nargin<5, tol=sqrt(eps); endn=size(A,1); x=zeros(n,1);r = b - A*x; error = norm(r); iter=0;if error<tol, return, endb = w * b;M = w * tril(A,-1) + diag(diag(A));N = -w * triu(A,1) + (1.0 - w) * diag(diag(A));while error>=tol

x_1 = x;x = M \ ( N*x + b );error = norm(x - x_1)/norm(x);iter = iter+1;

endend

Page 24: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

24/90

� Ejemplo Resolvamos por el método SOR el sistema de ecuaciones lineales

4x1 C 3x2 D 24

3x1 C 4x2 � x3 D 30

� x2 C 4x3 D �24:

� Aplicando la relación general de recurrencia del método, partiendo del puntoinicial x.0/ D Œ1; 1; 1�T , con ! D 1;25, se obtienen los resultados de lasiguiente tabla.

k 0 1 2 3 4 5 6 7

x.k/1 1,0000 6,3125 2,6223 3,1333 2,9570 3,0037 2,9963 3,0000x.k/2 1,0000 3,5195 3,9585 4,0102 4,0074 4,0029 4,0009 4,0002x.k/3 1,0000 -6,6501 -4,6004 -5,0966 -4,9734 -5,0057 -4,9982 -5,0003

Page 25: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

25/90

� Juguemos con el parámetro !:

>> A=[4 3 0;3 4 -1;0 -1 4];>> b=[24;30;-24];>> [x error iter]=sor_1(A,b,1)x =

3.00004.0000

-5.0000error =

9.6306e-09iter =

36>> [x error iter]=sor_1(A,b,1.25)x =

3.00004.0000

-5.0000error =

1.4007e-08iter =

15

>> [x error iter]=sor_1(A,b,1.5)x =

3.00004.0000

-5.0000error =

1.0722e-08iter =

28>> [x error iter]=sor_1(A,b,2.25)x =

-InfInfNaN

error =NaN

iter =3165

� Desde el mismo punto de partida con ! D 2,25, el proceso diverge:k 0 1 2 3 4 5 6 7

x.k/1 1,0000 10,5625 3,0588 1,3328 -10,8367 12,2136 10,9919 18,5938x.k/2 1,0000 -1,6367 4,9442 13,4344 8,7895 -7,5608 -11,1607 11,9961x.k/3 1,0000 -15,6706 8,8695 -17,0300 12,7316 -33,6674 22,3064 -34,6352

Teorema Ostrowski-Reich Para un sistema de ecuaciones con matriz simétrica y definidapositiva, el método iterativo de relajación SOR converge si y sólo si el parámetro de relajacióncumple que 0 < ! < 2.

Page 26: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

26/90Método SSOR

� Cuando A es simétrica, el método Symmetric Successive Overrelaxation–sobrerrelajación sucesiva simétrica– combina dos pasos del SOR de tal maneraque la matriz de cada iteración es similar a una simétrica.

� Cada paso está compuesto de uno SOR hacia adelante seguido de otro SORhacia atrás.

� Si se descompone una vez más A D D �L � U , el esquema iterativo delmétodo SSOR en forma matricial es

x.kC1/ D B1B2x.k/C!.2�!/ .D � !U /�1 D .D � !L/�1 b

donde B1 D .D � !U /�1 .!LC .1 � !/D/ y B2 D .D � !L/�1 .!U C .1 � !/D/.

� La matriz B2 es la de SOR y B1 es igual con los papeles de L y U invertidos.

Page 27: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

27/90

� Una codificación en Matlab podría se esta:

function [sol, it, res] = SSOR_1(A,b,x0,omega)% Método estacionario SSORn = size(A,1); tol = sqrt(eps); maxit = 1500;it = 1; flag = 1; tmp = x0; sol = zeros(n,1);% Matrices necesariasL = tril(A,-1); D = diag(diag(A));% Productos matriciales inicialesDomegaL = D+omega*L; DL = (1-omega)*D-omega*L;M_inv_b = DomegaL’\(D*(DomegaL\b));M_inv_b = (omega*(2-omega))*M_inv_b;while it <= maxit && flag == 1

sol = DomegaL’\(DL*(DomegaL\(DL’*tmp)));sol = sol+M_inv_b; res = norm(A*sol-b);fprintf(’residuo(%4.0f) = %17.10e \n’, it, res);if res<=tol || norm(sol-tmp)/norm(sol)<=tol

flag = 0;else

tmp = sol;it = it + 1;

endend

end

>> A=[4 3 0;3 4 -1;0 -1 4];>> b=[24;30;-24];>> [sol, it, residual] = SSOR_1( A, b, zeros(3,1), 1)residuo( 1) = 4.0173269739e+00residuo( 2) = 2.0847794045e+00

residuo( 33) = 2.9935544173e-07residuo( 34) = 1.8013146669e-07sol =

3.00004.0000

-5.0000it =

34residual =

1.8013e-07

� Este método, o su matriz de iteración, se usa principalmente en la actualidadcomo precondicionador de otros iterativos.

Page 28: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

28/90Métodos estacionarios para matrices dispersas

� ¿Por qué emplear métodos iterativos, en vez de los directos, si aquellos sonaproximados y pueden requerir muchos pasos?

� Existen dos razones primordiales:

� En un paso de los procedimientos iterativos se efectúan sólo una pequeñafracción de las operaciones que hacen los directos. La factorización LU

necesita O�n3=3

�operaciones mientras que el método de Jacobi, por

iteración, sólo n. Si se parte de un punto próximo a la solución se puedellegar a ésta en un tiempo corto.

� Si la matriz de coeficientes del problema tiene muy pocos coeficientesdistintos de cero, la factorización LU puede causar que muchos se hagandistintos de cero en los factores. El método de Jacobi, por el contrario, si esadecuado aplicarlo, puede sacar mucha ventaja de esa estructura dedispersidad en problemas de gran tamaño, pues no factoriza la matriz.

Page 29: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

29/90

� Ejemplo Vamos a resolver un sistema lineal de hasta 1:000:000 de ecuacionesen el que la matriz tiene esta estructura:

A D

2666666666666664

3 �1 0 0 0 0 0 0 0 12

�1 3 �1 0 0 0 0 0 12

0

0 �1 3 �1 0 0 0 12

0 0

0 0 �1 3 �1 0 12

0 0 00 0 0 �1 3 �1 0 0 0 00 0 0 0 �1 3 �1 0 0 0

0 0 0 12

0 �1 3 �1 0 0

0 0 12

0 0 0 �1 3 �1 0

0 12

0 0 0 0 0 �1 3 �112

0 0 0 0 0 0 0 �1 3

3777777777777775

� El vector b D Œ2;5; 1;5 : : : 1;5; 1;0; 1;0; 1;5 : : : 1;5; 2;5�. Hay n � 4repeticiones de 1;5 y 2 repeticiones de 1;0.

� Utilizaremos Jacobi.

Page 30: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

30/90

� Utilizaremos los siguientes códigos:

function [a,b] = sparsesetup_J(n)% Sparse matrix setup% Input: n = tamaño de la matriz% Output: sparse matrix a, r.h.s. b e = ones(n,1); n2 = n/2;

a = spdiags([-e 3*e -e],-1:1,n,n); % Coeficientes de A en diagonalesc = spdiags([e/2],0,n,n); c=fliplr(c); % Coeficientes en contradiagonala = a+c;a(n2+1,n2)=-1; a(n2,n2+1)=-1; % Centro de contradiagonalb = zeros(n,1); % Vector bb(1)=2.5; b(n)=2.5; b(2:n-1)=1.5; b(n2:n2+1)=1;

end

function x = jacobi_S_1(a,b)% Jacobi para matriz dispersa% Inputs: Matriz A y vector b% Output: solución x n=length(b);

d=diag(a); % diagonal de Ar=a-diag(d); % A sin diagonal principalx=zeros(n,1); k=0; sm=1; % Vector x de partidawhile sm>0.00001 % iteraciones de Jacobi

y=(b-r*x)./d;sm=max(abs(x-y))/max(abs(y)); k=k+1;x = y;

endend

Page 31: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

31/90

� Si los probamos:>> n=100000;>> [a,b]=sparsesetup_J(n);>> tic; [a,b]=sparsesetup_J(n); tocElapsed time is 0.053800 seconds.>> tic; x=jacobi_S_1(a,b); tocElapsed time is 0.056983 seconds.

>> n=1000000; % Un millón>> [a,b]=sparsesetup_J(n);>> tic; x=jacobi_S_1(a,b); tocElapsed time is 0.786218 seconds.>> norm(abs(x-ones(n,1)))ans =

1.4450e-05

>> n=10000000; % Diez millones>> [a,b]=sparsesetup_J(n);>> tic; x=jacobi_S_1(a,b); tocElapsed time is 8.002969 seconds.>> norm(abs(x-ones(n,1)))ans =

1.4450e-05

>> n=40000000; % Cuarenta millones>> tic; [a,b]=sparsesetup_J(n); tocElapsed time is 25.589597 seconds.>> tic; x=jacobi_S_1(a,b); tocElapsed time is 32.461714 seconds.>> norm(abs(x-ones(n,1)))ans =

1.4450e-05

Page 32: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

32/90

Índice

� Introducción

� Método de Jacobi

� Método de Gauss-Seidel

� Métodos de relajación

� Métodos de dirección de descenso

� Obtención de direcciones de descenso�Método de los gradientes conjugados

� Métodos de proyección en subespacios de Krylov

� Comparación numérica de los métodos

Page 33: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

33/90

Métodos no estacionarios. De direcciónde descenso

Teorema Sea A una matriz simétrica definida positiva. La solución de la ecuaciónAx D b es el vector para el cual la forma cuadrática

Q.x/ D 1

2xTAx � bTx

alcanza su mínimo.

� En consonancia, se puede resolver Ax D b mediante cualquier método queobtenga el mínimo4 de funciones como Q.x/.

4El valor de la función cuadrática en ese mínimo, solución de Ax D b, es Q.x�/ D � 12bTA�1b.

Page 34: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

34/90

� La condición necesaria de alcanzar un mínimo en x es

rf .x/ D

26666666664

@f .x/

@x1

@f .x/

@x2:::

@f .x/

@xn

37777777775D 0:

En nuestro problema, dado que A es simétrica, en el punto óptimo

Q0.x/ D 1

2ATx C 1

2Ax � b D 1

2

�AT CA

�x � b D Ax � b D 0;

que es lo que queremos encontrar.

� Como A es definida positiva ese mínimo es único.

Page 35: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

35/90

� El por qué de la unicidad. Como A es simétrica, consideremos un punto x quesatisfaga Ax D b, y que por lo tanto minimice la función Q.x/.

� Para un pequeño desplazamiento, d , desde ese punto en cualquier dirección, setiene que

Q.x C d/ D 12.x C d/T A .x C d/ � bT .x C d/

D 12xTAx C dTAx C 1

2dTAd � bTx � bTd

D 12xTAx � bTx C dTbC 1

2dTAd � bTd

D Q.x/C 12dTAd :

Como A es definida positiva, 12dTAd es positivo para todo d ¤ 0 y por

consiguiente cualquier punto mínimamente alejado del mínimo dará un valor dela función superior: el punto x es el único mínimo.

Page 36: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

36/90

� Consideremos la forma cuadrática

Q.x/ D 1

2Œx1 x2�

T

�3 2

2 6

� �x1x2

�� Œ2 � 8�T

�x1x2

-4 -3 -2 -1 0 1 2 3 4 5 6-6

-5

-4

-3

-2

-1

0

1

2

3

4

En las figuras se venla forma de Q.x/ ysus curvas de nivelen torno al mínimoŒ2;�2�T .

� La matriz de la forma cuadrática es definida positiva: Q.x/ tiene un mínimoúnico.

Page 37: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

37/90

� El vector gradiente de la función, rQ.x/, en diversos puntos en torno almínimo se ve así.

-4 -3 -2 -1 0 1 2 3 4 5 6-6

-5

-4

-3

-2

-1

0

1

2

3

4

El gradiente siempre apunta en la dirección de máxima pendiente, hacia arriba,y es ortogonal a las líneas de nivel.

Page 38: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

38/90� Otros casos de formas cuadráticas:

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

48/108

� Se pueden dar otros casos:The Quadratic Form 5

(c)

�1

�2

; . �<1�1

(d)

�1

�2

; . �<1�1

(a)

�1

�2

; . �<1�1

(b)

�1

�2

; . �<1�1

Figure 5: (a) Quadratic form for a positive-definite matrix. (b) For a negative-definite matrix. (c) For asingular (and positive-indefinite) matrix. A line that runs through the bottom of the valley is the set ofsolutions. (d) For an indefinite matrix. Because the solution is a saddle point, Steepest Descent and CGwill not work. In three dimensions or higher, a singular matrix can also have a saddle.

solution is a minimum of; . �M1 , so

���f�Hcan be solved by finding an

�that minimizes

; . �<1 . (If�

is notsymmetric, then Equation 6 hints that CG will find a solution to the system 1

2 . �6� ) �G1g�Y�h. Note that

12 . �6� ) �G1

is symmetric.)

Why do symmetric positive-definite matrices have this nice property? Consider the relationship between;at some arbitrary point i and at the solution point

�W�� 8 1 . From Equation 3 one can show (Appendix C1)that if

�is symmetric (be it positive-definite or not),; .ji 1=� ; . �M1 ) 1

2.ji *Y�<1 � � .ji *k�M1 � (8)

If�

is positive-definite as well, then by Inequality 2, the latter term is positive for all iYl�4�. It follows that�

is a global minimum of;

.

The fact that; . �M1 is a paraboloid is our best intuition of what it means for a matrix to be positive-definite.

If�

is not positive-definite, there are several other possibilities.�

could be negative-definite — the resultof negating a positive-definite matrix (see Figure 2, but hold it upside-down).

�might be singular, in which

case no solution is unique; the set of solutions is a line or hyperplane having a uniform value for;

. If�

is none of the above, then�

is a saddle point, and techniques like Steepest Descent and CG will likely fail.Figure 5 demonstrates the possibilities. The values of

and @ determine where the minimum point of the

paraboloid lies, but do not affect the paraboloid’s shape.

Why go to the trouble of converting the linear system into a tougher-looking problem? The methodsunder study — Steepest Descent and CG — were developed and are intuitively understood in terms ofminimization problems like Figure 2, not in terms of intersecting hyperplanes such as Figure 1.

x2x1

Q.x/

x2x1

Q.x/

x2x1

Q.x/

x2x1

Q.x/

� En (a) la matriz A es definida positiva, en (b) definida negativa, en (c)semidefinida positiva (singular) y en (d) indefinida.

� En (a) la matriz A es definida positiva, en (b) definida negativa, en (c)semidefinida positiva (singular) y en (d) indefinida.

Page 39: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

39/90

� Algoritmo general de dirección de descenso para minimizar f W Rn! R:

Dados Un x WD x.0/ y una tol . Hacer found WD false

while (not found) and (k < kmax)

Calcular dirección de descenso p.k/

if (p no existe) or (tol)found WD true

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

13/81

Métodos de dirección de descenso

4 Siguen un procedimiento iterativo que hace descender la función,f .xkC1/ < f .xk/ ; en sucesivos puntos k del proceso medianteel cálculo de una dirección de descenso en la que moverse con esteobjetivo.

x(

xk ˛pk

pk

x +1

4 Se diferencian unos de otros en la forma de calcular p.

k

else

˛ WD amplitud del paso a dar�x.k/;p.k/

�x.kC1/ WD x.k/ C ˛p.k/

endend

� Los métodos de descenso se diferencian unos de otros en la forma decalcular la dirección p.k/.

Page 40: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

40/90� La amplitud de paso óptima ˛ en cada punto se determina minimizando Q.x/a lo largo de la dirección p.k/:

mKın˛Q�x.k/ C ˛p.k/

�q(α)Q(x (k ))

x (k ) x (k ) + αkp (k )

� Este problema de optimización en una única variable, ˛, puede resolverseexplícitamente para funciones cuadráticas: Suprimiendo superíndices,

q.˛/ D Q.x C ˛p/ D 12.x C ˛p/TA.x C ˛p/ � bT .x C ˛p/

D 12xTAx C ˛pTAx C 1

2˛2pTAp � ˛pTb � bTx

D 12pTAp˛2 C pT .Ax � b/˛ C 1

2xT .Ax � 2b/:

� La forma q.˛/ se minimiza cuando q0.˛/ D 0. Como la matriz A es definidapositiva, pTAp > 0, el que q0.˛/ D 0 se da cuando

˛ D�p.k/

�T �b �Ax.k/

��p.k/

�TAp.k/

Page 41: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

41/90Obtención de direcciones de descensoRelajación de una variable

� Se usan como direcciones de descenso los vectores unitarios e1; : : : ; en; e1; : : :

Es decir,

p.0/ D e1; p.1/ D e2; : : : p.n�1/ D en; p.n/ D e1; : : :

� En la expresión anterior de ˛ con estas direcciones eTi Aei D ai i yeTi .Ax � b/ DPn

jD1 aijxj � bi . En una iteración k, el siguiente punto x.kC1/

estará dado por

x.kC1/ D x.k/ C ˛kei D x.k/ � 1

ai i

0@ nXjD1

aijx.k/j � bi

1A ei ;

expresión idéntica a la de método de Gauss-Seidel.

Page 42: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

42/90Relajación SOR

� La convergencia de un método de descenso x.kC1/ D x.k/C˛kp.k/ con ladirección y paso de Gauss-Seidel puede mejorarse si se le añade un parámetro derelajación !. La amplitud de paso será

˛k D ! Ok;donde Ok es el que hace mínimo Q.x/ D 1

2xTAx � bTx a lo largo de p.k/.

� El valor de la función cuadrática (simétrica) Q�x.k/ C ! Okp.k/

�es menor que

Q�x.k/

�, siempre y cuando 0 < ! < 2, como vimos, y ahora visualizamos.

Q(x (k )) Q(x (k ) + 2αp (k ))

x (k ) x (k) + ωα(k )p (k ) x (k ) + 2α(k )p (k )

Page 43: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

43/90

Máxima pendiente

� La aproximación de5 f W Rn! R en x por desarrollo en serie de Taylor es

f .x C p/ D f .x/Crf .x/Tp CO�kpk2� ;

donde rf .x/ D g es el gradiente de la función en x.

� Si de lo que se trata, alrededor de x, es determinar una dirección p a lo largode la cual la función decrece, se deberá cumplir que

rf .x/Tp < 0

Esto es así cuando el gradiente y la dirección forman un ángulo � tal que�

2< � � � .

5Continua y derivable en algún conjunto abierto de Rn.

Page 44: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

44/90

� El descenso relativo de la función en p es f .x/�f .xCp/

kpk D �rf .x/Tpkpk D

�krf .x/k cos � , donde � es el ángulo que forman p y rf .x/.

� El descenso será máximo cuando � D � . La dirección de máximo descenso,máxima pendiente, será entonces la opuesta del gradiente,

p D �g

� El método de la máxima pendiente lo introdujo el ingeniero y matemáticofrancés A.L.Cauchy en 1847.

Augustin Louis Cauchy, Francia 1789-1857.

Page 45: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

45/90� En la función cuadrática de referencia Q�x.k/

�, la dirección de máxima

pendiente en x.k/ es

p.k/ D �rQ �x.k/

� D � �Ax.k/ � b� D r .k/:

donde r .k/ es el vector de residuos.

� La fórmula de recurrencia que se obtiene6 con la máxima pendiente es entonces

x.kC1/ D x.k/ C ˛kr .k/

� El valor de ˛k que minimiza Q.x/ a lo largo de la máxima pendiente es(sustituyendo en la fórmula general que vimos la dirección por r .k/)

˛k D .r .k//Tr .k/

.r .k//TAr .k/

6Si A es diagonal, sus coeficientes iguales a uno y ˛k D 1, la fórmula de recurrencia define una iteración delmétodo de Jacobi.

Page 46: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

46/90

� La convergencia del método de la máxima pendiente para minimizar una funcióncuadrática es al menos lineal y se cumple que kx

.kC1/�x�kkx.k/�x�k �

�2.A/�1�2.A/C1 < 1.

� Cuanto más grande sea �2.A/ más lenta7 la convergencia.

� Convergencia lenta en funciones con un perfil dado es esto. El ir dando bandazosen el valle hacia la solución, en una función relativamente mal condicionada.

x(0)

7Recuérdese que si A es simétrica y definida positiva �2.A/ D �1

�n, donde �1 es el valor propio mayor (valor

propio dominante) y �n el menor.

Page 47: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

47/90� El algoritmo y un script de Matlab son los que siguen.

x.0/ 0I r.0/ bI k D 1while

r.k/ 2> "kbk2 do

˛k �r.k�1/

�Tr.k�1/

ı�r.k�1/

�TAr.k�1/

x.k/ x.k�1/ C ˛kr.k�1/

r.k/ r.k�1/ � ˛kAr.k�1/

k k C 1end

function [x,j]=Steep(A,b,x0)% Máxima pendiente para resolver Ax=bif nargin<3, x0=zeros(length(b),1); endj=0; x=x0; r=b-A*x; d=r’*r; tol=sqrt(eps)*norm(b);while sqrt(d)>tol

j=j+1;v=A*r;alpha=d/(r’*v);x=x+alpha*r;r=r-alpha*v;d=r’*r;

endend

� Resolvamos uno de los ejemplos anteriores:

>> A=[10 -1 2 0;-1 11 -1 3;2 -1 10 -1;0 3 -1 8];

>> b=[6;25;-11;15];>> [x k]=Steep(A,b)x =

1.00002.0000

-1.00001.0000

k =19

� Hace más iteraciones pero la precisión es más elevada: � p�.

Page 48: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

48/90� Retomemos la forma cuadrática

Q.x/ D 1

2Œx1 x2�

T

�3 2

2 6

� �x1x2

�� Œ2 � 8�T

�x1x2

>> A=[3 2;2 6];b=[2;-8];>> cond(A)ans =

3.5000>> [x k]=Steep(A,b)x =

2.0000-2.0000

k =31

Muchas iteraciones desde Œ0 0�T a pesar del número de condición bueno de A.

� Calculemos los valores y vectores propios de A:

>> [v lambda]=eig(A)v =

-0.8944 0.44720.4472 0.8944

lambda =2.0000 0

0 7.0000

es decir, no escalados, los vectores propios son Œ�2 1�T y Œ1 2�T .

Page 49: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

49/90

� Los vectores propios de A están orientados como los ejes del paraboloide queconforma la función cuadrática. Cada valor propio es proporcional a lainclinación de la pendiente de la función en la dirección de su correspondientevector propio.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

66/110

� Los vectores propios de A están orientados como los ejes del paraboloide queconforma la función cuadrática. Cada valor propio es proporcional a lainclinación de la pendiente de la función en la dirección de su correspondientevector propio.

-4 -2 2 4 6

-6

-4

-2

2

4

72

�1

�2

The eigenvectors of � are directed along the axes of theparaboloid defined by the quadratic form

��� ��� . Each eigen-vector is labeled with its associated eigenvalue.

x1

x2

Page 50: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

50/90

� Para obtener el mínimo de Q.x/ partamos ahora de sendos puntos más alejadosdel óptimo en las direcciones de los vectores propios: concretamente deŒ�2 0�T y Œ6 6�T .

>> [x k]=Steep(A,b,[-2;0])x =

2-2

k =1

>> [x k]=Steep(A,b,[6;6])x =

2-2

k =1

El procedimiento converge en una sola iteración.Si todos los valores propios fuesen iguales el procedimiento convergería en unaiteración.

� Se puede ensayar con otros puntos más o menos alejados en esas direcciones yel resultado será el mismo.

Page 51: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

51/90� Partamos ahora del punto Œ�2 � 2�T . Ocurre lo que parcialmente se ve en lafigura.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

66/102

� Partamos ahora del punto Œ�2 � 2�T . Ocurre lo que parcialmente se ve en lafigura.

0.2 0.4 0.6

20406080

100120140

-4 -2 2 4 6

-6

-4

-2

2

4

-4 -2 2 4 6

-6

-4

-2

2

4

-2.50

2.55

-5-2.50

2.5050100150

-2.50

2.55

(c)��� ���! #" � �%$&�' #"(�

�1

(d)�

2

�)�1"

�1

(a)�

2

���0" * �

0" �

(b)

�1

�2

��� ���

�1

The method of Steepest Descent.

x2

Q�x.k/ C ˛kr .k/

x1

x�x.0/x2

x1

x2

Q.x/

˛

x1x.1/

Page 52: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

52/90

� El camino hacia el óptimo es el que indica la figura.

>> A=[3 2;2 6];b=[2;-8];>> [x k]=Steep(A,b,[-2; -2])x =

2.0000-2.0000

k =27

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

61/97� El camino hacia el óptimo es el que indica la figura.

-4 -2 2 4 6

-6

-4

-2

2

4

�1

�2

�)�0" �

The method of Steepest Descent.

x1

x�x.0/

x2

Page 53: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

53/90

Método de los gradientes conjugados

Definición Dos vectores p y q que cumplen

pTAq D 0

son ortogonales con respecto al producto interior de A, hxjAyi D xTAy , definido por lamatriz A, diciéndose de ellos que son conjugados respecto a A, A conjugados e incluso A

ortogonales.

Proposición Sea A una matriz simétrica definida positiva. Si p.0/, p.1/; : : : ;p.k/ sonvectores A conjugados, son linealmente independientes.

� Si A D I , la conjugación es equivalente a la ortogonalidad tradicional.

Page 54: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

54/90

Teorema De las Direcciones Conjugadas Si A 2 Rn�n es una matriz simétrica definidapositiva y p.0/, p.1/; : : : ;p.n�1/ son A conjugados, para todo x.0/ 2 Rn, la sucesión devectores que define la expresión

x.kC1/ D x.k/ C ˛kp.k/;

donde

˛k D�b �Ax.k/

�Tp.k/

�p.k/

�TAp.k/

;

converge a la solución exacta de Ax D b en no más de n iteraciones.

� Es decir, teóricamente, los métodos basados en el cálculo de direccionesconjugadas son métodos directos aunque se usen como iterativos.

Page 55: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

55/90

� Si en la función cuadrática con la que trabajamos Q.x/ D 12xTAx � bTx, A es

diagonal, los contornos de la función son elipses cuyos ejes están alineados conlos ejes coordenados.

104 C H A P T E R 5 . C O N J U G A T E G R A D I E N T M E T H O D S

If xk is generated by algorithm (5.6), (5.7), then we have

xk � x0 + α0 p0 + α1 p1 + · · · + αk−1 pk−1.

By premultiplying this expression by pTk A and using the conjugacy property, we have that

pTk A(xk − x0) � 0,

and therefore

pTk A(x∗ − x0) � pT

k A(x∗ − xk) � pTk (b − Axk) � −pT

k rk .

By comparing this relation with (5.7) and (5.8), we find that σk � αk , giving the result. �

There is a simple interpretation of the properties of conjugate directions. If the matrixA in (5.2) is diagonal, the contours of the function φ(·) are ellipses whose axes are alignedwith the coordinate directions, as illustrated in Figure 5.1. We can find the minimizer of thisfunction by performing one-dimensional minimizations along the coordinate directions

.

*

e2

x0

e1

x1.

.x

Figure 5.1 Successive minimizations along the coordinate directions find theminimizer of a quadratic with a diagonal Hessian in n iterations.El mínimo de la función se puede encontrar sin más que minimizar primero a lo

largo de e1 y luego de e2.

Page 56: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

56/90

Cómo obtener direcciones conjugadas

� Las mejores son las de los vectores propios de A pero su cálculo es muy costoso.

� Lo más eficaz a día de hoy para obtenerlas es el método de los gradientesconjugados, propuesto en 1952 por M.R. Hestenes y E. Stiefel.

M.R. Hestenes, Estados Unidos, 1906-1991 y E. Stiefel,Suiza, 1909-1978.

� En él se generan una sucesión de direcciones A conjugadas que sean próximas ala de máxima8 pendiente.

8El negativo del gradiente: �g D �.Ax � b/ D b �Ax D r, vector de residuos.

Page 57: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

57/90

� Se empieza con la de máxima pendiente, p.0/ D r .0/.

� Las siguientes, p.k/, serán una combinación de r .k/ y la dirección previa, p.k�1/,es decir

p.k/ D r .k/ C ˇkp.k�1/;

de tal forma que p.k/ y p.k�1/ sean A conjugadas: p.k/TAp.k�1/ D 0.

� Trabajando un poco esa condición, se ha de cumplir que

ˇk D ��p.k�1/�T Ar .k/

��p.k�1/�T Ap.k�1/

Page 58: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

58/90

� El despliegue iterativo tiene esta forma.

Escoger un x.0/. Hacer p.0/ D r .0/ D b �Ax.0/

for k D 0, 1, : : :˛k D

�r .k/

�Tp.k/

ı �p.k/

�TAp.k/

x.kC1/ D x.k/ C ˛kp.k/

r .kC1/ D r .k/ C ˛kAp.k/

ˇk D ��p.k/

�TAr .kC1/

ı �p.k/

�TAp.k/

p.kC1/ D r .kC1/ C ˇkp.k/

end

� El primer paso es el de la máxima pendiente.

� El procedimiento sólo requiere productos de matrices por vectores y de vectoresentre sí.

Page 59: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

59/90Teorema Sea A una matriz n�n simétrica definida positiva y Ox la solución de la ecuación Ax D b.Los vectores p.k/ generados por el algoritmo de los gradientes conjugados son A conjugados, es decir,�

p.k/�TAp.j / D 0; 0 � j < k; k D 1; : : : ; n � 1,

siendo p.k/ ¤ 0 a menos que sea x.k/ D Ox. De esta manera, x.m/ D Ox para algún m � n. Además losvectores residuo r.j / D b � Ax.j / satisfacen

�r.k/

�Tr.j / D 0; 0 � j < k; k D 1; : : : ; n � 1; es decir, son

ortogonales.

Teorema Sean p.0/, p.1/; : : : ;p.n�1/ los vectores de dirección que genera el algoritmo de los gra-dientes conjugados y r.0/, r.1/; : : : ; r.n�1/ los vectores residuo. Se cumple que

Ap.i/ 2 �p.0/ p.1/ : : : p.iC1/

�; i D 0; : : : ; n � 2I

r.i/ 2 �p.0/ p.1/ : : : p.i/

�; i D 0; : : : ; n � 1I�

p.0/ p.1/ : : : p.i/� D �

p.0/ Ap.0/ : : : Aip.0/�

D �r.0/ Ar.0/ : : : Air.0/

�; i D 0; : : : ; n � 1:

Es decir, generan el subespacio de Krylov KiC1.A;p.0//.

Teorema Si A tiene sólo m valores propios distintos el método de los gradientes conjugados convergeen un máximo de m iteraciones.

Teorema El punto obtenido en la iteración k del método de los gradientes conjugados cumple que x� � x.k/ A� 2

�p�2 � 1p�2 C 1

�k x� � x.0/ A x� � x.k/

2� 2

p�2

�p�2 � 1p�2 C 1

�k x� � x.0/ 2;

donde kxkA D xTAx y �2 D �1

�nes el número de condición 2 de A.

Page 60: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

60/90� Los dos primeros resultados son fundamentales para entender geométricamenteel método de los gradientes conjugados.

� Los vectores p y residuo r de cada iteración no son ortogonales entre si. Losresiduos de una iteración son siempre ortogonales a los residuos y a los vectoresp de las previas. Los p son A ortogonales. Al comienzo el vector p coincidecon el vector de residuos. En tres dimensiones:

=

� Los vectores p y de residuos r forman bases ortogonales en los sucesivossubespacios de Krylov que se generan en el proceso iterativo.

Page 61: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

61/90

� Ejemplo Se trata de resolver Ax D b, donde

A D�2 0

0 3

�y b D

�4

1

�:

La líneas de nivel del paraboloide elíptico f .x1; x2/ D z y el óptimo se ven así.

-2 -1 0 1 2 3 4 5 6-4

-3

-2

-1

0

1

2

3

4

Page 62: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

62/90� La mecánica de los gradientes conjugados para este ejemplo es ésta:

1. Desde el punto x.0/ D 1 se determina la curva de nivel de la función

f .x.0// D 1

2

�x.0/

�TAx.0/ � bTx.0/

D�x.0/1

�2C 3

2

�x.0/2

�2� 4x.0/1 � x.0/2 D cte:

La constante será �2;5.2. Se traza la tangente en x.0/ a esta elipse y su normal en este punto p.0/:

p.0/ D�1

�1�:

La primera dirección es la de máxima pendiente: b �Ax D Œ2;�2�T .

-2 -1 0 1 2 3 4 5 6-4

-3

-2

-1

0

1

2

3

4

Page 63: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

63/903. Se calcula el ˛1 óptimo: el punto medio, x.1/, del segmento de recta queva desde x.0/ hasta el punto donde p.0/ corta a esa elipse: x.1/ D Œ1;8 0;2�T .

-2 -1 0 1 2 3 4 5 6-4

-3

-2

-1

0

1

2

3

4

4. Desde x.1/ se determina la nueva elipse:

f .x.1// D�x.1/1

�2C 32

�x.1/2

�2� 4x.1/1 � x.1/2 D �4;1:

5. En x.1/ se calcula la dirección p.1/ que es A conjugada con respecto a p.0/.Pasará por el centro de la nueva elipse uniendo x.1/ con el diametralmenteopuesto por el que se podría trazar una tangente a esta elipse paralela a p.0/.La nueva dirección es

p.1/ D�3

2

-2 -1 0 1 2 3 4 5 6-4

-3

-2

-1

0

1

2

3

4

Page 64: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

64/906. Comprobar que�p.1/

�TAp.0/ D 0 es inmediato:

Œ3; 2�

�2 0

0 3

� �1

�1�D 0:

También, de la fórmula de recurrencia:

p.1/ D r .1/ C ˇp.0/ D�0;4

0;4

�C ˇ

�2

�2�

y ˇ �k

�k�1D 0;42 C 0;42

22 C 22 :

De aquí que p.1/ D�0;4

0;4

�C 0;04

�2

�2�D�0;48

0;32

���3

2

�.

-2 -1 0 1 2 3 4 5 6-4

-3

-2

-1

0

1

2

3

4

Page 65: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

65/907. Se determina el punto medio, x.2/, de ese diámetro. La solución delproblema es este nuevo punto:

x.2/ D�2

1=3

�:

x1

x2

x(0)

p(0)

x(1)

x(2)

p(1)

1

1 2 3

.............

........................................................................................

................................. ...........

...... ................ ................. ................. ............... ................. ................ ................ ................ ...................................................................................................................

..........................................................................................................................................................................................................

..............................

...................................

................................................ ...........

..........................................................................................................................................................................................................................

Page 66: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

66/90

Implementación práctica de los gradientes conjugados

� Los errores inherentes a la implementación en ordenador del método hacen quese pierda la ortogonalidad de los vectores residuo:La propiedad de que el método converge en un número fijo de pasos no secumple por ello en la práctica estrictamente, por lo que el método de los

gradientes conjugados se considera un método iterativo.

� La implementación más habitual para ahorrar operaciones es esta.

x.0/ 0I r.0/ b �Ax.0/I �0 r.0/T

r.0/I k D 0Ip.0/ r.0/

while p�k > � � �0 dok k C 1w Ap.k�1/

˛ �k�1ı �

p.k�1/�T

w

x.k/ x.k�1/ C ˛p.k�1/

r.k/ r.k�1/ � ˛w

�k r.k/T

r.k/

ˇ �kı�k�1

p.k/ r.k/ C ˇp.k�1/

end

function [x k]=CGr(A,b,x0)% Gradientes Conjugadosif nargin<3, x0=zeros(length(b),1); endk=0; x=x0; r=b-A*x; d=r’*r; p=r; tol=sqrt(eps)*d;while d>tol

k=k+1;v=A*p;alpha=d/(p’*v);x=x+alpha*p;r=r-alpha*v;beta=d; d=r’*r;beta=d/beta;p=r+beta*p;

endend

Page 67: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

67/90

� Para resolver uno de los ejemplos una vez más:

>> A=[10 -1 2 0;-1 11 -1 3;2 -1 10 -1;0 3 -1 8];>> b=[6;25;-11;15];>> [x k]=CGr(A,b,zeros(4,1))x =

1.00002.0000

-1.00001.0000

k =4

La 4 iteraciones contrastan con las 19 del método de la máxima pendiente.

Page 68: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

68/90� Los puntos del proceso iterativo que se obtienen para resolver

4x1 � x2 � x4 D 0�x1 C 4x2 � x3 � x5 D 5

� x2 C 4x3 � x6 D 0�x1 C 4x4 � x5 D 6

� x2 � x4 C 4x5 � x6 D �2� x3 � x5 C 4x6 D 6

son estos

>> A=[4 -1 0 -1 0 0;-1 4 -1 0 -1 0;0 -1 4 0 0 -1;...-1 0 0 4 -1 0;0 -1 0 -1 4 -1;0 0 -1 0 -1 4]A =

4 -1 0 -1 0 0-1 4 -1 0 -1 00 -1 4 0 0 -1

-1 0 0 4 -1 00 -1 0 -1 4 -10 0 -1 0 -1 4

>> b=[0;5;0;6;-2;6];>> [x k]=CGr(A,b)x =

01.069915254237288

01.283898305084746

-0.4279661016949151.283898305084746

x =1.0223756706686241.6864518923080631.0223756706686242.0609195678848980.8310997762432932.060919567884898

x =0.9907832820475931.9916351376539800.9907832820475932.0053245062998071.0118246060372202.005324506299807

x =1.0000000000000002.0000000000000001.0000000000000002.0000000000000001.0000000000000002.000000000000000

k =4

k 0 1 2 3 4

x.k/1 0,000000 0,000000 1,022376 0,990783 1,000000x

.k/2 0,000000 1,069915 1,686452 1,991635 2,000000x

.k/3 0,000000 0,000000 1,022376 0,990783 1,000000x

.k/4 0,000000 1,283898 2,060920 2,005324 2,000000x

.k/5 0,000000 -0,427966 0,831099 1,011825 1,000000x

.k/6 0,000000 1,283898 2,060920 2,005324 2,000000

Page 69: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

69/90

� Si también se resuelve con ese código el problema que ha permitido ilustrargeométricamente el método, el resultado que se obtiene es el que sigue.

1 1.800000 2.000000e-01 2.000000 -2.0000002 2.000000 3.333333e-01 4.800000e-01 3.200000e-01

� Las dos últimas columnas indican los coeficientes 1 y 2 del vector p.k/.Coinciden en dirección (y en magnitud) con las que se obtuvieron a mano:

p.0/ D�1

�1���2

�2�

p.1/ D�3

2

���0;48

0;32

�:

Page 70: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

70/90

Método de los gradientes conjugados con precondicionado

� El precondicionado sustituye A por una QA con mejor número de condiciónhaciendo un cambio de variable Qx D C x, donde C es regular y fácil de invertir.

� La forma cuadrática Q.x/ quedaría

Q. Qx/ D 1

2QxT �C �TAC �1

� Qx � �C �Tb�T Qx:

Si se resuelve con gradientes conjugados el sistema�C �TAC �1

� Qx D C �Tb lasolución original se obtendría sin más que hacer x D C �1 Qx.

� Si A es simétrica, la mejor C posible es A1=2, pues en ese caso

QA D �A�1=2�T AA�1=2 D A�1=2A1=2A1=2A�1=2 D I � I D I :

Page 71: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

71/90� En la implementación práctica, la diferencia con y sin precondicionado es laresolución en cada iteración el sistema Mz D r , donde M D C TC .

x.0/ 0I r.0/ b �Ax.0/I �0 r.0/T

r.0/I k D 0Resolver Md D r.0/; ın r.0/

Td

while p�k > � � �0 dow Ad

˛k ın=dTw

x.kC1/ x.k/ C ˛kd

r.kC1/ r.k/ � ˛kw

Resolver M s D r.kC1/

ıo ın; ın r.kC1/T

s

ˇkC1 ın=ıod sC ˇkC1d�kC1 ınk k C 1

end

function [k tol x]=PCGr(A,b,x0,M)% Gradientes Conjugados con precondicionado Mk=0; x=x0; r=b-A*x; tol=eps*norm(b)d=M\r; dn=r’*d;

while dn>tolw=A*d;alpha=dn/(d’*w);x=x+alpha*d;r=r-alpha*w;if mod(k,50)==0, r=b-A*x; ends=M\r;do=dn; dn=r’*s;beta=dn/do;d=s+beta*d;k=k+1;

endend

Verificamos:

>> A=rand(400);>> A=A+A’;>> B=A*A; % Matriz simétrica>> b=B*ones(400,1); % Vector solución de unos>> [k tol]=PCGr(B,b,zeros(400,1),eye(400)) % Se resuelve sin precondicionadok =

740tol =

7.1453e-010>> [k tol]=PCGr(B,b,zeros(400,1),A) % Con precondicionado perfectok =

1tol =

7.1453e-010

NVIDIA developer zone

Page 72: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

72/90

Métodos de subespacios de Krylov Alekxey Krylov,Rusia 1863-1945.

� De nuevo, si para resolver Ax D b se hace A D I � .I �A/ el sistema queda.I � .I �A//x D b. Una ley de recurrencia sería xk D .I �A/xk�1 C b.

� Con esa idea, si el vector residuos es rk�1 D b �Axk�1, xk D xk�1 C rk�1,de forma recurrente, xk D x0 C r0 C r1 C � � � C rk�1:

� De b �Axk D b �Axk�1 �Ark�1 te obtiene que rk D .I �A/rk�1 y asíxk D x0 C

�r0 C .I �A/r0 C � � � C .I �A/k�1r0

� D x0 C pk�1.A/polinom. en A

r0

D x0 C�r0 Ar0 : : : Ak�1r0

�c D x0 C xad :

� En resumen, todo punto del proceso iterativo xk se puede expresar como lasolución de partida x0 más una combinación lineal de los vectores columna quedefinen el subespacio de Krylov Kk.A; r0/ D Gen

˚r0;Ar0;A

2r0; : : : ;Ak�1r0

.

Page 73: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

73/90

� Los métodos de proyección en subespacios de Krylov (no estacionarios) mejoranuna estimación inicial de la solución proyectándola, en cada iteración k, en elsubespacio de Krylov generado por el vector residual inicial y sus k � 1sucesivos productos por la matriz A.

� En ese Kk.A; r0/, con rk D b �Axk, calculan el mejor xk que haga:

a. mKın kAxk � bk2 en Kk.Si A es simétrica los algoritmos se denominan MINRES y SYMMLQ; sino GMRES.

b. rk?Kk, condición de Galerkin.Como rk D b �Axk D �A .xk � x/ D �Aek, eso equivale a Aek?Kk.Si A no es simétrica los algoritmos se denominan FOM; si es SDP, CG.

c. Otros: Biortogonalización, Gradiente Biconjugado, : : : con subespacio deproyección Kk.A

T ; r0/, etc.

Page 74: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

74/90� Como al multiplicar una matriz por un vector éste tiende a orientarse en ladirección del vector propio dominante de esa matriz, en un subespacio de Krylovlos vectores de base tienden a una dirección común cuando k es grande.

� Obtener una buena base de ese subespacio necesitará del mejor método paraortogonalizar los vectores correspondientes.

Page 75: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

75/90Métodos GMRES para matrices no simétricas

� Su esquema general9 es:

� Algoritmo del residuo mínimo generalizado GMRES �Escoger un x0 cualquiera; r0 D b �Ax0q1 D r0= kr0k2for k D 1; 2; : : : � Algoritmo de Arnoldi �

y D Aqkfor j D 1 to k

hjk D qHj y

y D y � hjkqjendhkC1;k D kyk2if hkC1;k D 0, stop, endqkC1 D y=hkC1;k

Resolver minimizarck2Rk

H ck � Œkr0k2 0 0 : : : 0�T 2

xk D Qkck C x0end

� Se basa en obtener en cada iteración una base ortonormalizada de Gen fr0;Ar0;A

2r0; : : : ;Akr0mediante una especialización de Gram-Schmidt: el

algoritmo de Arnoldi —por Walter Edwin Arnoldi, EE.UU., 1917-1995.—

9De Generalized Minimal Residual Method.

Page 76: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

76/90

� Comienza con q1 D r0=kr0k2 como base de K1.A; r0/. La base se conformaen el ciclo interior del algoritmo de la tabla anterior: en la iteración k se10

obtendría AQk D QkC1H k, es decir,

A

266664 q1 � � � qk

377775 D

266664 q1 � � � qk qkC1

377775

2666664

h11 h12 � � � h1kh21 h22 � � � h2k

h32 � � � h3k: : :

:::

hkC1;k

3777775

donde Qk abarca el subespacio de Krylov k-dimensional.

� El nuevo vector que se introduce en la base en esa iteración es

qkC1 D Aqk � .h1kq1 C � � � C hkkqk/ = kqkC1k„ ƒ‚ …hkC1;k

:

10A es n � n, Qk n � k, QkC1 n � .k C 1/ y H k .k C 1/ � k.

Page 77: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

77/90

� El vector xk D x0 C xad , que minimice kAxk � bk2 en Kk.A; r0/, conxad D Qkc, saldrá de resolver el problema de mínimos cuadrados

mKın kAxk � bk2DmKın kA.x0 C xad / � bk2 D mKın kAQkc � r0k2 D mKın kQkC1H kc � r0k2DmKın kH kc �QT

kC1r0k2:

� Como q1 D r0= kr0k2 y todas las columnas de QkC1 son ortogonales respectoa r0, QT

kC1r0 D Œkr0k2 0 0 � � � 0�T . El problema de mínimos cuadrados de cadaiteración es 2

6664

h11 h12 � � � h1kh21 h22 � � � h2k

h32 � � � h3k: : :

:::

hkC1;k

37775

264c1c2:::

ck

375 D

264kr0k20:::

0

375

que habrá que resolver con alguno de los algoritmos conocidos.

Page 78: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

78/90� Un código sencillo que lo implementa y un programa de prueba son:

function [x,normrn] = gmres_1(A,b,maxiter)% solves Ax = b using gmres% input: A - m by m matrix% b - m by 1 vector% output: x - approximate solution% normrn - norm(b-A*x) at each step of algorithm% Plot also normrn/ norm(b) versus n (step number)Q = []; H = 0;normb = norm(b); normrn=normb;Q(:,1) = b/normb;

for n = 1:maxiter% Arnoldi step calculationsv = A*Q(:,n);for j = 1:n

H(j,n) = Q(:,j)’* v;v = v - H(j,n)*Q(:,j);

endHn = H(1:n,1:n);H(n+1,n) = norm(v);if H(n+1,n) == 0, break, end % breakdown so stopQ(:,n+1) = v/H(n+1,n);e1 = [1;zeros(n,1)];y = H\(normb*e1); % This can be done better via Givens rotations.

% For simplicity we use Matlab’s \normrn = [normrn,norm(H*y-normb*e1)]; % residual norm

endx = Q(:,1:n)*y;semilogy(0:n,normrn/normb,’--o’),shgxlabel(’step number of gmres algorithm’)ylabel(’norm(b-A*xn)/norm(b)’)title(’convergence of residual in gmres’)grid

end

function A=eigmat(n,n1,m)A=n*eye(m)+n1*randn(m)/sqrt(m);

end

function gmres_pru_1(n)% Prueba de gmresmaxiter = 15; m=500;if n==1 % example 35.1 from Trefethen + Bau

A=eigmat(2,.5,m);else % example 35.2 from Trefethen + Bau

th = (0:m-1)*pi/(m-1);d=(-2+2*sin(th))+sqrt(-1)*cos(th);A=eigmat(2,.5,m)+diag(d);

endlam=eig(A);figure(1)plot(lam,’x’);axis squaretitle(’eigenvalues of A’)ylabel(’imag part’)xlabel(’real part’)gridxtrue=randn(m,1);b = A*xtrue;figure(2)[x,normrn]=gmres_1(A,b,maxiter)max(abs(x-xtrue))

end

Page 79: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

79/90

� Veamos los resultados.

>> tic,gmres_pru_1(1),tocx =

-0.9839-0.8804. . .0.11300.2380

normrn =Columns 1 through 943.3631 9.4160 2.3040 0.5540 0.1420 0.0359 0.0093 0.0023 0.0005

Columns 10 through 160.0001 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000

ans =2.1480e-09

Elapsed time is 0.202705 seconds.>> tic,gmres_pru_1(2),tocx =

1.3233 + 0.0862i. . . . . .

0.8958 - 0.0122inormrn =

Columns 1 through 935.6532 18.7445 14.1824 11.5050 9.5051 7.4059 5.7802 4.6176 3.6286

Columns 10 through 162.7824 2.1495 1.6563 1.2601 0.9463 0.7550 0.5899

ans =0.1104

Elapsed time is 0.479878 seconds.

Page 80: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

80/90� Los gráficos que se obtienen.

Page 81: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

81/90

GMRES con precondicionado

� La idea es mejorar con un precondicionador M el número de condición de lamatriz del sistema A. Las variaciones en el algoritmo son menores

� Algoritmo del residuo mínimo generalizado GMREScon precondicionado �

Escoger un x0 cualquiera; r0 DM�1 .b �Ax0/

q1 D r0= kr0k2for k D 1; 2; : : : � Algoritmo de Arnoldi �

y DM�1Aqk � Precondicionado

for j D 1 to khjk D qHj y

y D y � hjkqjendhkC1;k D kyk2if hkC1;k D 0, stop, endqkC1 D y=hkC1;k

Resolver minimizarck2Rk

H ck � Œkr0k2 0 0 : : : 0�T 2

xk D Qkck C x0end

function [x,normrn] = Gmres_1_precon(A,b,maxiter,M)% solves Ax = b using gmres% input: A - m by m matrix% b - m by 1 vector% output: x - approximate solution% normrn - norm(b-A*x) at each step of algorithm% Plot also normrn/ norm(b) versus n (step number)Q = []; H = 0; if nargin<4, M=eye(size(A)); endb=M\b; normb = norm(b); normrn=normb;Q(:,1) = b/normb;

for n = 1:maxiter% Arnoldi step calculationsv = M\(A*Q(:,n));for j = 1:n

H(j,n) = Q(:,j)’* v;v = v - H(j,n)*Q(:,j);

endHn = H(1:n,1:n);H(n+1,n) = norm(v);if H(n+1,n) == 0, break, end % breakdown so stopQ(:,n+1) = v/H(n+1,n);e1 = [1;zeros(n,1)];y = H\(normb*e1); % This can be done better via Givens rotations.

% For simplicity we use Matlab’s \normrn = [normrn,norm(H*y-normb*e1)]; % residual norm

endx = Q(:,1:n)*y;semilogy(0:n,normrn/normb,’--o’),shgxlabel(’step number of gmres algorithm’)ylabel(’norm(b-A*xn)/norm(b)’)title(’convergence of residual in gmres’)grid

end

Page 82: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

82/90� Si al ejemplo anterior que tenía peor comportamiento de convergencia leaplicamos precondicionado, con11 M D diag.A/, resultaría lo que sigue.

>> tic,gmres_pru_1_precon(2),tocx =

-2.3449 - 0.0000i. . . . . .

1.1634 - 0.0000i0.0737 + 0.0000i

normrn =Columns 1 through 922.9513 6.8163 2.4022 0.8430 0.2955 0.1046 0.0372 0.0132 0.0045Columns 10 through 16

0.0016 0.0006 0.0002 0.0001 0.0000 0.0000 0.0000ans =

6.3526e-07Elapsed time is 0.547985 seconds.

function gmres_pru_1_precon(n)% Prueba de gmres

m=500; maxiter = 15;if n==1 % example 35.1 from Trefethen + Bau

A=eigmat(2,.5,m);else % example 35.2 from Trefethen + Bau

th = (0:m-1)*pi/(m-1); d=(-2+2*sin(th))+sqrt(-1)*cos(th);A=eigmat(2,.5,m)+diag(d);

endlam=eig(A); figure(1), plot(lam,’x’);axis square, title(’eigenvalues of A’)ylabel(’imag part’), xlabel(’real part’), gridxtrue=randn(m,1); b = A*xtrue;figure(2)[x,normrn]=Gmres_1_precon(A,b,maxiter,diag(diag(A)))max(abs(x-xtrue))

endfunction A=eigmat(n,n1,m)A=n*eye(m)+n1*randn(m)/sqrt(m);

end

11El precondicionador de Jacobi.

Page 83: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

83/90� Un código mucho más robusto y completo que implementa el método GMRES,es éste.

function [x, error, iter, flag] = gmres_Netlib( A, x, b, M, restrt, max_it, tol )%% gmres.m solves the linear system Ax=b% using the Generalized Minimal residual ( GMRESm ) method with restarts .%% input A REAL nonsymmetric positive definite matrix% x REAL initial guess vector% b REAL right hand side vector% M REAL preconditioner matrix% restrt INTEGER number of iterations between restarts% max_it INTEGER maximum number of iterations% tol REAL error tolerance%% output x REAL solution vector% error REAL error norm% iter INTEGER number of iterations performed% flag INTEGER: 0 = solution found to tolerance% 1 = no convergence given max_it

iter = 0; flag = 0; % initializationbnrm2 = norm( b );if ( bnrm2 == 0.0 ), bnrm2 = 1.0; end

r = M \ ( b-A*x );error = norm( r ) / bnrm2;if ( error < tol ), return, end

[n,n] = size(A); % initialize workspacem = restrt;V(1:n,1:m+1) = zeros(n,m+1);H(1:m+1,1:m) = zeros(m+1,m);cs(1:m) = zeros(m,1); sn(1:m) = zeros(m,1);e1 = zeros(n,1); e1(1) = 1.0;

for iter = 1:max_it % begin iteration

r = M \ ( b-A*x );V(:,1) = r / norm( r );s = norm( r )*e1;for i = 1:m % construct orthonormal

w = M \ (A*V(:,i)); % basis using Gram-Schmidtfor k = 1:i,

H(k,i)= w’*V(:,k);w = w - H(k,i)*V(:,k);

endH(i+1,i) = norm( w );V(:,i+1) = w / H(i+1,i);for k = 1:i-1 % apply Givens rotation

temp = cs(k)*H(k,i) + sn(k)*H(k+1,i);H(k+1,i) = -sn(k)*H(k,i) + cs(k)*H(k+1,i);H(k,i) = temp;

end[cs(i),sn(i)] = rotmat( H(i,i), H(i+1,i) ); % form i-th rotation matrixtemp = cs(i)*s(i); % approximate residual norms(i+1) = -sn(i)*s(i);s(i) = temp;H(i,i) = cs(i)*H(i,i) + sn(i)*H(i+1,i);H(i+1,i) = 0.0;error = abs(s(i+1)) / bnrm2;if ( error <= tol ) % update approximation

y = H(1:i,1:i) \ s(1:i); % and exitx = x + V(:,1:i)*y;break;

endend

if ( error <= tol ), break, endy = H(1:m,1:m) \ s(1:m);x = x + V(:,1:m)*y; % update approximationr = M \ ( b-A*x ); % compute residuals(i+1) = norm(r);error = s(i+1) / bnrm2; % check convergenceif ( error <= tol ), break, end;

endif ( error > tol ) flag = 1; end; % convergedend% END of gmres.m

Page 84: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

84/90Métodos de proyección para matrices simétricas

� Se centran en obtener en cada iteración el valor que haga que el vector residuosea ortogonal al subespacio de Krylov generado hasta esa iteración, lo quequiere decir en términos especializados, que se cumpla la Condición de Galerkin:

r D Axk � b? Kk.A; r0/:Boris Grigoryevich Galerkin,Rusia 1871-1945.

� Utilizan como base de los cálculos el algoritmo de Lanczos.

Cornelius Lanczos (Kornel Lowy), Hungría1893-1974.

� Si la matriz es definida positiva los algoritmos resultantes son casi idénticos almétodo de los gradientes conjugados. De hecho, el algoritmo de los gradientesconjugados es el de Lanczos aplicado al vector de partida r0=kr0k.

Page 85: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

85/90� El algoritmo de Lanczos, después de k pasos, genera una matriz tridiagonal:

QTk AQk D T k donde T k D

2666664

˛1 ˇ1 � � � 0

ˇ1 ˛2: : :

:::: : : : : : : : :

:::: : : : : : ˇk�1

0 � � � ˇk�1 ˛k

3777775

� Resolver Ax D b conlleva�QTAQ

� �QTx

� D QTb, lo que resulta enT QTx D Œkbk; 0; : : : ; 0�T . El algoritmo queda, con A definida positiva, así:

� Método basado en Lanczospara resolver Ax D b �

q0 D b; ˇ0 D 0q1 D b= kbk2for k D 1; 2; : : : � Algoritmo de Lanczos �

uk D Aqk˛k D qH

kuk

uk D uk � ˇk�1qk�1 � ˛kqkˇk D kukk2qkC1 D uk=ˇk

endx D QT �1 kbk2 e1

Page 86: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

86/90� Este es un código (sin grandes pretensiones ni eficiencia) que lo implementa.

function [x,V,T] = Lanczos_1_1(A,k,b)% Soluton of Ax = b via a CG Lanczos type algorithm% Input: A -- an n by n symmetric matrix% k -- a positive integer (k << n assumed)% Output: x -- solution of Ax=b% V -- an n by k orthogonal matrix (optional)% T -- a k by k symmetric tridiagonal matrix (optional)%n = length(b); T = zeros(k); V = zeros(n,k); bn=norm(b);q = b/bn; u = A*q; alpha = q’*u;u = u - q*alpha;V(:,1) = q; T(1,1) = alpha;for j = 2:k,

beta = norm(u);q0 = q; q = u/beta;u = A*q - q0*beta;alpha = q’*u;u = u - q*alpha;T(j,j-1) = beta; T(j-1,j) = beta; T(j,j) = alpha;V(:,j) = q;

endx=V*(T\[bn zeros(1,k-1)]’);

end

� Veamos alguna prueba con él:

>> A=rand(10);>> A=A*A’; % Matriz simétrica def. positiva>> b=A*ones(10,1);>> [x] = Lanczos_1_1(A,8,b) % 8 iteraciones de Lanczos>> norm(x)-norm(ones(10,1))ans =

-0.001890199589387>> [x] = Lanczos_1_1(A,11,b) % 11 iteraciones de Lanczos>> norm(x)-norm(ones(10,1))ans =

2.463820703013653e-09

Page 87: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

87/90� Un algoritmo comercial más completo del SOL (Stanford) es este.function [ x, istop, itn, Anorm, Acond, rnorm, xnorm, D ] = ...

cgLanczos_1( A, b, show, itnlim, rtol )% cgLanczos solves the system of linear equations Ax = b,% where A is an n x n positive-definite symmetric matrix% and b is a given n-vector, where n = length(b).%% On entry:% show (true/false) controls the iteration log.% itnlim (integer) limits the number of iterations.% rtol (e.g. 1e-8) is the requested accuracy. Iterations% terminate if rnorm < (Anorm*xnorm)*rtol.%% On exit:% x (n-vector) is the solution estimate% istop (0--6) gives reason for termination (see "msg" below)% itn (integer) is the number of CG iterations% Anorm estimates the Frobenius norm of A% Acond estimates the condition of A (in F-norm)% rnorm estimates the residual norm: norm(r) = norm(b-Ax)% xnorm is the exact norm(x)% D (n-vector) estimates diag(inv(A)).% Code author: Michael Saunders, SOL, Stanford University.% Reference C. C. Paige and M. A. Saunders (1975),% Solution of sparse indefinite systems of linear equations,% SIAM J. Numer. Anal. 12(4), pp. 617-629.%---------------------------------------------------------------------n = length(b);if show

fprintf(’\n’)fprintf(’\n Enter cgLanczos. Solution of symmetric Ax = b’)fprintf(’\n n = %6g itnlim = %6g rtol = %11.2e’, n,itnlim,rtol)

end

istop = 0; itn = 0;Anorm = 0; Acond = 0; x = zeros(n,1);xnorm = 0; D = zeros(n,1);%------------------------------------------------------------------% Set up the first Lanczos vector v.%------------------------------------------------------------------done = false;beta1 = norm(b);if beta1==0

istop = 0; done = true; show = true; % b=0 exactly. Stop with x = 0.else

v = (1/beta1)*b;end

beta = beta1; rnorm = beta1;Tnorm2 = 0; Wnorm2 = 0;if show

fprintf(’\n\n Itn x(1) norm(r) norm(x) norm(A) cond(A)’)fprintf(’\n %6g %12.5e %10.3e’, itn, x(1), beta1)

end

%---------------------------------------------------------------------% Main iteration loop.% --------------------------------------------------------------------if ~done % k = itn = 1 first time through

while itn < itnlimitn = itn + 1;%-----------------------------------------------------------------% Obtain quantities for the next Lanczos vector vk+1, k = 1, 2,...% The general iteration is similar to the case k = 2.% p =A*v2; alpha2=v2’*p; p=p - alpha2*v2 - beta2*v1; beta3=norm(p)% v3=(1/beta3)*p.%-----------------------------------------------------------------p = A*v;if itn>1, p = p - beta*v1; endalpha = v’*p; % alpha = v’Av in theoryif alpha<=0, istop = 6; break; end % A is indefinite or singularp = p - alpha*v;oldb = beta; % oldb = betakbeta = norm(p); % beta = betak+1beta = max(beta,eps); % Prevent divide by zerov1 = v;v = (1/beta)*p;

if itn==1 % Initialize a few things.delta = sqrt(alpha); gamma = beta /delta;zeta = beta1/delta; w = v1 /delta;x = zeta*w; D = w.^2; Tnorm2 = alpha^2 + beta^2;

else % Normal case (itn>1)delta = alpha - gamma^2;if delta<=0, istop = 6; break; end % Tk is indefinite or singulardelta = sqrt(delta);zeta = - gamma*zeta/delta;w = (v1 - gamma*w )/delta;x = x + zeta*w;D = D + w.^2;gamma = beta /delta;Tnorm2 = Tnorm2 + alpha^2 + oldb^2 + beta^2;

end

%-----------------------------------------------------------------% Estimate various norms and test for convergence.%-----------------------------------------------------------------Wnorm2 = Wnorm2 + norm(w)^2;Anorm = sqrt( Tnorm2 );Acond = Anorm * sqrt(Wnorm2);xnorm = norm(x);rnorm = abs(beta*zeta/delta);test1 = rnorm / (Anorm*xnorm); % ||r|| / (||A|| ||x||)

% See if any of the stopping criteria are satisfied.if itn >= itnlim , istop = 4; endif Acond >= 0.1/eps, istop = 3; endif test1 <= eps , istop = 2; endif test1 <= rtol , istop = 1; end

% See if it is time to print something.if show

prnt = false;if n <= 40 , prnt = true; endif itn <= 10 , prnt = true; endif itn >= itnlim-10, prnt = true; endif mod(itn,10)==0 , prnt = true; endif Acond >= 1e-2/eps , prnt = true; endif test1 <= 10*eps , prnt = true; endif test1 <= 10*rtol , prnt = true; endif istop ~= 0 , prnt = true; endif prntfprintf(’\n %6g %12.5e %10.3e %8.1e %8.1e %8.1e’, ...

itn,x(1),rnorm,xnorm,Anorm,Acond);endif mod(itn,10)==0, fprintf(’\n’); end

end % show

if istop > 0, break; endend % main loop

end % if ~done early

%-------------------------------------------------------------------% Display final status.%-------------------------------------------------------------------msg = [’beta1 = 0. The exact solution is x = 0 ’ % istop = 0

’A solution to Ax = b was found, given rtol ’ % 1’Maximum accuracy achieved, given eps ’ % 2’Acond has exceeded 0.1/eps ’ % 3’The iteration limit was reached ’ % 4’A does not define a symmetric matrix ’ % 5’A does not define a positive-definite matrix’]; % 6

msg = msg(istop+1,:);if show

fprintf(’\n’)fprintf(’\n %s’, msg)fprintf(’\n istop =%3g itn =%10g’, istop,itn)fprintf(’\n Anorm =%10.2e Acond =%10.2e’, Anorm,Acond)fprintf(’\n rnorm =%10.2e xnorm =%10.2e’, rnorm,xnorm)fprintf(’\n’)

end

Page 88: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

88/90

Comparación numérica de algunos métodos

� Utilizaremos un problema "sintético", con una matriz simétrica 500 � 500 dediversos números de condición desde 1 a 10.000. La solución siempre es x D 1

y la precisión con la que se pretende obtenerla es kb �Axk1 < 10�6.

� Utilizando el Programa SdyCg:

>> SdyCg(1.6)cond(A) Mp_i Gc_i GS_i SOR_i Jac_i Mp_tim Gc_tim GS_tim SOR_tim Jac_tim Res^2_Mp Res^2_Cg Res^2_GS Res^2_SOR Res^2_Jac

1 1 1 2 29 2 0.000124 0.000092 0.006561 0.008331 0.001398 7.944076e-28 7.944076e-28 3.630856e-28 6.788011e-11 1.649459e-2810 71 27 30 34 69 0.003159 0.001476 0.007254 0.008618 0.014539 8.579430e-13 8.912196e-13 9.432146e-11 1.933698e-10 1.034252e-09100 685 84 205 48 761 0.039224 0.005740 0.015905 0.013556 0.196298 9.298963e-13 9.870799e-13 4.477812e-08 1.616879e-08 1.107515e-07

1000 6155 142 1644 566 70489 0.309429 0.009098 0.065275 0.122751 15.220156 9.954203e-13 6.167283e-13 2.765230e-06 1.118498e-06 NaN10000 66389 162 7178 1564 99999 3.402865 0.009311 0.356074 0.351750 21.980691 9.994093e-13 7.437201e-13 5.815914e-04 2.265461e-04 2.941935e+26

>>

Page 89: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

89/90

Page 90: Sistemas de ecuaciones lineales. Métodos iterativos de resolución

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

90/90� El código usado.

function SdyCg(omega)% Test de diversos métodos iterativos de solución de sistemas linealesn=500;condA=[1 10 100 1000 10000];x0=zeros(n,1);tol=1e-6;maxits=99999;disp([’cond(A) Mp_i Gc_i GS_i SOR_i Jac_i Mp_tim Gc_tim GS_tim SOR_tim’...

’ Jac_tim Res^2_Mp Res^2_Cg Res^2_GS Res^2_SOR Res^2_Jac’]);for i=1:5

[Q,R]=qr(rand(n));A=Q’*diag(linspace(1,condA(i),n))*Q; b=A*ones(n,1);D=diag(diag(A)); L=tril(A,-1); U=triu(A,1);

% Máxima pendientetic;j=0; x=x0; r=b-A*x; d=r’*r; s=r;while sqrt(d)>tol && j<maxits

j=j+1;v=A*s;alpha=d/(s’*v);x=x+alpha*s;r=r-alpha*v;d=r’*r;s=r;

endtime_Mp=toc;Mp(i)=j;d1=d;

% Gradientes conjugadostic;k=0; x=x0; r=b-A*x; d=r’*r; p=r;while sqrt(d)>tol && k<maxits

k=k+1;v=A*p;alpha=d/(p’*v);x=x+alpha*p;r=r-alpha*v;beta=d;d=r’*r;beta=d/beta;p=r+beta*p;

endtime_Gc=toc;Gc(i)=k;d2=d;

% Gauss-Seideltic;k0=0; x=x0; c2=(D+L)\b; G_GS=(D+L)\(-U); d=max(abs(b-A*x));while d>tol && k<maxits

k0=k0+1;x1=G_GS*x+c2;s=max(abs(x1));d=max(abs(x1-x))/s;x=x1;

endtime_GSe=toc;GS(i)=k0;r=b-A*x;d3=r’*r;

% SORtic;l=0; x=x0; M=omega*L+D; N=-omega*U+(1-omega)*D;d=max(abs(b-A*x));while d>tol && l<maxits

l=l+1;x1=M\(N*x+omega*b);s=max(abs(x1));d=max(abs(x1-x))/s;x=x1;

endtime_SOR=toc;SO(i)=l;r=b-A*x;d4=r’*r;

% Jacobitic;l1=0; x=x0; M=D; N=D-A;d=max(abs(b-A*x));while d>tol && l1<maxits

l1=l1+1;x1=M\(N*x+b);s=max(abs(x1));d=max(abs(x1-x))/s;x=x1;

endtime_Jac=toc;Ja(i)=l1;r=b-A*x;d5=r’*r;fprintf(’ %5d%6d%6d%6d%6d%6d %10.6f %10.6f %10.6f %10.6f %10.6f %e %e %e %e %e\n’, ...

condA(i),j,k,k0,l,l1,time_Mp,time_Gc,time_GSe,time_SOR,time_Jac,d1,d2,d3,d4,d5);endloglog(condA, Mp,’b-x’,condA,Gc,’r:+’,condA,GS,’g-.x’,condA,SO,’c-+’,condA,Ja,’k:x’)xlabel(’Condición’),ylabel(’Iteraciones’)h = legend(’Mp’,’Gc’,’GSe’,’SOR’,’Jac’,2);