어떤 (m,n) 매트릭스에서 m>n인 경우
Pseudoinverse A+=inv(A'*A)*A' 라고 정의를 합니다.
그리고 그 해는(Ax=b) x=A+*b
A+ : Pseudoinverse
A' : A의 전치행렬
inv : 역행렬
overdetermined system에서는 해를 찾기 위하여 approximate해서 찾을 수 있습니다. 그 대표적인 경우가 아래에 소개한 것들입니다. 아래의 것들은 수치해석에서 가장 중요하게 다루는 내용이구여..
To solve Ax=b, A에 따라서 다양한 방법을 적용하여 해를 구 할 수 있습니다.
*upper(lower) triangular : forward substitution
(전진대입법)
backward substitution
(후진대입법)
*symmetric and positive definite : Cholesky Decomposition
(직접분해법의 한 종류죠!!)
*not tirangular : Gaussian 소거법
*square and many right sides : LU Decomposition(LU 분해법)
*non square : QR Decomposition(QR 분해법)
*any matrix(e.g. ill-conditioned): singular value decomposition(SVD)
강좌#1에서 언급했던...
매트랩에서의 벡터 나눗셈에 대하여 다시한번 Pseudoinverse의 적용예로 설명을 하겠습니다.
To solve Dx=C
일반적을 x=inv(D)*C 하면 됩니다. 그러나 벡터의 연산은?? 가능한가여?
벡터의 역행렬이 존재하는가? 이런 의문점을 제시했고 매트랩에서 이러한 연산을 Pseudoinverse을 이용하여 계산한다고 했습니다.
예를 들어 보져!!!
>>C=1:3;
>>D=2:4;
>>x=C/D
x =
0.6897
결과가 나옵니다. 그럼 위 결과가 어떻게 나온것이냐?
x=D+*C 즉,
>>x=C*pinv(D)
x =
0.6897
이렇게 나오네여.. 이제 이해가 돼시져...
overdetermined system의 해를 이런식으로 매트랩은 바로 구현을 합니다.
엄청난 장점중에 하나라 생각합니다.
여기서 pinv()는 어떤 매트릭스의 pseudoinverse를 구현하는 내장함수 입니다. 직접 구현 하실려면 위에 설명한대로 하심 돼구여!!