Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Familias de mtodos
ETSII-UPM
El tipo de problema y las caractersticas de las matrices (simtricas, definidaspositivas, grandes, pequeas, ...).
Los valores y vectores propios que se deseen calcular. En ciertas ocasiones se
desean calcular todos y en otras slo uno o unos pocos; a veces slo se
necesitan los valores propios, etc.
Mtodos basados en la iteracin de matrices.
Mtodos basados en transformaciones de semejanza.
Mtodos basados en transformaciones de congruencia.
Mtodos basados en la descomposicin QR y LLT.
y 1 = z1 z1
y1 = 1
z 2 = Ay1
y2 = z2 z2
y2 = 1
...
z m = Ay m 1
ym = zm zm
ym = 1
y 0 = i xi
z1 = Ay 0 = i Axi = i i xi
p
p
p
p
n 1
1
y p = A y 0 = i A xi = i i xi = n 1 x1 + ... + n 1
x n 1 + n x n
Todos los cocientes entre valores propios son <1 y para m suficientemente
elevado y n0, todos los sumandos del parntesis anterior sern despreciables
frente al ltimo. Se podr escribir, para dos resultados consecutivos:
yi( m +1) y m +1
y m nm n x n
yi( m +1)
n ( m ) = signo ( m )
m +1
y m +1 n n x n
yi
yi y m
xi xi
ETSII-UPM
y0 = 1
Az1 = y 0
y 1 = z1 z1
y1 = 1
Az 2 = y1
y2 = z2 z2
y2 = 1
...
Az m = y m 1
ym = zm zm
ym = 1
y 0 = i xi
z1 = A 1y 0 = i A 1xi = i i1xi
1
1
m
m
m
m
y m = A y 0 = i A xi = i i xi = 1 1x1 + 2 x 2 + ... + n x n
2
n
De nuevo todos los cocientes entre valores propios del parntesis son <1 y para
m suficientemente elevado y 10, todos los sumandos de dicho parntesis
sern despreciables frente al primero:
yi( m ) y m
y m 1 m1x1
yi( m )
1 ( m +1) = signo ( m +1)
( m +1)
yi
1x1
y m +1 1
yi
y m +1
Tampoco aqu la normalizacin afecta a la convergencia. El valor propio se
aproxima mejor (con el doble de cifras exactas que el vector propio)
evalundolo por medio del cociente de Rayleigh:
x1T Ax1
1 = T
x1 x1
ETSII-UPM
Mediante la factorizacin QR
el algoritmo bsico puede ser
como sigue:
Y0 R nr ,
Y0T Y0 = I r
% con Matlab
Q=eye(n,r); R=eye(r); Z=zeros(size(Q));
vprn=1; vpr=0;
while i<100 & abs((vprn-vpr)/vprn)>error
vpr=vprn;
Z=A*Q;
[Q,R]=qr(Z,0);
vprn=min(diag(R));
i=i+1;
end
if i==100
disp('No ha habido convergencia')
else
disp('Nmero de iteraciones');
disp(i);
disp('Valores propios mximos: ');
disp(diag(R));
end
donde,
xT Ax y T PkT APk y y T B k y
R(y ) = T = T T
T
x x
y Pk Pk y
y y
B k = PkT APk
Adems son una mejor aproximacin que las de Qk1 a los vectores propios de
A, en virtud de la multiplicacin por A (que amplifica las componentes en los
mayores vectores propios) y del proceso de Ritz seguido.
La velocidad de convergencia es
n r en lugar de
n r +1
n r
Bases ortonormales
ETSII-UPM
Sea a un vector cualquiera en E y (q1, q2, , qn) los vectores de una base
ortonormal de E. Se desean hallar las componentes i de a expresado en dicha
base ortonormal
El vector a se puede expresar como combinacin lineal de los vectores qi
a = 1q1 + 2q 2 + ... + n q n
Para determinar la componente i basta realizar el producto escalar por qi
qTi a = 1qTi q1 + 2qTi q 2 + ... + nqTi q n = 0 + ... + i qTi q i + ... + 0 = i
y por tanto
= QT a
q 2 = a2 a2
a3 = a3 ( q1T a3 ) q1 ( qT2 a3 ) q 2
q3 = a3 a3
a j = a j ( q1T a j ) q1
j = 2,3,..., n
q2 = a2 a2
a j = a j ( qT2 a j ) q 2
j = 3, 4,..., n
a j = a j ( qTi a j ) qi
j = i + 1,..., n
...
qi = ai ai
a1 = a1
a2 = a2 ( q1T a2 ) q1
q1 = a1 a1
L [ q1 ] = L [ a1 ]
q 2 = a2 a2
a3 = a3 ( q1T a3 ) q1 ( qT2 a3 ) q 2
L [ q1 , q 2 ] = L [ a1 , a2 ]
q 3 = a3 a3
L [ q1 , q 2 , q 3 ] = L [ a1 , a2 , a3 ]
a3 ( q1T a3 ) q1 ( qT2 a3 ) q 2
a3
q3
q1
q2
a1
a2
a 2 ( q1T a 2 ) q1
Matrices ortogonales
ETSII-UPM
qTi q j = ij
T
i
qTi q j = 0, i j )
= 1;
1 0 " 0
q1T
qT2
#
qTn
(q q
q1 q 2
" qn
0 1 " 0
#
# % #
T
bien: Q Q = I
0 0 " 1
Q = [q1 q 2 " q n ]
( )
= (q a )q + (q a )q
= (q a )q + (q a )q + (q a )q
a1 = q1T a1 q1
a2
a3
T
1
T
1
T
2
T
2
T
3
[a1
a 2 " a n ] = [q1 q 2
q1T a1 q1T a 2
T
q
0
2 a2
" qn ]
#
#
0
0
" q1T a n
T
" q2 an
%
#
T
" q n a n
A = QR
[a1
T
q
0
2 a2
#
#
0
0
R
0
0
#
#
0
0
0
" q1T a n
" qT2 a n
%
#
" qTn a n
"
0
%
#
"
0
A = QR
QRx = b
T
y =Q b x
Qy = b
A T Ax = A T b
A = QR
R T QT QRx = R T QT b
Rx = QT b
q1 = a1 a1
a j = a j ( q1T a j ) q1
j = 2,3,..., n
q2 = a2 a2
a j = a j ( qT2 a j ) q 2
j = 3, 4,..., n
a j = a j ( qTi a j ) qi
j = i + 1,..., n
...
qi = ai ai
[a1
a2 " an ] =
= [q1 q 2 " q n ]
q1T a1 q1T a 2
T
0
q
2 a2
#
#
0
0
" q1T a n
" qT2 a n
%
#
T
" q n a n
Se suelen utilizar para anular todos los elementos de un vector excepto el primero, es
decir, para alinearlo con el vector e1.
Supngase un vector cualquiera x. El vector v se define en la forma
e1T {1 0 " 0}
v = x x e1
Hx = x e1
Demostracin:
2 ( x x e1 ) x
vv
vv x
Hx = I 2 T x = x 2 T = x ( x x e1 )
=
T
T
v
v
v
v
( x x e1 ) ( x x e1 )
T
= x ( x x e1 )
2xT x 2 x x1
x x 2 x x1 + x
T
= x ( x x e1 ) = x e1
En el clculo del vector v deben evitarse restas que puedan disminuir la precisin. As,
cuando x1>0, el clculo de v1 se puede hacer en la forma:
v1 = x1 x =
x12 x
x1 + x
vvT
U1 = H1 = I 2 T ; v = x x e1
U1 A = 0 "
A
v v
# # # % #
1 = x
0 "
1 0 0 " 0
0
U 2 = 0
H2
1
0
2
U 2 U1 A = 0 0
#
#
0 0
"
"
"
%
"
ETSII-UPM
Se toma v(1)=1 para que v se pueda almacenar en lugar de los ceros introducidos.
v = x x e1
e1T {1 0 " 0}
Si x1 > 0
v1 =
H = I vvT ;
v = v / v1
2
vT v
Aplicacin a la factorizacin QR
ETSII-UPM
U n1...U 2 U1A = R
Pre-multiplicando por las inversas de las matrices unitarias Ui y teniendo en cuenta que
el producto de matrices ortogonales es tambin ortogonal:
vvT
H = I 2 T = I vvT
v v
HA = A vv A = A v ( A v )
T
1
#
G ij A = #
0
#
0
#
% #
#
#
cai1 sa j1
" c " s " 0
#
A
=
# % #
#
sa + ca
" s " c " 0
j1
i1
#
# % #
#
"
%
"
a1i
#
caii sa ji
#
"
saii + ca ji
"
#
ani
a1 j
a1n
"
#
#
%
#
#
#
%
#
anj
ann
"
"
"
saii + ca ji = 0
aii
c=
aii2 + a 2ji
s=
a ji
aii2 + a 2ji
HA = A vvT A = A v ( AT v )
Caractersticas:
wT
0
U1 =
#
0 " 0
H
U1 AU1 = 0
0
0
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
H
H
H
al final: U 3 U 2 U1 AU1 U 2 U 3 = 0
0
0
*
*
*
0
0
*
*
*
*
0
*
*
*
*
*
*
*
*
*
*
Por simetra, la multiplicacin por la derecha hace los mismos ceros en una fila
que la multiplicacin por la izquierda en una columna, adems de respetar los
ceros anteriores.
Se puede aprovechar la simetra para almacenar el resultado en dos vectores y
para reducir las operaciones aritmticas:
*
H
U1 AU1 = 0
0
0
*
*
*
*
0
*
*
*
*
0
*
*
*
*
0
*
*
*
*
*
*
H
H
H
al final: U 3 U 2 U1 AU1 U 2 U 3 = 0
0
0
*
*
*
0
0
0
*
*
*
0
0
0
*
*
*
0
0
0
*
*
Transformaciones de Givens
ETSII-UPM
Transformaciones de Givens:
k k
c xi s xk = yi
s xi + c xk = 0
c=
xi
x +x
2
i
2
k
s=
xk
xi2 + xk2
% para calcular r
if c==0
r=1;
elseif abs(s)<abs(c) r=sign(c)*s/2;
else
r=sign(s)*2/c;
end
% para recuperar c y s
if r==1
s=1; c=0;
elseif abs(r)<1 s=2*r; c=sqr(1-s^2);
else
c=2/r; s=sqr(1-c^2);
end
sen cos s c
En el caso de matrices nn, si se desea hacer cero el elemento (i, j):
1
#
A = G T AG = G T A #
0
#
0
" 0 " 0
% #
#
" c " s
# % #
" s " c
#
#
" 0 " 0
" 0
#
" 0
#
" 0
% #
" 1
k i, j
ETSII-UPM
2aij
1
2sc
2t
tan 2 =
= 2 2=
r
aii a jj c s 1 t 2
si
t
tan
la
raz
ms
pequea
para
que
<
<
4
4
t = r 1 + r 2
c = 1 1+ t2
s = t c
k i, j
Eso es vlido tambin para los 4 elementos que estn en las filas y columnas i
y j. Sin embargo, dos de estos elementos se han hecho cero, luego los
cuadrados de los dos nuevos elementos de la diagonal igualan a los cuadrados
de los cuatro elementos anteriores:
( aii
Jacobi clsico: en cada paso se hace cero el mayor elemento en valor absoluto
de fuera de la diagonal principal. La matriz tiende a una matriz diagonal cuyos
elementos sern los valores propios. Tericamente este mtodo converge de
modo lineal, pero en la prctica se tiende a obtener convergencia cuadrtica
cuando el nmero de iteraciones alcanza un cierto valor. Esta variante se
utiliza cuando los clculos se hacen manualmente.
Jacobi cclico: se aplican sucesivamente las transformaciones de Jacobi
mediante barridos por filas para anular sucesivamente todos los elementos de
fuera de la diagonal (exceptuando quizs los que son cero o casi cero). Dado el
coste relativamente elevado que tiene el calcular el mximo elemento en cada
paso, esta variante es sensiblemente ms rpida si los clculos se realizan con
un ordenador. El mtodo de Jacobi cclico tiene convergencia cuadrtica.
function [c,s]=jacobi(app,aqq,apq)
if apq==0
c=1; s=0;
else
r=(aqq-app)/(2*apq);
if r>0
t=1/(r+sqrt(1+r^2));
else
t=-1/(-r+sqrt(1+r^2));
end
c=1/sqrt(1+t^2);
s=t*c;
end
Mtodo QR (1/3)
ETSII-UPM
A1 = R 0Q 0
A1 Q1R1
A 2 = R1Q1
A2 Q2R 2
( A=Q R Q Q = Q A Q )
(A = Q Q A Q Q )
Ai Qi R i
( A = Q Q ...Q
1
0
T
1
T
0
T
0
"
A i = R i 1Qi 1
T
T
T
A
Q
...
Q
Q
i 1 i i 1
i0 )
1
Las matrices Ai son matrices semejantes, que conservan por tanto los
valores propios de A.
Se comprueba (y se puede demostrar) que la matriz Ai tiende a una
matriz diagonal cuyos elementos son los valores propios de A.
Mtodo QR (2/3)
ETSII-UPM
*
Ak
0
* * *
* * *
0 k
* *
si << 1, k k
Mtodo QR (3/3)
ETSII-UPM
G 21A 0 = 0 0
# #
0 0
0 " 0 a11
0 " 0 a21
1 " 0 0
# % # #
0 " 1 0
* * " * a11
* * " * 0
* * " * = 0
# # % # #
0 0 " * 0
* * " *
* * " *
* * " *
# # % #
0 0 " *
= sa11 + ca21 = 0
a21
tan =
a21
a11
De forma anloga G32 har cero el elemento (3,2) y as con todos los
elementos de la subdiagonal. La matriz Q es el producto de todas estas Gij.
Si la matriz A es tridiagonal, las rotaciones para hacer cero la subdiagonal
aaden otra diagonal por encima. Sin embargo al hacer posteriormente el
producto A=R*Q se recupera la forma tridiagonal inicial.
Fundamento terico
T
U B AVB = B = 0 0 0 * *
U B = U1U 2 " U n VB = V1V2 " Vn 2
0 0 0 0 *
Los vectores de Householder v se pueden ir
van introduciendo.
0 0 0 0 0
2
3
Hacen falta (4mn 4n /3) flops.
0
donde tanto UR como VR son nn. La matriz
B1 es nn y bidiagonal.
0
La bidiagonalizacin de A y la SVD de B
permiten obtener la SVD de A:
U R B1VRT
R1
U R
T
A = Q = Q
Q
B
V
=
1 R;
0
0
0
U R
UB Q
0
* * * *
* * * *
0 * * *
0 0 * *
0 0 0 *
0 0 0 0
0 0 0 0
V VR
0
0
0 0 0
0
0 0 0 0
+ 0 0
0 0 0
0 0 BG + 0 0 G B 0 0 0 BG 0 0 0 G B 0
13
32
12
21
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
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