Domanda

Questo è quello che devo fare -

Ho questa equazione -

Ax = y

Se A è una matrice razionale m * n (m <= n), e X e Y sono vettori di la giusta dimensione. So A e Y, non so che cosa x è uguale a. io anche sapere che non v'è alcuna x dove Ax è esattamente uguale a. Voglio trovare il vettore x 'tale che Ax' è il più vicino possibile ai y. Il che significa che (Ax' - y) è il più vicino possibile (0,0,0, ... 0)

.

Lo so che ho bisogno di utilizzare la funzione di lstsq: http://www.scipy.org/doc/numpy_api_docs/ numpy.linalg.linalg.html # lstsq

o la funzione SVD: http://www.scipy.org/doc/numpy_api_docs/ numpy.linalg.linalg.html # SVD

Non capisco la documentazione a tutti. Per favore qualcuno può mostrare me come utilizzare queste funzioni per risolvere il mio problema.

Grazie mille !!!

È stato utile?

Soluzione

SVD è per il caso di m

La documentazione per lstsq non sembrano molto utile. Credo che sia almeno squadretta, per il caso in cui m> n.

Se m SVD .

Altri suggerimenti

La documentazione aggiornato può essere un po 'più disponibile ... sembra che si desidera

numpy.linalg.lstsq(A, y)

La SVD della matrice A dà matrici ortogonali U e V e diagonale Σ matrice tale che

A = U Σ V T

dove     U U T = I ;     V V T = I

Quindi, se

x A = y

poi

x U Σ V T = y

x U Σ V T V = y V

x U Σ = y V

U T x Σ = y V

x Σ = U y V

x = Σ -1 U T y V

x = V T Σ -1 U T y

Quindi, dato SVD di A è possibile ottenere x .


Anche se per matrici generali AB ! = BA , è vero per il vettore x che x U = = U T x .

Per esempio, si consideri x = (x, y), U = (a, b, c, d):

x U = (x, y) (a, b, c, d)

= (xa + YC, xb + yd)

= (ax + cy, bx + dy)

= (a, c, b, d) (x; y)

= U T x

E 'abbastanza evidente quando si guardano i valori in x U essendo i prodotti di punti di x e le colonne di U , ed i valori di U T x essendo i prodotti dot del x e le righe di U T , e il rapporto di righe e colonne in trasposizione

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top