PDA

View Full Version : Matrice pseudo-inversa problematica


r_howie
07-01-2006, 22:27
Studiando le dispense dell'esame di robotica, non ho capito una cosa di algebra lineare.

In sintesi il mio problema è: come si calcola la pseudo-inversa della matrice J qua sotto?

Ho letto cos'è una matrice pseudo-inversa, tutto chiaro. Se il rango di una matrice J è pieno (rho = m = n), allora vale l'uguaglianza J# = J^(-1), dove con J# indico la matrice pseudo-inversa mentre con J^(-1) la matrice inversa.

Nel caso più generale (cioè rho = m < n... invece il caso m > n in questa materia non interessa), si ha J# = J^T (J J^T)^(-1) avendo indicato con J^T la trasposta (in realtà sarebbe la trasposta coniugata, ma in questa materia non ci sono numeri complessi) e sottointendendo l'operazione di moltiplicazione.

Prendiamo ora questa matrice: http://img350.imageshack.us/img350/9991/2ba6a67059728caf2b458a68caf945.png

La mia domanda è: come si calcola la sua pseudoinversa, visto che applicando la formula di cui sopra si ottiene http://img350.imageshack.us/img350/6347/22d239dd23d94a7e6d3639e71fb0b1.png e questa matrice prodotto non è certo invertibile, avendo determinante nullo?

La soluzione è http://img350.imageshack.us/img350/9657/2929f7de68acc288665adc94decded.png, ho verificato che effettivamente rispetta tutte le proprietà della pseudo-inversa, ma non capisco come la si calcoli analiticamente.

