Sei sulla pagina 1di 16

Mtodos Numricos

Mtodos Iterativos para Sistemas Lineales


Mtodos de Richardson
Mtodo del Gradiente Conjugado
Mtodo del Gradiente Conjugado Precondicionado
Mtodo Residual Conjugado Precondicionado
Autor:
Alexis Vintimilla Matute
Docente:
Ing. Lenin Campozano
Fecha:
01/07/2016
Ciclo Lectivo:
Marzo Agosto

ndice
Introduccin ............................................................................................................................................ 2
Objetivos ................................................................................................................................................. 2
Generalidades ......................................................................................................................................... 3
Marco terico.......................................................................................................................................... 3
1.

Un enfoque suave de los mtodos iterativos ................................................................................. 3


1.1

Mtodo de Richardson estacionario. ...................................................................................... 3

Cdigo de ejecucin en Matlab: ..................................................................................................... 5


Implementacin Matlab: ................................................................................................................ 6
2.

Mtodos de descenso para problemas simtricos. ........................................................................ 8


2.1

Mtodos precondicionados de Richardson. ........................................................................... 8

2.2

Mtodo del gradiente conjugado (GC) .................................................................................. 9

Cdigo de ejecucin en Matlab .................................................................................................... 10


Implementacin en Matlab........................................................................................................... 11
2.3

Mtodo del gradiente conjugado precondicionado (GCP) ................................................... 13

Cdigo de ejecucin en Matlab. ................................................................................................... 13


Implementacin en Matlab........................................................................................................... 14
2.4

Mtodo residual conjugado precondicionado (RCP) ........................................................... 15

Conclusiones ......................................................................................................................................... 16
Bibliografa ............................................................................................................................................ 16

Introduccin
En este informe veremos procedimientos iterativos para resolver un sistema de ecuaciones lineales.
El primero de ellos conocido como el procedimiento de Richardson estacionario se basa en la idea de
un problema simtrico, un segundo procedimiento conocido como el mtodo de Richardson dinmico
donde se presenta un valor de aceleracin para que el mtodo converja en una solucin del sistema
lineal, un tercer procedimiento conocido como el mtodo del gradiente conjugado que implementa
la forma descendiente para su resolucin y otros dos mtodos conocidos como el mtodo del
gradiente conjugado precondicionado y el mtodo residual conjugado precondicionado, donde se
presenta una matriz de precondicionamiento cuadrada y fcil de invertir. Asimismo se comentara en
que situaciones los mtodos iterativos son ms convenientes que los mtodos directos.

Objetivos
Ser importante para el lector

Entienda los conceptos:


2

o Mtodo iterativo,
o Parmetro de relajacin,
o Parmetro de relajacin dinmico o de aceleracin,
o Convergencia.
En trminos cualitativos
o Entender la diferencia entre un mtodo directo y uno iterativo.
o Entender la conveniencia de usar un mtodo iterativo y uno directo.
Entender y mecanizar los procedimientos de
o Mtodo de Richardson estacionario,
o Mtodo de Richardson dinmico,
o Mtodo del gradiente conjugado,
o Mtodo del gradiente conjugado precondicionado, y
o Mtodo residual conjugado precondicionado.

Generalidades
Un mtodo iterativo es un mtodo que progresivamente va calculando aproximaciones a la
solucin de un problema. En matemticas, en un mtodo iterativo se repite el mismo proceso de
mejora sobre una solucin aproximada; se espera que lo obtenido sea una solucin ms aproximada
que la inicial. El proceso se repite sobre esta nueva solucin hasta que el resultado ms creciente
satisfaga ciertos requisitos. A diferencia de los mtodos directos, en los cuales se debe terminar el
proceso para tener la respuesta, en los mtodos iterativos se puede suspender el proceso al trmino
de una iteracin y se obtiene una aproximacin a la solucin.

Marco terico.
1. Un enfoque suave de los mtodos iterativos
1.1 Mtodo de Richardson estacionario.
Un esquema iterativo especialmente sencillo es el mtodo de Richardson (1910). Teniendo en cuenta
una estimacin inicial v0 a u, las aproximaciones posteriores se obtienen a travs de
+1 = +
Dnde es un parmetro de relajacin y
=

(C.1.2)

Es el residuo asociado con . El error obedece a la relacin


( +1 ) = ( )

(C.1.3)

Donde la matriz de iteracin G del esquema de Richardson est dada por


=

(C.1.4)

El esquema iterativo es convergente si el radio espectral de G es menor que 1.


