Professional Documents
Culture Documents
1/45
Ingeniera El ctrica e
Ant. Cerrar
2/45
ndice I
1. Introduccion 2. Interpretacion geometrica
3. Propiedades de los subespacios propios 4. Propiedades de los valores propios 5. Tipos de matrices y valores propios 6. Lema de Schur y aplicaciones
Ant. Cerrar
3/45
8. Obtencion numerica
Metodo de la iteracion de potencia Metodo de la iteracion inversa Iteracion mediante cociente de Rayleigh Deacion Iteracion simultanea Iteracion QR Metodo de Jacobi Comparacion de los metodos
Ant. Cerrar
Si en vez del valor propio de mayor magnitud, se necesita el mas pequeno, se puede hacer uso de que los valores propios de A1 son los recprocos de A. El esquema iterativo sera el que sigue.
5/45
Ejemplo (continuacion)
Aplicando el metodo de la iteracion inversa al problema que manejamos, se obtienen los resultados de la tabla.
k 0 1 2 3 4 5 6
xT k ||y k ||
Ant. Cerrar
6/45
function [lambda,V,cnt]= ItInversa(A,x,tol,max1) % Mtodo de la iteracin inversa e o if nargin<3 tol=sqrt(eps); max1=100; end lambda=0;cnt=0;err=1; while cnt<=max1 & err>tol y=A\x; c1=max(abs(y)); y=y/c1; dc=abs(lambda-c1); dv=norm(x-y); err=max(dc,dv); x=y; lambda=c1; cnt=cnt+1; end V=x;
Ant. Cerrar
7/45
Ant. Cerrar
8/45
xT Ax r(x) = T . x x
Dado u un vector propio aproximado de una matriz A Rnn , el determinar la mejor estimacion del correspondiente valor propio se puede considerar como un problema de mnimos cuadrados n 1 como el siguiente:
x Ax. =
Ant. Cerrar
9/45
xT Ax = T . x x
El cociente de Rayleigh puede utilizarse para acelerar la convergencia de los metodos iterativos que hemos visto, pues en una iteracion k ese cociente da una mejor aproximacion al valor propio que la que se tenga en ese momento.
Ant. Cerrar
El esquema iterativo del metodo de la iteracion inversa con desplazamiento, utilizando como desplazamiento el valor del cociente de Rayleigh, es el que sigue.
10/45
x0 = punto de partida arbitrario for k = 1, 2, . . . xT Axk1 k = k1 xT xk1 k1 Resolver (A k I)y k = xk1 yk xk = ||y k ||
end
El cociente de Rayleigh tambien se puede aplicar a vectores complejos reemplazando el traspuesto de x por su traspuesto conjugado; es decir,
xH Ax . xH x
Ant. Cerrar
11/45
Ejemplo (continuacion)
Aplicando el metodo de la iteracion de potencia con el cociente de Rayleigh al problema que manejamos, se obtienen los resultados de la tabla.
k 0 1 2 3 4 5 6
xT k ||y k || xT Axk /xT xk k k
Observese que las iteraciones convergen mas rapidamente que en los casos anteriores.
Ant. Cerrar
12/45
Utilizando un punto de partida aleatorio, con el mismo problema y el ultimo algoritmo, ocurrira lo que sigue.
k xT k k 0 0,807 0,397 1,896 1 0,924 1,000 1,998 2 1,000 1,000 2,000
u
Ant. Cerrar
El programa de Matlab que implementa el metodo de la iteracion inversa con desplazamiento, usando para este el cociente de Rayleigh es el que sigue (utilizado para el ejemplo anterior).
function [lambda,V,cnt]= ItInvRayleigh(A,x,tol,max1) % Mtodo de la iteracin inversa e o if nargin<3 tol=0.000001; max1=10; end lambda=0;cnt=0;err=1;n=length(A);x=rand(n,1); format long while err>tol sigma=(x*A*x)/(x*x); y=(A-sigma*eye(n))\x; y=y/norm(y,inf); err=norm(abs(y-x),inf); x=y; cnt=cnt+1; end y=A*x; [xk k]=max(abs(x)); lambda=y(k)/x(k); V=x;
13/45
Ant. Cerrar
Deacion
14/45
Idea basica: Calculados un valor y un vector propios mediante la estrategia de la potencia, los demas se pueden obtener mediante deacion: Quitando los conocidos y actuando como cuando, una vez cono cida una de las races, 1 , de un polinomio en , este se divide por 1 , obteniendose otro de grado n 1. Opci n a Si H es una matriz regular de Householder, por ej. tal que o Hx = e1, la transformacion de semejanza que determina H transforma A de la siguiente forma,
HAH
1 bT 0 B
donde B es una matriz de orden n 1 cuyos valores propios son 2 , . . . , n . Despues se trabaja con B para calcular el siguiente valor propio 2 , etc.
Ant. Cerrar
x2 = H 1
y2
, donde =
b y2 , 2 1
es el vector propio correspondiente a 2 en la matriz original A, supuesto 1 = 2 . Opci n b Alternativamente se podra escoger cualquier u1 tal que o T u1 x1 = 1, lo que hara que la matriz A x1uT tuviese como 1 valores propios 0, 2 , . . . , n . Los posibles vectores u1 seran: u1 = 1x1, si A es simetrica y ||x1||2 = 1. u1 = 1y 1, donde y 1 es el vector propio izquierdo correspondiente; es decir, AT y 1 = 1 y 1 , con y T x1 = 1. 1 T u1 = A ek , si x1 esta normalizado, con ||x1|| = 1, y el componente k -esimo de x1 es 1. Las dicultades numericas de esta forma de actuar segun avanza el proceso son importantes.
Ant. Cerrar
Iteracion simultanea
16/45
Su idea basica para calcular simultaneamente varios valores y vectores propios es muy simple: en vez de usar un unico x0 de partida, utilizar una matriz X 0 , n p, de rango p, y hacer
X k = AX k1.
El esquema del algoritmo es el de la tabla que sigue.
El subespacio Im(X k ) converge al subespacio de los vectores propios de A correspondientes a los p mayores valores propios de A, supuesto
Ant. Cerrar
Las importantes dicultades numericas de esta estrategia se soslayan calculando en cada iteracion la factorizacion QR deX k , y ortonormalizando as las columnas de X k . En vez de X k se usara Q como base del subespacio Im(X k ). El esquema resultante metodo de la iteracion ortogonal sera el que sigue. La matriz Qk es n p y Rk , p p.
17/45
Se puede comprobar que las iteraciones convergen a una matriz triangular en bloques en la que el primer bloque sera triangular si los modulos de los distintos valores propios de A son distintos.
Ant. Cerrar
18/45
La version en Matlab para calcular los 5 valores propios mas importantes de una matriz generada aleatoriamente es el que sigue.
function [i,r]=ValItOrt(A) % r mximos valores propios por iteracin ortogonal a o n=length(A); r=5; tol=1e-06; A=A*A; B=A; i=0; disp(Mtodo de la iteracin ortogonal QR); e o Q=eye(n,r); R=eye(r); Z=zeros(size(Q)); vprn=1; vpr=0; err=1; while i<200 & err>tol vpr=vprn; Z=A*Q; [Q,R]=qr(Z,0); vprn=min(diag(R)); i=i+1; err=abs((vprn-vpr)/vprn); end if i==100 disp(No ha habido convergencia); else disp(Valores propios mximos: ); a end format long r=diag(R) disp(Valores calculados con eig()); disp(-sort(eig(-B)));
Ant. Cerrar
19/45
Ant. Cerrar
20/45
Iteracion QR
Si en la iteracion ortogonal p = n, se pueden calcular todos los valores propios de A, as como los correspondientes vectores propios.
21/45
Qk Rk = Ak1.
A partir de aqu,
Ak = QH Ak1Qk = QH (Qk Rk ) Qk = Rk Qk , k k
por lo que cualquier Ak se puede obtener a partir del calculo del producto inverso Rk Qk . 1. Los coecientes en la diagonal principal de Ak , o en los bloques diagonales, convergen a los valores propios de A. 2. Las columnas de Qk forman una base ortonormal del subespacio Im(Ak ). 3. Si A es simetrica, las iteraciones conservan la simetra y Ak converge a una matriz triangular y simetrica: por consiguiente diagonal.
Ant. Cerrar
22/45
Qk Rk = Ak1 k I Ak = Rk Qk + k I,
donde k es una aproximacion de un valor propio.
Como desplazamiento se puede tomar el valor del coeciente ak1 nn de Ak1 , que debera ser una buena aproximacion de n .
Si el bloque diagonal 2 2 mas abajo no es diagonal (lo que indica la existencia de valores propios complejos), habra que calcular los valores propios de esa submatriz para aplicar el desplazamiento correspondiente.
Ant. Cerrar
El siguiente programa de Matlab implementa el metodo de la iteracion QR con desplazamiento para matrices simetricas.
23/45
function [lambda]= IteracionQR(A,tol) % Mtodo de la iteracin QR con desplazamiento e o if nargin<2 tol=sqrt(eps)*norm(A); end lambda=0;n=length(A); for k=n:-1:2 while norm(A(k,1:k-1),inf) > tol sigma=A(k,k); [Q,R]=qr(A(1:k,1:k)-sigma*eye(k,k)); A(1:k,1:k)=R*Q+sigma*eye(k,k); end end lambda=diag(A);
Ant. Cerrar
Transformaciones preliminares
La factorizacion QR de una matriz n n que hay que realizar en cada iteracion del metodo anterior requiere O(n3 ) operaciones. Se podran reducir mucho si la matriz de partida fuese lo mas parecida posible a una triangular. Denici n 2 Una matriz de Hessenberg es una matriz triangular excepto o por una subdiagonal inmediatamente adyacente a la diagonal principal.
24/45
@ @
@ @ @ @ @ @
Ant. Cerrar
Cualquier matriz se puede reducir a la forma de Hessenberg mediante transformaciones ortogonales: por ejemplo de Householder. Si la matriz original es simetrica, la de Hessenberg obtenida sera tridiagonal. La forma de Hessenberg se conserva durante las iteraciones de un procedimiento QR. Ventajas de transformar a Hessenberg: El trabajo por iteracion del metodo QR se reduce a O(n2), en vez de 3 O(n ), para una matriz general, o O(n) para una matriz simetrica. Se necesitaran menos iteraciones por tratarse de una matriz casi triangular (o diagonal) desde el principio.
25/45
26/45
Teniendo en cuenta estas consideraciones, el metodo se implementa en dos fases: matriz simetrica 1a fase
tridiagonal o
2a fase diagonal
matriz general
El trabajo necesario para implementar todo el proceso iterativo el preliminar y el iterativo se indica en la tabla que sigue. Matriz simetrica Matriz general
4 3 n para valores propios solo 10n3 para valores propios solo 3 9n3 valores y vectores propios 25n3 valores y vectores propios
Ant. Cerrar
27/45
De esta tabla cabe apuntar las siguientes consideraciones: Para matrices grandes, el metodo es prohibitivo. Si solo se necesitan unos pocos valores y vectores propios, especialmente para n grandes, el metodo no saca partido de ello.
Ant. Cerrar
28/45
function D=It_QR_2(A,epsilon) %Input Iteracin QR de una matriz simtrica o e % tridiagonal [n,n]=size(A); B=house(A); m=n; D=zeros(n,1); while (m>1) while (abs(B(m,m-1))>=epsilon) %Calcular desplazamiento S=eig(B(m-1:m,m-1:m)); [j,k]=min([abs(B(m,m)*[1 1]-S)]); [Q,U]=qr(B-S(k)*eye(m)); B=U*Q+S(k)*eye(m); end A(1:m,1:m)=B; m=m-1; B=A(1:m,1:m); end D=sort(diag(A));
function T=house (A) [n,n]=size(A); for k=1:n-2 s=norm(A(k+1:n,k)); if (A(k+1,k)<0) s=-s; end r=sqrt(2*s*(A(k+1,k)+s)); W(1:k)=zeros(1,k); W(k+1)=(A(k+1,k)+s)/r; W(k+2:n)=A(k+2:n,k)/r; V(1:k)=zeros(1,k); V(k+1:n)=A(k+1:n,k+1:n)*W(k+1:n); c=W(k+1:n)*V(k+1:n); Q(1:k)=zeros(1,k); Q(k+1:n)=V(k+1:n)-c*W(k+1:n); A(k+2:n,k)=zeros(n-k-1,1); A(k,k+2:n)=zeros(1,n-k-1); A(k+1,k)=-s; A(k,k+1)=-s; A(k+1:n,k+1:n)=A(k+1:n,k+1:n) ... -2*W(k+1:n)*Q(k+1:n)-2*Q(k+1:n)*W(k+1:n); end T=A;
Ant. Cerrar
La ejecucion de este programa para una matriz 10 10, simetrica, generada aleatoriamente es la que sigue.
29/45 >> It_QR_2(A1) ans = 0.01431999891591 0.04920529275253 0.17542171790536 0.28137578750760 0.53137970612468 0.66204600561851 1.31506994446549 1.90188902890340 2.24267984943143 24.95918482130558 >> eig(A1) ans = 0.01431999891591 0.04920529275254 0.17542171790536 0.28137578750761 0.53137970612468 0.66204600561851 1.31506994446549 1.90188902890340 2.24267984943143 24.95918482130557 >>
Ant. Cerrar
Metodo de Jacobi
30/45
El de Jacobi es uno de los metodos mas antiguos para el calculo de los valores propios de una matriz simetrica o compleja hermtica. Utiliza transformaciones de semejanza basadas en rotaciones sobre planos (como las de Givens, recordemos) para hacer cero pares de elementos simetricos de la matriz. Partiendo de A0 , cada iteracion tiene la forma
Ak+1 = J T Ak J k , k
donde cada matriz J k se escoge de tal manera que, por ejemplo,
J T AJ = =
sea diagonal.
c s s c
a b b d
c s s c
c2a 2csb + s2d c2b + cs(a d) s2b c2b + cs(a d) s2b c2d + 2csb + s2a
Ant. Cerrar
Para ello:
31/45
s (a d) s2 1+ 2 = 0. c b c
Haciendo t = s/c se obtiene la ecuacion cuadratica
1+t
(a d) t2 = 0 b
Obtenida t se calculan c = 1/ 1 + t2 y s = c t.
Aplicando sistematicamente estas transformaciones se va consiguiendo que todos los coecientes de la matriz que no estan en la diagonal principal se hagan cero o casi cero (dentro de la tolerancia mq. ). a
Ant. Cerrar
32/45
Existen dos formas de implementar el metodo: Clasico En cada paso se hace cero el mayor elemento en valor absoluto que no este en la diagonal principal. La velocidad de convergencia es lineal aunque en la practica tiende a la cuadratica. Cclico Se hacen barridos por las para anular sucesivamente todos los elementos fuera de la diagonal. Tiene convergencia cuadratica. Al metodo de Jacobi lo superan en prestaciones otros de los expuestos. Es difcil generalizar para matrices no simetricas.
Ant. Cerrar
Ejemplo
33/45
Sea
1 0 2 A0 = 0 2 1 . 2 1 1
Apliquemos el metodo de Jacobi. Anulemos inicialmente los coecientes (1, 3) y (3, 1). Para ello, apliquemosles la rotacion
A1 =
J T A0 J 0 0
Ant. Cerrar
34/45
A2 =
J T A1 J 1 1
A3 =
J T A2 J 2 2
Ant. Cerrar
35/45
Comenzando un nuevo barrido, hagamos cero los coecientes (1, 3) y (3, 1). Usaremos la rotacion
A4 =
J T A3 J 3 3
Ant. Cerrar
function [V,D]=Jacobi_val_1(A) % Clculo de valores y vectores propios de una matriz simtrica a e tol=sqrt(eps); D=A; [n,n]=size(A); V=eye(n); state=1; %Calcular fila p y columna q del elemento de mayor valor % no en la diagonal de A [m1 p]=max(abs(D-diag(diag(D)))); [m2 q]=max(m1); p=p(q); while (state==1) %Se hacen cero Dpq y Dqp t=D(p,q)/(D(q,q)-D(p,p)); c=1/sqrt(t2+1); s=c*t; J=[c s;-s c]; D([p q],:)=J*D([p q],:); D(:,[p q])=D(:,[p q])*J; V(:,[p q])=V(:,[p q])*J; [m1 p]=max(abs(D-diag(diag(D)))); [m2 q]=max(m1); p=p(q); if (abs(D(p,q))<tol*sqrt(sum(diag(D).2)/n)) state=0; end end D=sort(diag(D));
36/45
Ant. Cerrar
37/45
Si usamos el programa para resolver el ejemplo hecho a mano, se obtiene la salida que sigue.
[v d]=Jacobi_val_1(Aeje) v = 0.73923873953921 -0.42713229146437 0.23319197840754 0.88765033546558 -0.63178128111781 -0.17214786532587 d = -0.70927535943692 1.80606343352537 3.90321192591156
Como se puede ver, con las pocas iteraciones que hacamos a mano la aproximacion a los valores propios reales es muy rapida.
Ant. Cerrar
38/45
Ant. Cerrar
39/45
Ant. Cerrar
40/45
ndice I
1. Introduccion 2. Interpretacion geometrica
3. Propiedades de los subespacios propios 4. Propiedades de los valores propios 5. Tipos de matrices y valores propios 6. Lema de Schur y aplicaciones
41/45
42/45
Es decir, hacer
QT AB = B = B
donde
B1 0
B=
d1 f2 d2
0 0
(1)
QB = Q1 Qn Rmm y B = 1 n2 Rnn.
Ant. Cerrar
43/45
Ant. Cerrar
44/45
Segunda fase
Una vez bidiagonalizada la matriz A, se hacen cero los elementos que no estan en la diagonal principal mediante un algoritmo que obtenga
QT B 1S = = diag(1, . . . , n), S
donde QS Rnn y S Rnn son matrices ortogonales. La descomposicion en valores singulares de la matriz A sera
A=U
V T, 0
donde U = QB diag(QS , I mn ) y V = B S .
Ant. Cerrar
ETSII-UPM
45/45
donde U y V k bidiagonal B, de tamao tal forma que VD de una kmatrizson matrices ortogonales, denn:
puede B k . l m Se = kaplicar el mtodo QR con desplazamiento a la matriz T=BTB. Tambin se pueden aplicar una serie (tericamente infinita) de rotaciones de El esquema que se sigue es este. Givens a B para hacerla diagonal:
0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 BG G 21B BG13 G32B 0 12 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 BG 24 G 43B BG35 G54B 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 + 0 0 0
Se comprueba que los elementosno nulos encima de la diagonal principal el Se verica que los elementos de la supra-diagonal tienden a cero (desde tienden el primero) y los de la diagonal a los el primero) y los n-1 hastaa hacerse cero (desde el n-1 hasta valores singulares.de la diagonal a los valores singulares como se quiere. La convergencia puede ser acelerada utilizando desplazamiento.
Ant. Cerrar