Discussione:
pseudoinversa di una matrice
(troppo vecchio per rispondere)
Stefano
2004-02-14 19:18:16 UTC
Permalink
Per piacere qualcuno mi dica come si calcola la pseudoinversa di una matrice
A.
(quando questo è fattibile "a mano"....)

Grazie.

Stefano
Enrico Gregorio
2004-02-14 20:46:11 UTC
Permalink
Post by Stefano
Per piacere qualcuno mi dica come si calcola la pseudoinversa di una matrice
A.
(quando questo è fattibile "a mano"....)
Ricordo che cos'è la pseudoinversa di A: è l'unica matrice A^+ tale che

A*A^+*A=A, A^+*A*A^+=A^+

Se A è mxn, di rango k, una decomposizione a rango pieno di A è
una scrittura di A come A=BC, dove B è mxk e C è kxn.

Ci sono vari modi di procurarsi una decomposizione
a rango pieno di A: per esempio la QR oppure la LU (con
eventuali scambi di righe).

Quando una matrice ha rango massimo, come la B e la C di una
tale decomposizione, la pseudoinversa si calcola con una normale
inversa.

Prendiamo la B, per la C si fa in modo analogo. Siccome B ha rango
uguale al numero di colonne, B^T*B è invertibile (il rango di B^T*B è
uguale al rango di B). La pseudoinversa di B è allora (B^T*B)^-1*B^T.
Lo è perché soddisfa le richieste per chiamarsi tale.

Con B^T indico la trasposta di B, con ^-1 l'inversa e, per
evitare confusioni, * è il prodotto di matrici. Se le matrici
hanno coefficienti complessi, invece della trasposta devi usare
la trasposta hermitiana.

In definitiva, la pseudoinversa di A è

A^+ = C^T*(C*C^T)^-1*(B^T*B)^-1*B^T

Ciao
Enrico
Adam West
2004-02-14 23:08:43 UTC
Permalink
Post by Stefano
Per piacere qualcuno mi dica come si calcola la pseudoinversa di una matrice
A.
(quando questo è fattibile "a mano"....)
Grazie.
Stefano
Se Ax=b e' un sistema sovradeterminato, ossia con piu' equazioni che
incognite, lo si puo' "risolvere" nel senso dei minimi quadrati:
definisco la soluzione x come quel vettore che minimizza la
quantita'

[norma(Ax-b)]^2 [norma(y)]^2 = y_1^2 + y_2^2 + ... + y_n^2

Si puo' facilmente dimostrare che il vettore x definito sopra soddisfa
l'equazione

A'Ax=A'b A' = trasposta di A

La pseudoinversa di A (o inversa di Moore-Penrose) e' la matrice

A^+ = (A'*A)^-1 * A' A^-1 = inversa di A

Se A e' quadrata, A^+ = A^-1:

A^+ = (A'*A)^-1 * A' = A^-1 * A'^-1 * A' = A^-1

Quindi per calcolare A^+ a mano, devi calcolare
A'*A, farne l'inversa e poi moltiplicare il risultato per A'.

Bat(e)man
Stefano
2004-02-15 00:30:55 UTC
Permalink
Post by Adam West
Post by Stefano
Per piacere qualcuno mi dica come si calcola la pseudoinversa di una matrice
A.
(quando questo è fattibile "a mano"....)
Grazie.
Stefano
Se Ax=b e' un sistema sovradeterminato, ossia con piu' equazioni che
definisco la soluzione x come quel vettore che minimizza la
quantita'
[norma(Ax-b)]^2 [norma(y)]^2 = y_1^2 + y_2^2 + ... + y_n^2
Si puo' facilmente dimostrare che il vettore x definito sopra soddisfa
l'equazione
A'Ax=A'b A' = trasposta di A
La pseudoinversa di A (o inversa di Moore-Penrose) e' la matrice
A^+ = (A'*A)^-1 * A' A^-1 = inversa di A
A^+ = (A'*A)^-1 * A' = A^-1 * A'^-1 * A' = A^-1
Quindi per calcolare A^+ a mano, devi calcolare
A'*A, farne l'inversa e poi moltiplicare il risultato per A'.
A'* è la trasposta coniugata?
Adam West
2004-02-15 21:17:43 UTC
Permalink
Stefano wrote:
(gnam)
Post by Stefano
A'* è la trasposta coniugata?
No, scusami se non sono stato chiaro. Ho indicato con *
il prodotto di matrici:

A'*A e' il prodotto della trasposta di A per A

Bat(e)man
Stefano
2004-02-16 01:41:00 UTC
Permalink
Post by Adam West
(gnam)
Post by Stefano
A'* è la trasposta coniugata?
No, scusami se non sono stato chiaro. Ho indicato con *
A'*A e' il prodotto della trasposta di A per A
Scusami tu se non me ne sono accorto, era abbastanza chiaro che si trattava
del prodotto.
Grazie mille a tutti.

Ciao.

Stefano

Loading...