En el caso del rgimen de Richardson esta condicin es equivalente a
|1 | < 1

(C.1.5)

Para todos los valores propios de L. El cumplimiento simultneo de estas desigualdades slo es
posible si todos los valores propios de L tienen partes reales distintos de cero de signo constante. Un
caso particularmente relevante es el de una matriz con todos los valores propios reales y
3

estrictamente positivos; las matrices simtricas y definidas positivas tienen esta propiedad, pero stas
no son condiciones necesarias.
La condicin de convergencia (C.1.5) se satisface para 0 < < donde
=

(C.1.6)

La mejor seleccin de es la que minimiza (error). Se obtiene de la relacin


(1 ) = (1 ) (C.1.7)
Para entonces los valores ms largos de 1 son iguales en magnitud y tienen signo opuesto. El
parmetro de relajacin ptimo es entonces

2
+

(C.1.8)

Que produce el radio espectral

(C.1.9)

Se observa que la dependencia de los valores propios extremos esta solo en la combinacin

(C.1.10)

Esta relacin es conocida como el nmero de condicin interactivo de L, en trminos del radio espectral
esta relacin se presenta como

1
+1

(C.1.11)

Se define el radio de convergencia a ser


= log (C.1.12)
Cuanto ms pequeo sea mayor ser la convergencia. Su reciproco se denota por .
Para el mtodo de Richardson descrito, el nmero de iteraciones incrementa como
1

(C.1.13)
2

El mtodo bsico de Richardson puede ser mejorado y ampliado de varias maneras, la discusin hasta
ahora solo se preocupa del estado estacionario de Richardson. En un estado no estacionario el
parmetro en (C.1.1) depender de n, es decir para cambiar el curso de iteraciones ya acelerar la
convergencia del mtodo.
Para un mtodo esttico no estacionario de Richardson se obtiene la siguiente expresin para los
parmetros ptimos usando la propiedad minimax de Chebyshev.

2/
(21)
+(+1)
2

(1) cos

Y un radio espectral efectivo.

= 1, , , (C.1.14)

1
+1 1/
[ (1)]

. (C.1.15)

Ambos valores (para todo j) y dependen de .

Deduccin del mtodo de Richardson estacionario.


Este mtodo toma como matriz Q la matriz identidad (I). En este caso se implementa la siguiente
ecuacin.
() = ( ) (1) + = (1) + (1)

()

En donde (1) es el vector residual definido mediante (1) = (1)


Es decir el elemento neutro del producto matricial, de acuerdo con esto, la ecuacin (a) se puede
escribir como
() = (1) (1) + = (1) + (1)

()

En donde un elemento cualquiera del vector (1) vendr dado por la expresin:

(1)

(1)

=
=1

Cdigo de ejecucin en Matlab:


