Documente Academic
Documente Profesional
Documente Cultură
Descompunerea Valorilor Singulare
Descompunerea Valorilor Singulare
Descompunerea valorilor
singulare
6.1
6.1.1
Preliminarii
Descompunerea valorilor singulare
Vom introduce descompunerea valorilor singulare (DVS) ale unei matrice prin urmatoarea teorema.
Teorema 6.1 Pentru orice matrice A Rmn exist
a matricele ortogonale U
Rmm si V Rnn astfel nc
at
"
T
U AV = =
1 0
0 0
(6.1)
unde
1 = diag(1 , 2 , ..., r ) Rrr ,
(6.2)
1 2 ... r > 0.
(6.3)
cu
Expresiile (6.1)-(6.3) definesc descompunerea valorilor singulare ale matricei A.
Numerele pozitive i , i = 1 : p, p = min(m, n), ordonate descresc
ator
1 2 r > 0, r+1 = r+2 = = p = 0
(6.4)
se numesc valori singulare ale matricei A. Coloanele uj Rm ale matricei ortogonale U se numesc vectori singulari la st
anga ale matricei A. Coloanele vj Rn ale
matricei ortogonale V se numesc vectori singulari (la dreapta) ale matricei A.
DVS a unei matrice scoate n evident
a numeroase aspecte structurale ale matricei
respective si are multiple valente aplicative. Cateva din cele mai importante aplicatii
sunt prezentate succint n paragraful urmator.
Calculul DVS are la baza urmatorul rezultat.
i , i = 1 : r.
(6.6)
Teorema 6.2 sugereaza o procedura pentru calculul valorilor singulare ale unei
matrice A date folosind algoritmul QR simetric pentru calculul valorilor proprii ale
matricei B = AT A. Aceasta procedura nu este recomandata datorita posibilei rele
conditionari numerice a matricei B. G.H.Golub si W.Kahan au elaborat un algoritm
(prezentat n sectiunea urmatoare) care evita calculul explicit al lui B.
6.1.2
Prezentam succint cateva aplicatii ale DVS. Pentru detalii si alte aplicatii recomandam consultarea cursului.
Calculul rangului unei matrice
Fie A = U V T DVS a matricei A Rmn . Intruc
at nmultirea cu matrice nesingulare nu modifica rangul unei matrice, rangul lui A este rangul lui . Prin urmare,
rangul unei matrice este dat de num
arul valorilor sale singulare nenule.
In general, din cauza erorilor de rotunjire, valorile proprii calculate
i vor fi toate
nenule, i.e.
1
2
p > 0.
(6.7)
De aceea n practica numeric
a se utilizeaza conceptul de rang numeric. Rangul
numeric se obtine neglijand valorile singulare mici, e.g. inferioare unei tolerante
precizate
i .
(6.8)
Daca indicele i = r + 1 este primul pentru care (6.8) este satisfacut
a, atunci rangul
numeric al matricei A este
rang(A, ) = r.
(6.9)
Rezolvarea problemei generale CMMP
Problema generala CMMP consta n rezolvarea sistemelor liniare (determinate, supradeterminate sau subdeterminate)
Ax = b
(6.10)
(6.11)
min
minxRn kbAxk
kxk.
(6.12)
m
X
(uTj b)2 .
(6.14)
j=r+1
(6.15)
6.2
Algoritmul DVS
Cea mai buna metoda pentru calculul DVS a fost propusa de G.H.Golub si W.Kahan
n 1965. Algoritmul propus de ei determina simultan U si V aplic
and ntr-un mod
implicit si indirect algoritmul QR simetric matricei B = AT A (i.e. action
and numai
asupra matricei A fara a forma explicit matricea B).
Algoritmul DVS se desfasoar
a n doua etape.
1. Prima etap
a consta n reducerea lui A la o forma bidiagonala J astfel nc
at
T
matricea tridiagonala T = J J coincide cu cea produsa de prima etapa a algoritmului QR simetric aplicat lui B.
2. Etapa a doua consta n reducerea iterativa a matricei bidiagonale J la forma
diagonala prin anularea asimptotica a elementelor supradiagonale. Aceasta poate
fi obtinuta folosind transformari ortogonale bilaterale ce corespund unui pas QR
simetric cu deplasare implicita aplicat lui B.
6.2.1
Etapa 1: bidiagonalizarea
Fie A Rmn si, pentru precizare, m > n. Vom arata cum se calculeaza matricele
ortogonale U Rmm si V Rnn astfel nc
at
f1 g1
f2
T
J = U AV =
g2
..
.
..
..
gn1
fn
(6.16)
este bidiagonala. Matricele U si V vor fi calculate ca produse de transformari Householder (reflectori elementari)
U = U1 U2 Un ,
V = V2 V3 Vn1
(6.17)
U = Im
V = In
Pentru k = 1 : n
Calculeaza Uk = UkT , A
Uk A si U = U Uk
pP
m
2
1. = sign(A(k, k))
i=k A(i, k)
2. u(k) = A(k, k) +
3. Pentru i = k + 1 : m
1. u(i) = A(i, k)
4. = u(k)
5. A(k, k)
% A Uk A
6. Pentru i = k + 1 : m
1. A(i, k) 0
7. Dac
ak<n
1. Pentru j = k + 1 : n
P
1. = ( m
i=k u(i)A(i, j))/
2. Pentru i = k + 1 : m
1. A(i, j) A(i, j) u(i)
% U U Uk
8. Pentru i = 1 : m
P
1. = ( m
j=k U (i, j)u(j))/
2. Pentru j = k : m
1. U (i, j) U (i, j) u(j)
% Calculeaza Vk+1 , A AVk+1 si V V Vk+1
9. Dac
a k <n1
% Vk+1
qP
n
2
1. = sign(A(k, k + 1))
j=k+1 A(k, j)
2. v(k + 1) = A(k, k + 1) +
3. Pentru j = k + 2 : n
1. v(j) = A(k, j)
4. = v(k + 1)
% A AVk+1
5. A(k, k + 1)
6. Pentru j = k + 2 : n
1. A(k, j) 0
7. Pentru i = k + 1 : m
P
1. = ( nj=k+1 A(i, j)v(j))/
2. Pentru j = k + 1 : n
1. A(i, j) A(i, j) v(j)
% V V Vk+1
8. Pentru i = 1 : n
P
1. = ( nj=k+1 V (i, j)v(j))/
2. Pentru j = k + 1 : n
1. V (i, j) V (i, j) v(j)
4. Pentru i = 1 : n 1
1. f (i) = A(i, i)
2. g(i) = A(i, i + 1)
5. f (n) = A(n, n)
Recomandam scrierea unui program distinct de bidiagonalizare av
and ca date de
intrare matricea A si ca iesiri vectorii f Rn al elementelor diagonale ale matricei
bidiagonale J si g Rn1 al elementelor supradiagonale ale matricei bidiagonale J,
precum si matricele de transformare U si V , conform sintaxei
[f, g, U, V ] = JQ(A).
6.2.2
1 0
0 0
(6.19)
astfel nc
at sirul de matrice
T1 = J1T J1 , , Tk = JkT Jk ,
este sirul QR simetric cu deplasare implicita convergent catre
(6.20)
"
21 0
0 0
Rnn ,
(6.21)
(6.22)
2
2
fn1 gn1
+ fn1
gn2
2
+ fn2
fn1 gn1
gn1
T (n 1 : n, n 1 : n) =
(6.23)
U 1 e1 =
t11
t21
0
..
.
f12
g1 f1
0
..
.
(6.24)
T
P12
f12
g1 f1
0
..
.
0
= 0
..
.
= 1 e1 .
(6.25)
3. Calculul matricei
T
C = P12
T P12
(6.26)
(6.27)
(6.28)
(6.29)
Ideea de baza a unui pas DVS consta n a actiona printr-o transformare ortogonala bilaterala J 0 = U T JV astfel nc
at J 0T J 0 = T 0 . Aceasta idee a unui pas DVS
Golub-Kahan este detaliata n cele ce urmeaza.
1. Se aplic
a rotatia Givens P12 , de mai sus, matricei J n loc de matricea T
K = JP12
(6.30)
(6.32)
2
p
3. = gn1
+ fn2 +
+ sign() 2 +
altfel
2
1. = gn1
+ fn2
2. y = f12 ; z = g1 f1
#
# "
"
?
y
T
=
3. % Se calculeaza c, s astfel nc
at P12
0
z
p
2
2
1. r = y + z
2. c = y/r
3. s = z/r
4. % Se calculeaza J JP12 . Fie elementul nenul
% alterant al structurii bidiagonale.
1. = f1 c g1 s
2. g1 = f1 s + g1 c
3. f1 =
4. = f2 s
5. f2 = f2 c
5. % Se calculeaza V V P12 .
Pentru i = 1 : nV
1. = vi1 c vi2 s
2. vi2 = vi1 s + vi2 c
3. vi1 =
6.% Readucerea la forma bidiagonala (6.31)
Pentru k =q1 : n 1
r = fk2 + 2
c = fk /r
s = /r
fk = r
= cgk sfk+1
fk+1 = sgk + cfk+1
gk =
Dac
a k <n1
1. = sgk+1
2. gk+1 = cgk+1
9. % Se calculeaza U U Uk .
Pentru i = 1 : mU
1. = ui,k c ui,k+1 s
2. ui,k+1 = ui,k s + ui,k+1 c
3. ui,k =
1.
2.
3.
4.
5.
6.
7.
8.
10. Dac
a k
q< n 1
1. r = gk2 + 2
2. c = gk /r
3. s = /r
4. gk = r
5. = fk+1 c gk+1 s
6. gk+1 = fk+1 s + gk+1 c
7. fk+1 =
8. = fk+2 s
9. fk+2 = fk+2 c
10. % Se calculeaza V V Vk+1 .
Pentru i = 1 : nV
1. = vi,k+1 c vi,k+2 s
2. vi,k+2 = vi,k+1 s + vi,k+2 c
3. vi,k+1 =
Dupa cum se observa algoritmul face si actualizarea matricelor de transformare.
Intrucat, pe parcursul iteratiilor DVS, se va actiona asupra unor vectori f si g
de lungime variabila (din ce n ce mai mici) iar matricele de transformare care se
actualizeaza pastreaza ordinul initial, n algoritm acest ordin este notat cu mU ,
respectiv nV .
Vom introduce pentru algoritmul de mai sus sintaxa
[f, g, U, V ] = pas DVS(f, g, U, V ).
Tipic, dupa cativa pasi DVS gn1 devine neglijabil si dimensiunea problemei
scade cu o unitate. Pentru a controla procesul de anulare asimptotica a elementelor
se foloseste urmatorul criteriu
daca |gi | tol(|fi | + |fi+1 |) atunci gi = 0,
(6.33)
10
Pentru mai multa claritate algoritmul este prevazut cu comentarii care pun n
evidenta explicatiile de mai sus.
Algoritm 6.6 (Algoritmmul DVS) Dat
a o matrice A Rmn , cu
m > n, si nivelul de tolerant
a tol, algoritmul calculeaza matricea diagonala Rmn si matricele ortogonale U Rmm , V Rnn astfel
ncat = U T AV .
1. % Bidiagonalizarea
[f, g, U, V ] = JQ(A)
2. q = n
3 C
at timp q > 1
1. % Iteratia DVS
[f (1 : q), g(1 : q 1), U, V ] = iter DVS(f (1 : q), g(1 : q 1), U, V )
2. % Anularea elementelor neglijabile
1. index = 1
2. C
at timp index = 1
3. Dac
a |gq1 | tol(|fq1 | + |fq |)
1. gq1 = 0
2. q = q 1
altfel
1. index = 0
4. Dac
aq=1
1. index = 0
4. % Valorile singulare trebuie sa fie pozitive
1. Pentru i = 1 : n
1. Dac
a f (i) < 0
1. f (i) = f (i)
2. V (i, :) = V (i, :)
5. = diag(f )
6. = [; zeros(m n, n)].
Se demonstreaza ca algoritmul de mai sus este numeric stabil n sensul ca descompunerea valorilor singulare calculata este descompunerea valorilor singulare exacta
a unei matrice ce difera nesemnificativ de matricea initial
a data.
6.3
6.3.1
Sarcini de lucru
A. In laborator
11
6.3.2
B. Acas
a
Bibliografie
B. Dumitrescu, C. Popeea, B. Jora, Metode de calcul numeric matriceal.
Algoritmi fundamentali (cap.5), Ed. ALL, Bucuresti, 1998.
12