Fattorizzazione svd
Salve a tutti, sto facendo esercizi sulla fattorizzazione svd, solo che non mi tornano i calcoli.. vi mostro l'algoritmo che sto usando per calcolare la fattorizzazione:
data una matrice $M = USV^t$, per esempio questa:
$M = ((a,b),(c,d))$
passo 1. Determino gli autovalori e gli autovettori di $M^tM$
passo 2. inserisco le radici quadrate degli autovalori $lambda_1, lambda_2, ... , lambda_n$ sulla diagonale principale di $S$
passo 3. Inserisco gli autovettori di $M^tM$ come colonne di V
passo 4. Inserisco gli autovettori di $MM^t$ come colonne di U
esempio
A =
8 1 6
3 5 7
4 9 2
>> [U, S, V] = SVD(A)
U =
-0.4082 -0.7071 0.5774
0.8165 0.0000 0.5774
-0.4082 0.7071 0.5774
S =
3.4641 0 0
0 6.9282 0
0 0 15.0000
V =
0.7071 0.4082 0.5774
-0.0000 -0.8165 0.5774
-0.7071 0.4082 0.5774
>> U*S*V'
ans =
2.0000 9.0000 4.0000
7.0000 5.0000 3.0000
6.0000 1.0000 8.0000
data una matrice $M = USV^t$, per esempio questa:
$M = ((a,b),(c,d))$
passo 1. Determino gli autovalori e gli autovettori di $M^tM$
passo 2. inserisco le radici quadrate degli autovalori $lambda_1, lambda_2, ... , lambda_n$ sulla diagonale principale di $S$
passo 3. Inserisco gli autovettori di $M^tM$ come colonne di V
passo 4. Inserisco gli autovettori di $MM^t$ come colonne di U
esempio
A =
8 1 6
3 5 7
4 9 2
>> [U, S, V] = SVD(A)
U =
-0.4082 -0.7071 0.5774
0.8165 0.0000 0.5774
-0.4082 0.7071 0.5774
S =
3.4641 0 0
0 6.9282 0
0 0 15.0000
V =
0.7071 0.4082 0.5774
-0.0000 -0.8165 0.5774
-0.7071 0.4082 0.5774
>> U*S*V'
ans =
2.0000 9.0000 4.0000
7.0000 5.0000 3.0000
6.0000 1.0000 8.0000
Risposte
Non ho capito, ma stai usando Matlab per scrivere l'algoritmo o per verificare i calcoli?