%resuelve un sistema de ecuaciones mediante el metodo
%iterativo de Richardson
A=input('Ingrese la matriz de coeficientes A:')
b=input('Ingrese la matriz transpuesta de terminos independientes:')
x=input('Ingrese un vector de aproximacion x=');
m=input('Ingrese el numero de iteraciones m=');
E=input('Ingrese la presicion buscada E=');
n=length(A);
' k
X'
X=x;
for k=1:m
H=A*x';
if abs (H-b')<E
break
end
for i=1:n
sum=0;
for j=1:n
sum=sum+A(i,j)*x(j);
end
r(i)=b(i)-sum;
end
for i=1:n
x(i)=x(i)+r(i);
end
if abs (X-x)<E
break
end
X=x;
fprintf('%d\t%d\n', k,x)
end
disp(x);

Implementacin Matlab:
Resolver el siguiente sistema de ecuaciones utilizando el mtodo de Richardson, hallas las soluciones
x que resuelven el ejercicio, utilizando el vector de aproximacin [0,0,0,0,0,0] en 100 iteraciones.
1 + 0.22 + 0.073 + 0.084 + 0.15 + 0.056 = 2.73
0.0871 + 2 + 0.33 + 0.054 + 0.0655 + 0.16 = 4.112
0.0321 + 0.312 + 3 + 0.244 + 0.035 + 0.126 = 5.482
0.0981 + 0.0342 + 0.0323 + 4 + 0.165 + 0.286 = 6.742
0.341 + 0.0132 + 0.0763 + 0.154 + 5 + 0.0356 = 6.404
{ 0.011 + 0.382 + 0.233 + 0.0454 + 0.0945 + 6 = 8.11 }

>> metodo_richardson
Ingrese la matriz de coeficientes
A:[1,0.2,0.07,0.08,0.1,0.05;0.087,1,0.3,0.05,0.065,0.1;0.032,0.31,1,0.24,0.03,0.12;0.098,0.034,0.032,
1,0.16,0.28;0.34,0.013,0.076,0.15,1,0.035;0.01,0.38,0.23,0.045,0.094,1]
A=
1.0000 0.2000 0.0700 0.0800 0.1000 0.0500
0.0870 1.0000 0.3000 0.0500 0.0650 0.1000
0.0320 0.3100 1.0000 0.2400 0.0300 0.1200
0.0980 0.0340 0.0320 1.0000 0.1600 0.2800
0.3400 0.0130 0.0760 0.1500 1.0000 0.0350
0.0100 0.3800 0.2300 0.0450 0.0940 1.0000

Ingrese la matriz transpuesta de trminos independientes: [2.73,4.112,5.482,6.742,6.404,8.11]


b=
2.7300 4.1120 5.4820 6.7420 6.4040 8.1100
Ingrese un vector de aproximacion x=[0,0,0,0,0,0]
Ingrese el numero de iteraciones m=100
Ingrese la presicion buscada E=0.0001

ans =
k
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

X
2.730000e+00 4.112000e+00
-6.140000e-02 6.655300e-01
1.685483e+00 2.896618e+00
5.572289e-01 1.455015e+00
1.281142e+00 2.362730e+00
8.177887e-01 1.771424e+00
1.116262e+00 2.148067e+00
9.251106e-01 1.905370e+00
1.047991e+00 2.060892e+00
9.691628e-01 1.960959e+00
1.019787e+00 2.025080e+00
9.872943e-01 1.983905e+00
1.008155e+00 2.010334e+00
9.947641e-01 1.993367e+00
1.003361e+00 2.004259e+00
9.978422e-01 1.997266e+00
1.001385e+00 2.001755e+00
9.991107e-01 1.998873e+00
1.000571e+00 2.000723e+00
9.996335e-01 1.999536e+00
1.000235e+00 2.000298e+00
9.998490e-01 1.999809e+00
1.000097e+00 2.000123e+00
9.999378e-01 1.999921e+00
1.000040e+00 2.000051e+00
9.999743e-01 1.999967e+00

5.482000e+00
1.336520e+00
3.956555e+00
2.340654e+00
3.409751e+00
2.733190e+00
3.170142e+00
2.890389e+00
3.070230e+00
2.954867e+00
3.028957e+00
2.981405e+00
3.011936e+00
2.992337e+00
3.004919e+00
2.996842e+00
3.002027e+00
2.998699e+00
3.000835e+00
2.999464e+00
3.000344e+00
2.999779e+00
3.000142e+00
2.999909e+00
3.000058e+00
2.999962e+00

6.742000e+00
2.863788e+00
4.869835e+00
3.454155e+00
4.349856e+00
3.775539e+00
4.144444e+00
3.907458e+00
4.059478e+00
3.961840e+00
4.024505e+00
3.984271e+00
4.010098e+00
3.993518e+00
4.004162e+00
3.997328e+00
4.001715e+00
3.998899e+00
4.000707e+00
3.999546e+00
4.000291e+00
3.999813e+00
4.000120e+00
3.999923e+00
4.000049e+00
3.999968e+00

1.0000 2.0000 3.0000 4.0000 5.0000 6.0000


>>
Los ltimos valores son la solucin para el sistema de ecuaciones:
x1=1; x2=2; x3=3; x4=4; x5=5; x6=6.
>> plot(A)

6.404000e+00
3.710562e+00
5.732693e+00
4.514564e+00
5.313260e+00
4.800909e+00
5.128673e+00
4.917689e+00
5.052935e+00
4.966049e+00
5.021806e+00
4.986005e+00
5.008986e+00
4.994232e+00
5.003703e+00
4.997623e+00
5.001526e+00
4.999020e+00
5.000629e+00
4.999596e+00
5.000259e+00
4.999834e+00
5.000107e+00
4.999931e+00
5.000044e+00
4.999972e+00

8.110000e+00
4.353914e+00
7.072650e+00
5.324407e+00
6.433366e+00
5.719919e+00
6.178863e+00
5.884844e+00
6.073820e+00
5.952576e+00
6.030433e+00
5.980459e+00
6.012543e+00
5.991947e+00
6.005169e+00
5.996681e+00
6.002130e+00
5.998632e+00
6.000878e+00
5.999436e+00
6.000362e+00
5.999768e+00
6.000149e+00
5.999904e+00
6.000061e+00
5.999961e+00

>> hold on
>> plot(x)

Comprobacin: se realiza la operacin A/b como representa una divisin de matrices, en matlab se
puede realizar esta operacin de esta forma
>> A\b'
ans =
1.0000
2.0000
3.0000
4.0000
5.0000
6.0000
>>
As queda demostrado la solucin para el sistema de ecuaciones.

2. Mtodos de descenso para problemas simtricos.


A diferencia del mtodo Richardson estacionario discuti anteriormente, los mtodos descendientes
no tienen parmetros tales como que requiere el conocimiento de los valores propios extremos
y de la matriz L o de 1 , donde H es un pre acondicionador adecuado. El principio es
ajustar el valor de suposicin actual mediante
( +1 ) = (C.2.1)
Donde = es el residuo y el escalar es el parmetro de relajacin dinmico o
parmetro de aceleracin, se elige de acuerdo a algn criterio de optimizacin.

2.1 Mtodos precondicionados de Richardson.


Inicializar
0 , 0 = 0 , 0 = 0
Iterar
8

+1 = +
+1 = +

(C.2.2)

+1 = +1
Para las iteraciones no precondicionadas, entonces H=I y = , en la tabla 1 se observa que en
particular PMRR2 y PMRRH (preconditioned minimum residual Richardson method) coinciden si P=I;
Para las iteraciones PMRRH los valores estimados para la precondicin residual:
(

+1

0 , (C.2.3)

Donde aun se denota como el nmero de condicin iterativa de 1 , mientras que para las
iteraciones PSDR (preconditioned steepest descent Richardson method) se tiene:

1
+1

) 0

(C.2.4)

En ambos casos el nmero de iteraciones requeridas para la convergencia es proporcional a


1

= (C.2.5)
2

Cuando los valores propios de la matriz precondicionada 1 son complejos, pero con partes reales
dominantes, un reemplazo para que an es representante del comportamiento de convergencia de
las iteraciones de Richardson como.

| |
| |

2.2 Mtodo del gradiente conjugado (GC)

(C.2.6)

Es decir, tericamente, los mtodos basados en el clculo de direcciones conjugadas son mtodos
directos, aunque se usen como mtodos iterativos.

( , )
=
( , )
+1 = +
+1 =

(C.2.9)

(+1 , +1 )
( , )

+1 = +1 +
En las formulas anteriores el escalar resulta implementado por la necesidad de que el vector +1
minimice la norma de energa del error, y la frmula para el escalar adicional se utiliza como
requerimiento para (+1 , ) = 0 (C.2.8)
Las siguientes propiedades de ortogonalidad mantienen:
( , ) = 0,

( , ) = 0

(C.2.10)

La primera propiedad implica que = 0 par algn , donde nd es el orden de la matriz L. (nd
es la dimensin del sistema lineal).
La presencia del error de redondeo conduce a cierta contaminacin de los vectores residuales y
direccionales, la segunda propiedad de relacin indica que el mtodo GC hace mucho ms que en la
ecuacin (C.2.8), entonces se dice que las direcciones { } son L-conjugadas.
La propiedad de convergencia favorable para este mtodo se refleja por la estimacin de la energa
del error:
2 (

+1

(C.2.11)

Y el nmero de iteraciones que se requiere para la convergencia es proporcional a:


1

=
2

(C.2.12)

Los errores inherentes a la implementacin en ordenador del mtodo hacen que se pierda la
ortogonalidad de los vectores residuo:
La propiedad de que el mtodo converge en un nmero finito de pasos no se cumple por ello en la
prctica estrictamente, por lo que este mtodo se considera como un mtodo iterativo.

Cdigo de ejecucin en Matlab


function [x k]=Cgr(A,b,x0)
%metodo del gradiente conjugado
if nargin<3, x0=zeros(length(b),1); end
k=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;

10

beta=d; d=r'*r;
beta=d/beta;
p=r+beta*p;
end
end

Implementacin en Matlab.
Resolver el siguiente sistema de ecuaciones lineales utilizando el mtodo del gradiente conjugado.
101 2 + 23 = 6
1
+ 112 3 + 34 = 25}
{
21 2 + 103 4 = 11
32 3 + 84 = 15

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


A=
10 -1

-1 11 -1

2 -1 10 -1
0

3 -1

>> b=[6;25;-11;15]
b=
6
25
-11
15
>> [x k]=Cgr(A,b,zeros(4,1))
x=
1.0000
2.0000

11

-1.0000
1.0000
k=
4
>>
Donde k es el nmero de iteraciones y los valores obtenidos corresponden a:
X1=1; x2=2; x3=-1; x4=1
>> plot(A)

>> hold on
>> plot(x)

Ahora para comprobar el resultado.


>> A\b
ans =
1.0000
2.0000
-1.0000
1.0000

12

>>

2.3 Mtodo del gradiente conjugado precondicionado (GCP)


Inicializa
0 , 0 = 0 , 0 = 0 ,

0 = 0

Iterar

( , )
( , )

+1 = +
+1 =

(C.2.20)

+1 = +1
=

(+1 , +1 )
( , )

+1 = +1 +
En el caso de presentarse problemas no simtricos se utiliza las propiedades (C.2.20) que
corresponden a versiones abreviadas precondicionadas y se conoce como el mtodo gradiente
conjugado truncado perecondicionado.
En este mtodo precondicionado se sustituye la matriz con mejor nmero de condicin
haciendo un cambio de variable = , donde C es regular y fcil de invertir.
Por lo tanto utilizando el mtodo de gradientes conjugados el sistema, la solucin original se obtendra
sin ms que hacer = 1
Si A es simtrica, la mejor C posible es 1/2 , pues en ese caso:

= (1/2 ) 1/2 = 1/2 1/2 1/2 1/2 = =

Cdigo de ejecucin en Matlab.


function [k tol x]=PCGr(A,b,x0,M)
%gradientes conjugados con precondicionado M
k=0; x=x0;r=b-A*x; tol=eps*norm(b)
d=M\r; dn=r'*d;
while dn>tol
w=A*d;
alpha=dn/(d'*w);
x=x+alpha*d;
r=r-alpha*w;
if mod(k,50)==0, r=b-A*x; end
s=M\r;
do=dn; dn=r'*s;
beta=dn/do;
d=s+beta*d;
k=k+1;
end
end

13

Implementacin en Matlab.
En este caso generamos una matiz de 100x100 con el comando rand(100) con valor entre (0,1)
aleatorios.

Para resolver un sistema de ecuaciones de este tipo implementamos el mtodo del gradiente
conjugado precondicionado.
>> A=rand(100);
>> A=A+A';
>> B=A*A;
>> b=B*ones(100,1);
>> [k tol]=PCGr(B,b,zeros(100,1),eye(100))
k=
201
tol =
2.2637e-11
>>
Este es el resultado que contiene un gran nmero de iteraciones para converger sin precondicionado.
Ahora implementando un precondicionado perfecto A se tiene:
>> [k tol]=PCGr(B,b,zeros(100,1),A)
k=
2
tol =
2.2637e-11
>>
Vemos que se llega al mismo valor de tolerancia pero simplemente en dos pasos.
>> plot(A)
14

>> plot(x)

2.4 Mtodo residual conjugado precondicionado (RCP)


Inicializa
0 , 0 = 0 , 0 = 0 ,

0 = 0

Iterar

( , )
=
( , )
+1 = +
+1 =

(C.2.21)

+1 = +1
=

(+1 , +1 )
( , )

+1 = +1 +
+1 = +1 +
En el caso de presentarse problemas no simtricos se utiliza las propiedades (C.2.21) que
corresponden a versiones abreviadas precondicionadas y se conoce como el mtodo residual
conjugado truncado precondicionado.
Todos los mtodos descendientes vistos anteriormente corresponden a problemas no simtricos.
15

Conclusiones

Un elemento en contra que tienen los mtodos iterativos sobre los mtodos exactos, es que
estos solo calculan aproximaciones a la solucin.
Estos mtodos iterativos se utilizan para matrices no simtricas y su solucin deber
converger en un nmero de iteraciones dado.
La causa primaria para la ineficiencia del mtodo de Richardson es que la convergencia
decrece de acuerdo al aumento del nmero de condicin iterativo.
Los errores inherentes a la implementacin del mtodo del gradiente conjugado en
computador hacen que se pierda la ortogonalidad de los vectores residuo.
Para el caso de los mtodos precondicionados, cuando el mtodo no contiene una
precondicin la solucin tiende a converger en un nmero de iteraciones grande, a
comparacin con las iteraciones mnimas que realiza el programa cuando se presenta una
precondicin.

Bibliografa

Canuto, C., Hussaini, M., Quarteroni, A. and Zang, T. (2007). Spectral Methods Fundamentals
in Single Domains. Berlin, Heidelberg: Springer Berlin Heidelberg.

16

Potrebbero piacerti anche