Numpy Linear Algebra 기본 도움
-
22-08-2019 - |
문제
이것이 제가해야 할 일입니다.
이 방정식이 있습니다.
도끼 = y
여기서 a는 합리적인 m*n 행렬 (m <= n)이고 x와 y는 올바른 크기의 벡터입니다. 나는 a와 y를 알고 있습니다. X가 무엇인지 모르겠습니다. 또한 AX가 정확히 y와 같은 X가 없다는 것을 알고 있습니다. Ax '가 가능한 한 y에 가까워 지도록 벡터 x'를 찾고 싶습니다. (AX '-Y)는 가능한 한 (0,0,0, ... 0)에 가깝다는 것을 의미합니다.
LSTSQ 기능 중 하나를 사용해야한다는 것을 알고 있습니다.http://www.scipy.org/doc/numpy_api_docs/numpy.linalg.linalg.html#lstsq
또는 SVD 기능 :http://www.scipy.org/doc/numpy_api_docs/numpy.linalg.linalg.html#svd
문서를 전혀 이해하지 못합니다. 누군가 내 문제를 해결하기 위해 이러한 기능을 사용하는 방법을 보여줄 수 있습니까?
정말 감사합니다!!!
해결책
SVD는 M <N의 경우입니다. 왜냐하면 당신은 실제로 충분한 자유도가 없기 때문입니다.
LSTSQ의 문서는 그다지 도움이되지 않습니다. 나는 그것이 m> n의 경우에 가장 적은 정사각형 피팅이라고 생각합니다.
m <n이라면 원할 것입니다 SVD.
다른 팁
그만큼 업데이트 된 문서 좀 더 도움이 될 수 있습니다 ... 당신이 원하는 것 같아요
numpy.linalg.lstsq(A, y)
행렬 A의 SVD는 직교 행렬 U 및 V 및 대각선 매트릭스 σ를 제공합니다.
ㅏ = 유 Σ V 티
어디 유 유티 = 나 ; V V티 = 나
따라서 if
엑스 ㅏ = 와이
그 다음에
엑스 유 Σ V 티 = 와이
엑스 유 Σ V 티 V = 와이 V
엑스 유 Σ = 와이 V
유 티 엑스 Σ = 와이 V
엑스 Σ = 유 와이 V
엑스 = Σ -1 유 티 와이 V
엑스 = V 티 Σ -1 유 티 와이
SVD가 주어졌습니다 ㅏ 당신은 얻을 수 있습니다 엑스.
일반 행렬을 위해서도 AB != 바, 벡터는 사실입니다 엑스 저것 x u == 유 티 엑스.
예를 들어 고려하십시오 엑스 = (x, y), 유 = (a, b; c, d) :
엑스 유 = (x, y) (a, b; c, d)
= (xa+yc, xb+yd)
= (AX+CY, BX+DY)
= (a, c; b, d) (x; y)
= 유 티 엑스
값을 볼 때 상당히 분명합니다. 엑스 유 의도 제품입니다 엑스 그리고의 열 유, 그리고 값 유티엑스 The의 도트 제품입니다 엑스 그리고 줄의 행 유티, 전치에서 행과 열의 관계