numpy linear álgebra básica ajuda
-
22-08-2019 - |
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 !!!
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
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
onde
U U T = I ;
Assim, se
então
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
= (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