s e c indicano seno e coseno dello stesso angolo. Il lucido su cui ho studiato è il numero 12 (pagine 5-6) di questo (http://www.dis.uniroma1.it/pub/deluca/robotica1/A.A.2005-2006/) sito; il pedice 1 di s e c nel pdf si può ignorare: in questo esercizio è irrilevante.

pietro84
07-01-2006, 23:14
Studiando le dispense dell'esame di robotica, non ho capito una cosa di algebra lineare.

In sintesi il mio problema è: come si calcola la pseudo-inversa della matrice J qua sotto?

Ho letto cos'è una matrice pseudo-inversa, tutto chiaro. Se il rango di una matrice J è pieno (rho = m = n), allora vale l'uguaglianza J# = J^(-1), dove con J# indico la matrice pseudo-inversa mentre con J^(-1) la matrice inversa.

Nel caso più generale (cioè rho = m < n... invece il caso m > n in questa materia non interessa), si ha J# = J^T (J J^T)^(-1) avendo indicato con J^T la trasposta (in realtà sarebbe la trasposta coniugata, ma in questa materia non ci sono numeri complessi) e sottointendendo l'operazione di moltiplicazione.

Prendiamo ora questa matrice: http://img350.imageshack.us/img350/9991/2ba6a67059728caf2b458a68caf945.png

La mia domanda è: come si calcola la sua pseudoinversa, visto che applicando la formula di cui sopra si ottiene http://img350.imageshack.us/img350/6347/22d239dd23d94a7e6d3639e71fb0b1.png e questa matrice prodotto non è certo invertibile, avendo determinante nullo?

La soluzione è http://img350.imageshack.us/img350/9657/2929f7de68acc288665adc94decded.png, ho verificato che effettivamente rispetta tutte le proprietà della pseudo-inversa, ma non capisco come la si calcoli analiticamente.

s e c indicano seno e coseno dello stesso angolo. Il lucido su cui ho studiato è il numero 12 (pagine 5-6) di questo (http://www.dis.uniroma1.it/pub/deluca/robotica1/A.A.2005-2006/) sito; il pedice 1 di s e c nel pdf si può ignorare: in questo esercizio è irrilevante.


ma nemmeno J è invertibile....sei sicuro che è possibile calcolare la pseudoinversa di una matrice non invertibile? :confused:
io non ricordo bene ma non mi sembra si possa fare...

r_howie
07-01-2006, 23:26
ma nemmeno J è invertibile

Ah, vero.

....sei sicuro che è possibile calcolare la pseudoinversa di una matrice non invertibile? :confused:

Sì. A differenza della matrice inversa (definibile solo quando la matrice di partenza è quadrata e non singolare), la pseudo-inversa esiste sempre. È proprio una generalizzazione dell'inversione, creata per le matrici rettangolari.

pietro84
08-01-2006, 00:20
Ah, vero.


Sì. A differenza della matrice inversa (definibile solo quando la matrice di partenza è quadrata e non singolare), la pseudo-inversa esiste sempre. È proprio una generalizzazione dell'inversione, creata per le matrici rettangolari.

a me non sembra che esista sempre.... se J*J^T non esiste(edit:o meglio non è invertibile)la pesudoinversa non esiste...domani se ho tempo trovo qualche link...io cmq ricordo che se quel prodotto non si può fare la pseudoinversa non esiste

r_howie
08-01-2006, 00:39
a me non sembra che esista sempre.... se J*J^T non esiste(edit:o meglio non è invertibile)la pesudoinversa non esiste...domani se ho tempo trovo qualche link...io cmq ricordo che se quel prodotto non si può fare la pseudoinversa non esiste

Ti ringrazio. Io ho fatto lo stesso tuo ragionamento quando all'inizio ho scritto che http://img350.imageshack.us/img350/6347/22d239dd23d94a7e6d3639e71fb0b1.png non è invertibile.

Eppure, il J# della soluzione dell'esercizio è proprio la pseudo-inversa di quella J, come si può verificare dal fatto che (grazie alle identità della trigonometria) soddisfa le proprietà/definizioni della pseudo-inversa tipo prodotto J J# J = J, etc.

pietro84
08-01-2006, 00:51
Ti ringrazio. Io ho fatto lo stesso tuo ragionamento quando all'inizio ho scritto che http://img350.imageshack.us/img350/6347/22d239dd23d94a7e6d3639e71fb0b1.png non è invertibile.

Eppure, il J# della soluzione dell'esercizio è proprio la pseudo-inversa di quella J, come si può verificare dal fatto che (grazie alle identità della trigonometria) soddisfa le proprietà/definizioni della pseudo-inversa tipo prodotto J J# J = J, etc.

allora qualcosa c'è qualcosa di sbagliato o nella traccia o nella soluzione.
il fatto che soddisfi quella proprietà non è una condizione sufficiente per definire quella matrice pseudoinversa di J...cmq vedo meglio domani
ecco un link che ho trovato a volo: http://www.ce.unipr.it/people/medici/geometry/node2.html

vado a dormire... :ronf:

Banus
08-01-2006, 10:59
Nel caso più generale (cioè rho = m < n... invece il caso m > n in questa materia non interessa),
Attenzione: il ragionamento funziona solo se la matrice è rettangolare di rango massimo. Nel caso di matrice quadrata si riduce all'inversa.
La matrice J che hai usato come esempio non rispetta queste condizioni (rho < m = n) ed è per questo che J*J^T non è invertibile.

pietro84
08-01-2006, 11:47
allora qualcosa c'è qualcosa di sbagliato o nella traccia o nella soluzione.
il fatto che soddisfi quella proprietà non è una condizione sufficiente per definire quella matrice pseudoinversa di J...cmq vedo meglio domani
ecco un link che ho trovato a volo: http://www.ce.unipr.it/people/medici/geometry/node2.html

vado a dormire... :ronf:

ho controllato i tuoi conti,non soddisfa nessuna proprietà, non ho capito come fai a dire che la matrice da te citata soddisfa le proprietà della pseudoiversa:
1.se una matrice è quadrata la pseudoinversa coincide con l'inversa,J non è invertibile,quindi nemmeno la pseudoinversa esiste.
2.JJ#(indicando con J# la matrice da te proposta come pseudoinversa) non da assolutamente la matrice identità quindi non vedo come possa accadere che JJ#J=J :confused:

Banus
08-01-2006, 11:56
2.JJ#(indicando con J# la matrice da te proposta come pseudoinversa) non da assolutamente la matrice identità quindi non vedo come possa accadere che JJ#J=J :confused:
Devono essere rispettate le condizioni (cioè deve esistere l'inversa di J*J^T), non rispettate dalla J di esempio. Se sono rispettate, J*J# = (J J^T)*(J J^T)^(-1) = I e tutto torna.
EDIT: la J# del primo post non la rispetta :p

pietro84
08-01-2006, 11:58
Devono essere rispettate le condizioni (cioè deve esistere l'inversa di J*J^T), non rispettate dalla J di esempio. Se sono rispettate, J*J# = (J J^T)*(J J^T)^(-1) = I e tutto torna.

lo so! infatti ricordavo cosi io...
però l'autore del 3d ha scritto che quella matrice da lui proposta nel primo post soddisfa tutte le proprietà della matrice pseudoinversa di J anche se non era possibile calcolarla analiticamente...perciò sono rimasto un po meravilgliato

Banus
08-01-2006, 13:34
però l'autore del 3d ha scritto che quella matrice da lui proposta nel primo post soddisfa tutte le proprietà della matrice pseudoinversa di J anche se non era possibile calcolarla analiticamente...perciò sono rimasto un po meravilgliato
Allora... sono riuscito a sciogliere la matassa.
La matrice J# riportata nel primo post è sbagliata, la reale J# è quella trasposta. La formula J^T (J J^T)^(-1) vale solo per J di rango massimo, condizione ovviamente non soddisfatta in questo caso, e quindi non si può usare. Per questi casi c'è un'altra (http://planetmath.org/encyclopedia/MoorePenroseGeneralizedInverse.html) formula (grazie planethmath :D), cioè questa:

J# = C^T (B B^T)^(-1) (C^T C)^(-1) B^T

dove J = BC con B e C matrici di rango massimo rho. I segni di trasposta diventano trasposta coniugata nel caso di matrici complesse (ma non è il nostro caso).
Ora, J può essere espressa come prodotto delle matrici:

B^T = [-s c]
C = [2 1]

e svolgendo i calcoli esce la matrice trasposta di quella scritta da r_howie. Attenzione perchè è necessario usare la proprietà s^2 + c^2 = 1, essendo s e c seno e coseno dello stesso angolo. Calcolando J*J#*J si ottiene ancora J (sempre usando le proprietà di s e c).

PS: gli appunti del corso non mi sono serviti granchè, anzi aumentano la confusione non citando esplicitamente il caso r < n,m :p

pietro84
08-01-2006, 14:20
Allora... sono riuscito a sciogliere la matassa.
La matrice J# riportata nel primo post è sbagliata, la reale J# è quella trasposta. La formula J^T (J J^T)^(-1) vale solo per J di rango massimo, condizione ovviamente non soddisfatta in questo caso, e quindi non si può usare. Per questi casi c'è un'altra (http://planetmath.org/encyclopedia/MoorePenroseGeneralizedInverse.html) formula (grazie planethmath :D), cioè questa:

J# = C^T (B B^T)^(-1) (C^T C)^(-1) B^T

dove J = BC con B e C matrici di rango massimo rho. I segni di trasposta diventano trasposta coniugata nel caso di matrici complesse (ma non è il nostro caso).
Ora, J può essere espressa come prodotto delle matrici:

B^T = [-s c]
C = [2 1]

e svolgendo i calcoli esce la matrice trasposta di quella scritta da r_howie. Attenzione perchè è necessario usare la proprietà s^2 + c^2 = 1, essendo s e c seno e coseno dello stesso angolo. Calcolando J*J#*J si ottiene ancora J (sempre usando le proprietà di s e c).

PS: gli appunti del corso non mi sono serviti granchè, anzi aumentano la confusione non citando esplicitamente il caso r < n,m :p



ottimo! quindi ricapitolando la pseudoinversa di una matrice quadrata esiste anche quando l'inversa non esiste?!
ma in pratica esiste per qualsiasi matrice quadrata o rettangolare? :confused:

edit:quindi stando cosi le cose è la soluzione J# a essere sbagliata

r_howie
08-01-2006, 15:19
Che dire... vi ringrazio entrambi di cuore!

L'esame ce l'ho domani. Comunque vada, prossimamente mando una bella email alla docente con le osservazioni (già ne ho una certa lista, i lucidi sono considerati solo "complemento" del libro di testo quindi a volte sono imprecisi o addirittura errati).

Sberloz
20-01-2006, 18:39
ottimo! quindi ricapitolando la pseudoinversa di una matrice quadrata esiste anche quando l'inversa non esiste?!
ma in pratica esiste per qualsiasi matrice quadrata o rettangolare? :confused:

edit:quindi stando cosi le cose è la soluzione J# a essere sbagliata


La pseudoinversa esiste sempre, che la matrice sia rettangolare o quadrata e, in quest'ultimo caso, invertibile o meno. Se la matrice è invertibile semplicemente la pseudoinversa coincide con l'inversa.

pietro84
20-01-2006, 19:14
La pseudoinversa esiste sempre, che la matrice sia rettangolare o quadrata e, in quest'ultimo caso, invertibile o meno. Se la matrice è invertibile semplicemente la pseudoinversa coincide con l'inversa.

si ci arrivammo alla fine,esiste sempre :)

o meglio Banus capi il problema più che io

Sberloz
21-01-2006, 12:06
:)