Práctica

Anuncio
Práctica 8
Cálculo de autovalores
8.1.
Método de la potencia
El método de la potencia para el cálculo del autovalor dominante de una
matriz se basa en el siguiente teorema.
Teorema 8.1.1 (M. de la potencia] Dada una matriz A ∈ Rn×n que tiene n
autovalores distintos λ1 , . . . , λn que están ordenados de forma que
|λ1 | > |λ2 | ≥ · · · ≥ |λn |
�T
�
Si se elige x0 de forma adecuada las sucesiones Xk = x1 , xk2 , . . . , xn y ck
que se generan del siguiente modo:
y0 = Ax0 , yk = Axk ,
y
xk+1 =
donde
xk+1
,
ck+1
�� ��
ck+1 = máx �xki � ,
1≤i≤n
converge al autovector dominante de A y al autovalor dominante. O sea,
lı́m ck = λ1 ,
k→∞
lı́m xk = v1 .
k→∞
El método de la potencia se puede implementar mediante la siguiente
función de Matlab:
44
function [lambda,V]=potencia(A,x,epsilon,max1)
% Input A: una matrix nxn
%
x: aproximacion inicial para el autovector
%
epsilon: tolerancia
%
max1: numero maximo de iteraciones
%
% Output lambda: el autovalor dominante
%
V: el autovalor dominante
%
lambda=0;
cnt=0;
err=1;
estado=1;
while((cnt<=1)&(estado==1))
y=A*x;
[m,j]=max(abs(y));
c1=m;
y=y/c1;
%
test de los errores
dc=abs(lambda-c1);
dv=norm(x-y);
err=max(dc,dv);
x=y;
lambda=c1;
estado=0;
if (err>epsilon)
estado=1;
end
cnt=cnt+1;
end
v=x;
45
8.2.
Método de iteración del subespacio
Cuando se manejan matrices grandes y dispersas calcular todos sus autovalores y sus correspondientes autovectores es un proceso muy costoso. En
general, para este tipo de matrices se considera un problema parcial de autovalores. Ası́ si A ∈ � × �, se buscan p (p << n) autovalores dominantes,
λ1 , λ2 , . . . , λp y sus correspondientes autovectores x1 , . . . , xp , de forma que
AX = XΛ
con
X = (x1 , . . . , xp ) , Λ = diag (λ1 , . . . , λp )
Para resolver este problema numéricamente se suelen utilizar métodos
iterativos cuya operación principal es el producto matriz-vector. Un ejemplo
de este tipo de métodos es el método de iteración del subespacio.
El método de iteración del subespacio prácticamente se basa en continuas
repeticiones de productos AX, empezando desde una solución inicial, X 0 ,
hasta la obtención de los autovectores asociados a los autovalores dominantes
de la matriz A, y en cada iteración, es necesario transformar la matriz X para
que no pierda la propiedad de ortonormalidad. El producto de AX se calcula
ejecutando los productos matriz-vector Ax, donde x representa cualquier
columna de X.
Describiremos, a continuación, dos algoritmos del método de iteración
del subespacio. El primero, hace uso de la proyección de Rayleigh-Ritz no
simétrica, y el segundo, se basa en la proyección de Rayleigh-Ritz simétrica..
8.2.1.
Método de Iteración del Subespacio con proyección de Rayleigh- Ritz no Simétrica.
El primer algoritmo que vamos a describir se basa en el método de Iteración del Subespacio multipaso con una proyección de Rayleigh-Ritz no
simétrica, que se estructura en los siguientes pasos:
Algoritmo 1:
1.- Comienzo: Elegir un sistema incial de vectores linealmente independientes X 1 = {x1 , x2 , ..., xp } , y un valor inicial del parámetro de iteración,
iter. El algoritmo desarrollado permite al usuario elegir entre tomar como estimación inicial los vectores que generan el subespacio invariante,
46
obtenidos en casos previos, o generan una base de p vectores, cuyas
componentes se eligen como números aleatorios del intervalo [−1, 1]. La
base elegida se ortonormaliza mediante el algoritmo de Gram-Schmidt
modificado.
Inicializar k = 1.
2.- Bucle de Autovalores: Mientras no se de la convergencia, hacer:
a) Para i = 1 hasta iter
Calcular Z k = AX k
Asignar X k = Z k
Fin para.
b) Ortonormalizar Z k en Z k+1 , usando el algoritmo de Gram-Schmidt
modificado.
c) Calcular la proyección de Rayleigh-Ritz Âk+1 = (Z k+1 )T AZ k+1 .
d) Resolver el problema de autovalores p−dimensional
Âk+1 = Qk+1 Δk+1 (Qk+1 )T ,
con Δk+1 = diag(s1 , s2 , ..., sp )k+1 , donde (si )k+1 es un autovalor
de Âk+1 que es una aproximación a un autovalor dominante de A.
e) Calcular la nueva solución inicial X k+1 = Z k+1 Qk+1 .
f ) Comprobar el criterio de convergencia.
g) k = k + 1.
Fin mientras.
El criterio de convergencia empleado es el siguiente:
�
�
�abs(xk+1 ) − abs(xki )�
i
�
�
< tol;
i = 1, ..., p,
�abs(xk+1 )�
i
(8.1)
donde � � es la 2-norma de un vector, y abs(xk+1
) es el vector resultante de
i
tomar el módulo de las componentes de la columna i−ésima de la matriz
X k+1 . Hemos considerado el valor absoluto de las componentes del vector
debido al hecho de que algunos autovectores, de una iteración a la siguiente
cambian su orientación, y esto provoca un cambio de signo global en el autovector. Los valores tı́picos que se han tomado para el parámetro del criterio
de convergencia, tol, han sido 10−3 y 10−4 .
Una vez satisfecho el criterio de convergencia en el algoritmo anterior, se
obtienen directamente los p autovalores dominantes de la matriz A, (sk+1
),
i
k+1
i = 1, ..., p, y sus correspondientes autovectores, {xk+1
,
....,
x
}.
1
p
47
8.2.2.
Método de Iteración del Subespacio con Proyección de Rayleight-Ritz Simétrica.
Este método es similar al expuesto anteriormente, la diferencia principal es que utiliza la proyección de Rayleigh-Ritz simétrica en vez de la no
simétrica. El método puede estructurarse de la siguiente forma:
Algoritmo 2:
1.- Comienzo: Elegir una base inicial X 1 = {x1 , ...., xp } de p vectores de la
matriz A. Los vectores se eligen de la misma forma que en el algoritmo
anterior, y son normalizados utilizando el algoritmo de Gram-Schmidt
modificado. Inicializar el contador, k = 1.
2.- Bucle de Autovalores: Mientras no se de el criterio de convergencia:
a) Calcular Z k = AX k .
b) Formar la proyección de Rayleigh-Ritz simétrica Âk+1 = (Z k+1 )T Z k+1
c) Resolver el problema de autovalores p−dimensional
Âk+1 Qk+1 = Qk+1 (Δk+1 )2 ,
con (Δk+1 )2 = diag(s21 , s22 , ..., s2p )k+1 , donde (s2i )k+1 es un autovalor
de Âk+1 . Y calcular la matriz trasformación
T k+1 = Qk+1 (Δk+1 )−1
.
d) Construir la nueva solución inicial orotnormal
X k+1 = Z k+1 Qk+1
.
e) Comprobar el criterio de convergencia.
f ) k = k + 1.
Fin mientras.
El criterio de convergencia usado en este algoritmo, es el mismo que se
ha utilizado en el algoritmo anterior, (8.1).
Si utilizamos el primer algoritmo, una vez logrado el criterio de convergencia del buble de autovalores, se obtienen directamente los p autovalores dominantes de la matriz A y sus correspondientes autovectores asociados. Mientras
48
que si se utiliza el segundo algoritmo, al cumplirse el criterio de convergencia, se obtiene una base ortonormal, X k+1 , del subespacio engendrado por
los p autovectores dominantes de la matriz A. Para calcular los pautovectores
asociados a los p autovalores dominantes de la matriz A, X = {x1 , ....., xp },
debemos calcular una matriz de transformación, U , de tal forma que
X = X k+1 U .
La matriz U es de dimensión p × p. Para calcular esta matriz, partimos del
problema de autovalores inicial
AX = XΛ ,
donde Λ es una matriz diagonal cuyos elementos son los p-autovalores dominantes de A. Multiplicando esta ecuación por (X k+1 )T obtenemos la matriz
U como solución del problema de autovalores p-dimensional
B̂U = U Λ ,
donde B̂ = (X k+1 )T AX k+1 .
8.3.
Ejercicios
E.1 Obtén el autovalor y el autovector dominante de la matriz


