기본적으로 역행렬은 행렬이 정방행렬일 때만 구할 수 있다. 따라서 행렬이 직사각형 행렬이면 역행렬을 구할 수 없다. 이때는 대신 의사역행렬이라는 것을 구한다.
▶ 의사역행렬(pseudo inverse)
행렬 A가 직사각형 행렬인 경우에는 의사역행렬을 구한다. 의사역행렬은 로 표기된다. 의사역행렬을 구하기 위해서 주로 특이값분해(SVD)를 사용한다. 행렬 A를 특이값분해하면
...(공식1: 특이값 분해)
이 된다. 만약 행렬 A가 m > n인 경우(위로 길쭉한 직사각형 행렬)라면 특이값 행렬(m x n)은 아래와 같을 것이다.
행렬 A의 의사역행렬은 아래와 같이 계산된다.
...(공식2: 의사역행렬)
이때 은 특이값행렬 의 0이 아닌 특이값들은 역수를 취하고나서 전치시킨 행렬과 같다. 따라서 n x m의 크기를 갖는다.
예제1>>
그러면 아래와 같은 직사각형 행렬 A(n > m)의 의사역행렬을 구해보자.
우선 특이값분해를 통해 V, U,를 찾아야한다. 이전에 포스팅한 http://bskyvision.com/251에 이 직사각형 행렬을 특이값분해한 결과가 있으니 그대로 가져와서 사용하도록 하겠다.
따라서 는
이 된다. 공식2에 따라 하나씩 대입해주면 행렬 A의 의사역행렬을 구할 수 있다.
n > m이므로 이것은 행렬A의 우역행렬이 된다. 즉, 오른쪽에 곱해줘야 항등행렬이 만들어진다는 의미다.
여기서 항등행렬 I는 2 x 2의 사이즈를 갖는다. 참고로 m > n인 행렬의 의사역행렬을 구했다면, 이것은 행렬A의 좌역행렬이 되므로 왼쪽에 곱해줘야 항등행렬이 만들어진다.
예제 1 끝!
▶ 정리
마지막으로 정리하면 행렬 A가 독립열들을 지닌 정방행렬만이 역행렬을 구할 수 있고, 그것을 제외한 모든 행렬은 구할 수 없는 역행렬 대신 의사역행렬을 구할 수 있다. 의사역행렬은 SVD를 이용해서 어렵지 않게 구할 수 있다.
<참고 자료>
[1] http://darkpgmr.tistory.com/106?category=460967, 다크프로그래머님의 설명
'Research > 선형대수학' 카테고리의 다른 글
[선형대수학] 가우스-요르단 소거법으로 n차 정방행렬의 역행렬 구하기 (0) | 2019.06.25 |
---|---|
[선형대수학] 두 행렬의 곱을 바라보는 세 가지 관점 (6) | 2019.06.24 |
[선형대수학] 행렬A의 행사다리꼴 및 기약행사다리꼴 (0) | 2018.01.16 |
[선형대수학] 선형연립방정식(Ax = b)의 해 구하기 (0) | 2018.01.15 |
[선형대수학] 직사각형 행렬의 대각화: 특이값 분해(Singular value decomposition, SVD) (13) | 2017.12.28 |
[선형대수학] 투영(projection)과 최소자승법(least square method) (16) | 2017.12.19 |
[선형대수학] 양의 정부호 행렬(positive definite matrix)이란? (20) | 2017.11.22 |
[선형대수학] 대각화가 불가능한 행렬들을 위한 유사대각화 방법, Jordan form (2) | 2017.11.07 |