Buona sera professore,
siamo Giuseppe Mele e Giacomo Belgiorno, abbiamo eseguito il seguente esercizio su matlab, prendendo spunto da altri esercizi del forum, che un paio di lezioni fa ci avevate proposto: data una matrice rettangolare A il nostro obiettivo è stato quello di calcolarci la sua decomposizione in valori singolari in due modi diversi.
Nel primo caso lo abbiamo fatto ricavando 3 matrici, dove :
-Lambda è una matrice quadrata diagonale, i cui elementi sono le radici quadrate prese col segno positivo degli autovalori di AA’ (dove AA’ ha le seguenti proprietà: quadrata, simmetrica e semidefinita positiva). A questi autovalori corrispondono gli autovettori wi che sono i vettori colonna di una matrice W che è ortogonale;
- la terza matrice è costituita dai seguenti vettori colonna: v=((1/lambda)*A’*w) e la chiamo V ed è ortogonale.
Quindi A=W*Lambda*V’ e abbiamo verificato l’uguaglianza.
Il secondo modo è mediante la function svd di matlab dove direttamente otteniamo la Decomposizione di A in valori singolari, e notiamo subito che abbiamo una rappresentazione alternativa a quella precedente infatti la matrice U è una matrice quadrata mxm ortogonale dove le prime r colonne (r=rank(A))sono ottenute dalla matrice W e le restanti m-r sono tali che la U sia ortogonale. Analogamente la matrice D è quadrata nxn e ortogonale dove le prime r colonne sono ottenute dalla matrice V e le rimanenti n-r sono tali che la D sia una matrice ortogonale, mentre la S è una matrice rettangolare mxn.
Si è fatto vedere che entrambe le rappresentazioni della decomposizione in valori singolari di A ci restituiscono la matrice A di partenza.
>> % 'Data una matrice rettangolare A mxn'
A=[1 2 7 3; 3 5 1 4; 4 7 5 9]
A =
1 2 7 3
3 5 1 4
4 7 5 9
>> % ' il cui rango è:'
>> rank(A)
ans =
3
% ' a questa può essere associata una matrice quadrata simmetrica e semidefinita positiva AA' '
B=A*A'
B =
63 32 80
32 51 88
80 88 171
>> % ' calcolo gli autovalori a cui corrispondono i rispettivi autovettori della matrice B '
>> [Avt,Avl]=eig(B)
Avt =
0.3112 0.8589 0.4069
0.7754 -0.4770 0.4138
-0.5494 -0.1868 0.8144
Avl =
1.4905 0 0
0 27.8338 0
0 0 255.6757
>> % ' Da cui possiamo notare che essendo reali gli elementi di B ed essendo essa simmetrica, gli autovalori di B sono reali e positivi'
>> % ' Calcoliamo la matrice Lambda i cui elementi sono disposti lungo la diagonale principale e pari alla radice quadrata degli autovalori di B presi col segno positivo'
>> Lambda = diag(sqrt(diag(Avl)))
Lambda =
1.2209 0 0
0 5.2758 0
0 0 15.9899
>> % ' La matrice W della decomposizione di A in valori singolari coincide con la matrice degli autovettori di B, Avt'
>> % ' Calcoliamo la matrice V i cui elementi sono pari a v=((1/lambda)*A'*w) dove i w i vettori colonna della matrice W'
>> k=rank(A);
for j = 1 : k
V(:,j) = 1/Lambda(j,j) * A' * Avt (:,j);
end
>> % ' Detta C la matrice ottenuta come prodotto delle matrici Avt*Lambda*V' '
>> C=Avt*Lambda*V'
C =
1.0000 2.0000 7.0000 3.0000
3.0000 5.0000 1.0000 4.0000
4.0000 7.0000 5.0000 9.0000
>> % ' verifico che C coincide con A essendo la sua decomposizione in valori singolari'
>> O=A-C
O =
1.0e-014 *
0 -0.0444 0 0
-0.1776 -0.3553 -0.2665 -0.2665
0 -0.0888 -0.0888 0
% ' Sfruttando la function SVD presente in matlab, ricaviamo la decomposizione in valori singolari della matrice A '
[U,S,D]=svd(A)
U =
-0.4069 0.8589 -0.3112
-0.4138 -0.4770 -0.7754
-0.8144 -0.1868 0.5494
S =
15.9899 0 0 0
0 5.2758 0 0
0 0 1.2209 0
D =
-0.3068 -0.2500 -0.3602 -0.8447
-0.5368 -0.3742 -0.5354 0.5340
-0.4587 0.8722 -0.1691 -0.0194
-0.6382 -0.1918 0.7450 -0.0291
>> % ' si nota che la function svd restituisce una rappresentazione alternativa della decomposizione in valori singolari della matrice A '
>> % ' verifico l'uguaglianza A=U*S*D' '
>> F=U*S*D'
F =
1.0000 2.0000 7.0000 3.0000
3.0000 5.0000 1.0000 4.0000
4.0000 7.0000 5.0000 9.0000
>> L=F-A
L =
1.0e-014 *
0.0222 -0.0888 0.3553 0
0 0 -0.0444 -0.0444
-0.0444 -0.1776 -0.1776 0
>> % ' come volevamo dimostrare entrambe le rappresentazioni della SVD di A ci danno come risultato la matrice A di partenza '