✔ 들어가며
지난 lec 2에서는 Elimination과 elimination matrix, permutation matrix에 대해 공부를 했다. 그리고 마지막 부분에서 inverse matrix에 대해서 간략히 알아보았다. 이번 강의는 inverse matrix에 대해서 조금 더 자세히 살펴볼 예정이다.
하지만 그 전에 먼저 선형대수학에서의 matrix, row vector, column vector들 사이의 multiplication에 대해서 더 이해를 해보자.
☕️ Multiplications
🍪 Method 1: Multiply matrix by matrix
먼저 알아볼 곱셈(Multiplication)은 행렬과 행렬의 곱인 matrix multiplication이다. 가장 간단한 형태이며 이미 모두가 잘 알고 있는 규칙이라고 생각한다.
따라서 일반적인 방법으로 C=AB 행렬 곱을 해서 C34의 원소를 구해보자. (아래의 그림을 참고하자.)
우리가 아는 방법으로 C의 원소를 구하는 방법은 원소의 위치에서 행에 해당하는 row를 A에서 열에 해당하는 column은 B에서 선택해 둘을 내적하면 된다. 즉, 두 벡터 간의 내적으로 구할 수 있는데 C34=(row3 of A)⋅(column4 of B)와 같이 표현 가능하다.
특히 row3 of A와 col4 of B의 각 원소 입장에서 보면 또한 다음과 같이 표현가능하다.
C34=(row3 of A)⋅(column4 of B)=a31b14+a32b24+...
이 표현은 원소들 곱의 합들로 구해진다. 따라서, Σk=1na3kbk4로도 표현가능하다.
행렬곱에서 중요한 점은 각 행렬의 크기이다. 만약 A가 m × n이라면 m개의 행, n개의 컬럼이 있는거고 이때 B는 n개의 행을 가져야만 한다.
또한, 이때 B의 col의 갯수가 p개라면 C는 m × p의 크기를 가지게 된다. → A×B=(m×n)(n×p)=(m×p).
A, B가 둘다 정사각 행렬이라면 C역시 동일한 크기를 가진다.
🍪 Method 2 : Multiply matrix by column
이번에 살펴볼 연산은 행렬과 벡터의 곱셈을 통해 행렬 곱 행렬을 이해해볼 것이다. 즉, 연산을 column vector의 입장에서 바라보자. 우리는 이미 lec 2에서 행렬 곱 column이 column이라는 것을 공부했다.
A×B=C에서 하나의 column 입장에서 바라보자. A×(column1 of B)=(column1 of C)가 된다. 이는 A의 column들의 어떤 linear combination으로 새로운 column이 만들어지는 형태다.
이를 확장해서 C의 전체 column들 입장에서 보면 행렬 곱하기 column vector로 나온 결과 column p들을 옆으로 나란히 놓은 형태로 생각할 수 있다.
→ C의 columns은 A의 columns의 linear combination이다. (lec 2 참고)
🍪 Method 3: Multiply row by matrix
이번에는 row 입장에서 생각해보자. row는 column과 다르게 matrix 앞에서 곱해져야한다. multiplication 규칙에 의해 (m×n)(1×m)은 계산할 수 없고 (1×m)(m×n)와 같이 row 곱 행렬을 해야한다.
row of A를 모든 B의 rows과 곱해 C의 새로운 row를 만들 수 있다.
column 입장에서 생각했던 것과 위치만 다를뿐 동일한 형태인 것을 알 수 있다.
또한 lec 2에서 row 곱 행렬을 하면 row가 되는 것을 알고 있기에 조금 직관적이지 않더라도 천천히 생각해보면 금방 이해가 간다.
→ C의 rows은 B의 rows의 linear combination이다.
🍪 Method 4 : Multiply Column by Row
다른 한가지 방식은 column×row이다. row×column은 하나의 숫자(scalar)로 계산되지만 column×row는 조금 다르다.
예를 들어 아래와 같은 m×1 크기의 A, 1×p 크기의 B가 있다고 해보자.
⎣⎢⎡234⎦⎥⎤[16]=⎣⎢⎡234121824⎦⎥⎤
A(3×1)×B(1×2)=C(3×2)가 되었고 이는 매우 특별한 행렬이다. 이 행렬은 나중에 배울 rank 1 matrix이고 차차 다루도록하자.
이 행렬의 column들은 ⎣⎢⎡234⎦⎥⎤의 배수들이 되며, row들은 [16]의 배수들이 된다.
또한 기존의 AB로 돌아가면 C는 columns of A×rows of B의 합이 된다.
위와 같이 교재에 나온 그림을 통해 행렬 C는 특별한 column×row들의 합으로 구성할 수 있다는 점을 이해할 수 있다.
🍪 Method 5 : Block Multiplication
다음으로 알아볼 특징은 행렬 곱에서 행렬을 Block으로 나누어 곱할 수 있다는 것이다. 아래의 그림으로 확인해보자.
위와 같이 A를 A1,A2,A3,A4와 같이 행렬을 자를 수 있고 B역시 block 단위로 나눌 수 있다.
이렇게 적절히 잘라진 행렬의 블록들은 기본적인 행렬곱과 동일하게 구하면 된다.
(잘라진 블록들은 크기가 모두 같지 않아도 된다.)
→ Block multiplication은 마치 block rows x block columns와 같이 계산된다.
☕️ Inverse Matrices (Square matrices)
🍪 Inverse Matrix
우선 역행렬이란 어떠한 행렬이 있을때 곱해서 I(Identity matrix)가 나오는 행렬을 의미한다. A의 inverse matrix(역행렬)은 A−1이라고 표기한다.
A−1A=AA−1=I
역행렬은 non-singular case일때 존재하며 invertible하다고 말한다. 즉, 행렬이 invertible하다는 것은 역행렬이 존재하고 non-singular case라는 것이다.
그리고 A의 inverse는 왼쪽, 오른쪽 곱의 순서와 상관없이 identity matrix I가 된다.
🍪 Singular Matrix (No-inverse matrix)
만약 A−1이 존재한다면, A는 invertible하고 non-singular matrix라고 했다. 하지만, 모든 matrices가 inverse를 가지는 것은 아니다.
A=[1236]
이때 A의 col2는 col1의 위에 있다. 따라서 Identity matrix를 만들 수 없게 된다. 그 이유는 col2에 어떠한 수를 곱해도 col1의 scalar 배이기 때문에 [10]과 [01] 같이 서로 방향이 다른 vector를 만들 수가 없기 때문이다.
그리고 Ax=0을 만드는 경우가 존재하게 되는데 x=[−31]과 같은 경우이다. 이 경우에 계산을 해보면 Ax=0이 된다. 이러한 A를 singular matrix라고 한다.
다시 정리를 해보면, Ax=0에서 x를 x=0인 vector라고 가정해보자.
A−1Ax=Ix=x=0 이기에 x=0이 되어야하는데, 가정에 x=0이라고 했기 때문에 모순이 발생한다. 따라서 A는 solution이 존재하기 위해서는 inverse matrix가 존재하야하고, x=0이 아닌 solution이 존재한다면 A를 singular matrix라고 한다.
→ Ax=0를 만족하는 0이 아닌 vector x가 있다면 역행렬은 존재하지 않는다.
→ A가 invertible하면 Ax=0이 되는 x는 0 밖에 없다.
🍪 Calculate Inverse of Matrix
하나의 예시를 통해 inverse matrix를 계산하는 방법을 알아보자.
A=[1237]
Determinants를 안다면 그 값이 0이 아니라는 것을 통해 inverse가 있음을 알 수 있다.
Column 입장에서는 2개의 column vectors이 서로 다른 방향을 가르키고 있으므로 모든 b를 만들 수 있다는 점을 확인할 수도 있다.
[1237][acbd]=AA−1=[1001]I
A가 역행렬이 있다면 column 입장에서 해석하여 2차 연립방정식 2개를 푸는 것으로 해석할 수 있다.
→ A와 첫번째 column이 I의 첫번째 column이 되는 연립방정식
[1237][ac]=Acol1=[10] col1 of I
→ A와 두번째 column이 I의 두번째 column이 되는 연립방정식
[1237][bd]=Acol2=[01] col2 of I
→ 따라서 A×columnjofA−1=columnjofI로 정리할 수 있다.
이렇게 두개의 이차 연립방정식을 푸는 것은 Gaussian Elimination이랑 흡사하게 Gauss-Jordan Elimination으로 해결할 수 있다.
☕️ Gauss-Jordan Elimination to solve Inverse of a matrix
바로 위에서 우리는 A−1를 미지수로 두어 2개의 연립 방정식을 풀어보았다. 하지만 2개의 방정식을 한번에 푸는 방법을 소개하려고 한다. Gauss-Jordan elimination이 그 방법이다.
[1237][ac]=[1237][bd]=[10][01]
두 방정식은 다음과 같고 각각을 해결할 수 있다면 invertible하고 둘을 한번에 해결하기 위해 augmented matrix를 사용하려고 한다.
A와 I를 augmented matrix form으로 이어서 쓰면 다음과 같다.
[12371001]
이제 Gaussian Elimination을 진행하면 다음과 같다.
[12371001]→[10311−201]
가우스는 여기서 step을 멈추지만 Gauss-Jordan은 윗 방향으로 더 진행 한다.
[10311−201]→[10017−2−31]
이렇게 나온 matrix는 좌측은 I 되었고 우측은 A−1가 된다.
→ A−1와 A를 곱하여 확인해보면 I가 나옴을 확인할 수 있다!
6가지 규칙
다음은 inverse matrix의 몇가지 규칙들이다.
-
n×n 행렬의 elimination이 n개의 pivots를 가진다면 inverse는 존재한다.
-
matrix A는 inverse를 2개 가지지 않는다.
if BA=I, AC=I then, B=C.
→ left inverse = right inverse
-
A가 invertible하면 Ax=b의 solution은 하나 (x=A−1b)이다.
-
Ax=0를 만족하는 0이 아닌 vector x가 있다면 역행렬은 존재하지 않는다.
-
2 × 2 행렬에 대해서 ad−bc가 0이 아니면 inverse가 존재한다.
2×2Inverse:[acbd]−1=ad−bc1[d−c−ba]
-
diagonal matrix 대각행렬은 대각 성분이 0이 아닌 경우 inverse가 존재한다.
A=⎣⎢⎡d1⋱dn⎦⎥⎤thenA−1=⎣⎢⎡1/d1⋱1/dn⎦⎥⎤
이렇게 이번 lec 3에서는 행렬의 곱셈에 대한 해석, Inverse matrix, Gauss-Jordan까지 알아보았다. 다음 강의는 LU decomposition에 대해서 알아본다.