7
6 −3
A =  −12 −20 24 
−6 −12 16
E.2 Un proceso de Markov se puede describir por una matriz cuadrada cuyas
entradas son todas positivas y su suma vale 1. Por ejemplo, si P0 =
T
(x0 , y 0 , z 0 ) es el número de personas en una ciudad que prefieren la
marca X, Y y Z, respectivamente. Cada mes la gente decide usar la
misma marca o cambiar de marca. La probabilidad que el ususario de
la marca X cambie a la marca Y o Z es 0,3 y 0,3, respectivamente. La
probabilidad que un usuario de la marca Y cambie a la marca Z o Z es
0,3 y 0,2, respectivamente. La probabilidad que un usuario de la marca
Z cambia a la marca X o a la marca Y es 0,1 y 0,3, respectivamente.
La matriz de transición para el proceso es

 k 
0,4 0,3 0,1
x



yk 
0,3 0,5 0,3
Pk+1 = APk = A =
zk
0,3 0,2 0,6
49
Si existe un P de forma que AP = P , entonces P es un autovector de
A con autovalor 1. Además P es un estado estacionario del proceso de
Markov. Comprueba que λ = 1 es un autovalor de A y obtén un posible
estado estacionario.
E.3.- Dada la matriz


0 11 −5
A =  −2 17 −7 
−4 26 −10
se sabe que tiene un autovalor cercano a 0,5. Implementa el método de
la potencia inversa para obtener este autovalor de A y su correspondiente autovector.
E.4.- Como ya vimos, los vectores almacenados en los ficheros V.dat, I.dat
y J.dat en la hoja web
http://personales.upv.es/dginesta/docencia/docencia.htm
definen una matriz dispersa en formato coordenando. Utiliza el método
de la potencia combinado con el método de defacción de Wielandt para
obtener los tres primeros autovalores dominantes de esta matriz y sus
correspondientes autovectores.
Implementa las dos versiones del método de iteración del subespacio
expuestas anteriormente y utilizalas para calcular los tres autovectores
dominantes de la matriz y sus correspondientes autovectores. Comprueba los resultados utilizando la función eigs( ) de Matlab.
50
Descargar