NumPy algebra lineare aiuto di base
-
22-08-2019 - |
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 !!!
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
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