Pergunta

Isto é o que eu preciso fazer -

Eu tenho esta equação -

Ax = y

Quando A é um m * n racional matriz (m <= n), e x e y são vectores de o tamanho certo. Sei A e y, eu não sei o que x é igual. Eu Também sabemos que não existe x, onde Ax é exatamente igual y. Eu quero encontrar o vetor x 'tal que Ax' é tão perto quanto possível y. O que significa que (Ax' - y). Está tão perto quanto possível (0,0,0, ... 0)

Eu sei que eu preciso para usar a função lstsq: http://www.scipy.org/doc/numpy_api_docs/ numpy.linalg.linalg.html # lstsq

ou a função svd: http://www.scipy.org/doc/numpy_api_docs/ numpy.linalg.linalg.html # svd

Eu não entendo a documentação em tudo. Alguém pode por favor mostre me como usar essas funções para resolver o meu problema.

Muito obrigado !!!

Foi útil?

Solução

SVD é para o caso de m

Os docs para lstsq não parecem muito útil. Eu acredito que é justo menos quadrado, para o caso onde m> n.

Se m SVD .

Outras dicas

O documentação atualizada pode ser um pouco mais útil ... parece que você deseja

numpy.linalg.lstsq(A, y)

A SVD da matriz A dá-lhe matrizes ortogonais U e V e S matriz diagonal tal que

A = L S V T

onde U U T = I ; V V T = eu

Assim, se

x A = y

então

x L S V T = y

x L S V T V = y V

x L S = y V

L T x S = y V

x S = L y V

x = S -1 L T y V

x = V T S -1 L T y

Assim, dado SVD de A você pode obter x .


Apesar de matrizes gerais AB ! = BA , é verdade para o vetor x que x U = = U T x .

Por exemplo, considere x = (x, y), L = (a, b, c, d):

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

= (xa + yc, XB + km)

= (ax + cy, bx + Dy)

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

= U T x

É bastante óbvio quando você olha para os valores em x U sendo os produtos de ponto de x e as colunas de U , e os valores em U T x sendo os produtos de ponto do x e as linhas de U T , e a relação de linhas e colunas na transposição

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top