ddefalco
Questo è un forum di discussione e non un sistema di messaggistica, in particolare con me.
Ciò vuol dire che ognuno che vi partecipa contribuisce alla discussione di un argomento (topic) cercando di risolvere i problemi che si pongono, con un intervento (post) che viene messo a disposizione di tutti: va pertanto inteso come un dibattito tra tutti nel quale gli interventi (e non le persone), hanno lo stesso peso.
Certamente non è una comunicazione ‘peer to peer’ con me (per fare questo esiste il ricevimento in stanza, l’email, la chat…) né tantomeno dev’essere un’esibizione del proprio sapere o non sapere (esame).

Pertanto bandiamo frasi del tipo “Ci scusiamo per eventuali errori”, “accettiamo consigli per eventuali correzioni”, peggio ancora “domanda per il professore”, …, e pensiamo sempre al “sodo”.
Concediamo alla forma, tutt’al più qualche volta, un saluto.
Domenico de Falco.

ddefalco

ING - IND 13 : DDEFALCO's Forum
 
IndiceCalendarioFAQCercaLista UtentiGruppiRegistratiAccedi
Ultimi argomenti
Cerca
 
 

Risultati secondo:
 
Rechercher Ricerca avanzata

Condividere | 
 

 Rappresentazione di una matrice A con la decomposizione in Valori Singolari

Vedere l'argomento precedente Vedere l'argomento seguente Andare in basso 
AutoreMessaggio
ADEN



Numero di messaggi : 2
Corso di appartenenza : Dinamica e Controllo dei Sistemi Meccanici
NomeCognome : Victor Padova
Data d'iscrizione : 17.10.11

MessaggioTitolo: Rappresentazione di una matrice A con la decomposizione in Valori Singolari    Sab Ott 29, 2011 1:47 pm

In questo esercizio ho verificato che una matrice A possa essere rappresentata come il prodotto delle matrici W, Lambda e V'.
_________________________________________
Listato MATLAB

clear all
clc

('Decomposizione in valori singolari')

A=[1 2 3 4; 5 7 11 13; 17 19 23 27]

('Vediamo il rango')
k=rank(A)

('Calcoliamo la matrice B')
A';
B=A*A'

('Calcoliamo gli autovalori e gli autovettori di B')
[Avt,Avl]=eig(B)

('Verifichiamo che Avt sia ortogonale')
C=Avt*Avt'

('Calcoliamo la Y')

for i=1:k
c(i)=sqrt(Avl(i,i));
end

Y=diag(c)

('Calcoliamo la matrice V')

v=1/Y(1,1)*A'*Avt(:,1);
u=1/Y(2,2)*A'*Avt(:,2);
t=1/Y(3,3)*A'*Avt(:,3);

V=[v u t]

('Calcoliamo la matrice Z=Avt*Y*V')

Z=Avt*Y*V'

('Verifichiamo che Z sia proprio A')

Q=A-Z
Tornare in alto Andare in basso
Vedi il profilo dell'utente
ddefalco
Admin
avatar

Numero di messaggi : 171
Località : Napoli
Corso di appartenenza : Meccanica Applicata alle Macchine
NomeCognome : Domenico de Falco
Data d'iscrizione : 29.12.08

MessaggioTitolo: Re: Rappresentazione di una matrice A con la decomposizione in Valori Singolari    Dom Ott 30, 2011 9:30 pm

Molto bene, mi sembra che sia chiaro l'argomento ed anche il programmino e la verifica che ha fatto.
Mi permetto solo di fare delle piccole modifiche dal punto di vista della programmazione (la parte in rosso va sostituita con la parte in blue) su cui vi prego di riflettere.
La prima modifica snellisce il programma facendo doppio uso della istruzione "diag" una volta serve a ricavare un vettore dalla diagonale della matrice Avl e poi a costruire una matrice a cui diagonale sia ottenuta dalla sqrt del vettore precedente.
La seconda modifica automatizza un o meglio il calcolo della V rendendo tale calcolo possibile per qualsiasi valore di k
________________________________
Listato MATLAB

clear all
clc

('Decomposizione in valori singolari')

A=[1 2 3 4; 5 7 11 13; 17 19 23 27]

('Vediamo il rango')
k=rank(A)

('Calcoliamo la matrice B')
A';
B=A*A'

('Calcoliamo gli autovalori e gli autovettori di B')
[Avt,Avl]=eig(B)

('Verifichiamo che Avt sia ortogonale')
C=Avt*Avt'

clear all
clc

('Decomposizione in valori singolari')

A=[1 2 3 4; 5 7 11 13; 17 19 23 27]

('Vediamo il rango')
k=rank(A)

('Calcoliamo la matrice B')
A';
B=A*A'

('Calcoliamo gli autovalori e gli autovettori di B')
[Avt,Avl]=eig(B)

('Verifichiamo che Avt sia ortogonale')
C=Avt*Avt'

('Calcoliamo la Y')

for i=1:k
c(i)=sqrt(Avl(i,i));
end

Y=diag(c)



Y = diag(sqrt(diag(Avl)))


('Calcoliamo la matrice V')

v=1/Y(1,1)*A'*Avt(:,1);
u=1/Y(2,2)*A'*Avt(:,2);
t=1/Y(3,3)*A'*Avt(:,3);

V=[v u t]



for j = 1 : k
V(:,j) = 1/Y(j,j) * A' * Avt (:,j);
end


('Calcoliamo la matrice Z=Avt*Y*V')

Z=Avt*Y*V'

('Verifichiamo che Z sia proprio A')

Q=A-Z

('Calcoliamo la matrice Z=Avt*Y*V')

Z=Avt*Y*V'

('Verifichiamo che Z sia proprio A')

Q=A-Z
Tornare in alto Andare in basso
Vedi il profilo dell'utente
 
Rappresentazione di una matrice A con la decomposizione in Valori Singolari
Vedere l'argomento precedente Vedere l'argomento seguente Tornare in alto 
Pagina 1 di 1
 Argomenti simili
-
» INFORMATICA -- qualcuno sa come convertire una matrice in immagine bitmap nel C++?
» Formule calcolo Serie/parallelo.
» Elettroiniettore.
» cambio rapporti differenziali
» Angoli assetto

Permessi di questa sezione del forum:Non puoi rispondere agli argomenti in questo forum
ddefalco :: CORSI :: Dinamica e Controllo di Sistemi Meccanici-
Andare verso: