Pregunta

Esto es lo que tengo que hacer -

Tengo esta ecuación -

Ax = y

donde A es una matriz racional m * n (m <= n), y x e y son vectores de el tamaño adecuado. Sé que A e Y, no sé lo que x es igual a. yo También sabe que no hay donde x es exactamente igual a Ax y. Quiero encontrar el vector x 'tal que Ax' es lo más cerca posible a y. Lo que significa que (Ax' - y) es lo más cerca posible a (0,0,0, ... 0)

.

Yo sé que tengo que utilizar la función de lstsq: http://www.scipy.org/doc/numpy_api_docs/ numpy.linalg.linalg.html # lstsq

o la función svd: http://www.scipy.org/doc/numpy_api_docs/ numpy.linalg.linalg.html # SVD

No entiendo la documentación en absoluto. Por favor alguien puede mostrar Me cómo utilizar estas funciones para resolver mi problema.

Muchas gracias !!!

¿Fue útil?

Solución

SVD es para el caso de m

Los documentos para lstsq no parecen muy útiles. Creo que es menos apropiado cuadrado, para el caso en que m> n.

Si m SVD .

Otros consejos

puede ser un poco más útil ... parece que quiere

numpy.linalg.lstsq(A, y)

La SVD de la matriz A que da matrices ortogonales U y V y Σ matriz diagonal de tal manera que

A = U Σ V T

donde     U U T = I ;     V V T = I

Por lo tanto, si

x A = y

entonces

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

Así que dada SVD de usted puede conseguir x .


Aunque para matrices generales AB = BA , es cierto para el vector x que x U = = U T x .

Por ejemplo, considere 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

Es bastante obvio cuando nos fijamos en los valores de x T siendo los productos de punto de x y las columnas de T , y los valores en U T x siendo los productos escalares de la x y las filas de U T , y la relación de filas y columnas en la transposición

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top