4.1. 행렬식
“행렬식”(Determinant)은 사실 행렬보다 먼저 사용된 개념입니다.
이는 독립적으로 개발 된 것이지만, 행렬과 잘 맞아서 보통 같이 사용하는 개념이 되었습니다.
행렬식의 정의는 정사각행렬에서만 사용가능하고, 행렬의 크기에 따라 다양하게 식을 구할 수 있습니다.
2×2 의 경우 A = \left[ \begin{array}{cc} a & b \\ c & d \\ \end{array} \right] 이면, | A | = (a * d) – (b * c) 가 되고,
3×3 의 경우 A = \left[ \begin{array}{cc} a & b & c \\ d & e & f \\ g & h & i \\ \end{array} \right] 이면,
| A | = (a*e*i) + (b*f*g) + (c*d*h) − (c*e*g) − (a*f*h) − (b*d*i) 가 됩니다.
( 이 방식을 “사러스 법칙”이라고도 표현합니다. )
4×4 의 경우 한 열또는 행을 잡고 소행렬식을 이용하여 행렬식을 정의할 수 있습니다.
예를 들어 4×4 행렬의 경우 det 값은 다음과 같이 정의 할 수 있습니다.
(-1)^{i+1} · a_{i1} · det(minor_{i1}) + (-1)^{i+2} · a_{i2} · det(minor_{i2}) + (-1)^{i+3} · a_{i3} · det(minor_{i3}) + (-1)^{i+4} · a_{i4} · det(minor_{i4})
이 때, minor_{i1}은 a_{i1}의 “소행렬”(Minor)로 a_{i1}의 행과 열을 제외한 나머지 행과 열로 행렬을 만든 것입니다.
예시에서 a는 i행의 요소들을 사용한 구조이지만, a_{2i} 같은 i열의 요소들을 사용해서도 가능합니다.
소행렬을 이용한 행렬식을 구하는 방법은 3 × 3 이상의 행렬에서 모두 사용 가능 한 방법입니다.
줄여서, det(A_{n \times n}) = \Sigma^{n}_{j=1} (-1)^{k+j}a_{kj}det(minor_{kj}) (0 \le k \le n) 로 표현합니다.
위의 \Sigma^{n}_{j=1} (-1)^{k+j}a_{kj}det(minor_{kj}) 에서 (-1)^{k+j}det(minor_{kj})부분과 a_{kj}로 나눈다면,
C_{kj} = (-1)^{k+j}det(minor_{kj}) => det(A_{n \times n}) = \Sigma^{n}_{j=1} a_{kj}C_{kj} 가 됩니다.
이 때, C_{kj}를 “여인수”( Cofactor )라고 정의하고, 위의 식을 “여인수 전개”(Cofactor Expansion)라고 표현합니다.
라플라스 전개 정리는 다음과 같습니다.
A_{n \times n} = [ a_{ij} ] : n \leq 2 임의의 i행과 j열에 대하여 두 가지 방식으로 det(A)를 구할 수 있습니다.
1). det(A) = a_{i1}C_{i1} + a_{i2}C_{i2} + \cdots + a_{in}C_{in} = \Sigma^{n}_{j=1}a_{ij}C_{ij} ( i행 전개 )
2). det(A) = a_{1j}C_{1j} + a_{2j}C_{2j} + \cdots + a_{nj}C_{nj} = \Sigma^{n}_{j=1}a_{ij}C_{ij} ( j열 전개 )
라플라스 전개의 꿀 팁은 a_{ij}쪽이 0이면 계산량이 크게 줄기 때문에 잘 선택하면 굉장히 빠르게 구할 수도 있습니다.
또한, 같은 이치로 삼각행렬의 경우 값을 구해보면 일차 곱셈들만으로도 나타낼 수 있음을 알 수 있습니다.
다음은 행렬식의 주요 성질 6가지를 나열 한 것입니다.
두 정사각행렬 A = [a_{ij}]와 B = [b_{ij}]가 정의 될 때,
1). A에 0행(또는 0열)이 있다면, det(A) = 0 입니다.
2). A의 두 행(또는 두 열)을 바꾼 행렬 A’를 정의 할 때, det(A’) = -det(A) 입니다.
3). A의 두 행(또는 두 열)이 같으면, det(A) = 0 입니다.
4). A의 한 행(또는 열)을 k배한 행렬 A’를 정의 할 때, det(A’) = k det(A)
5). 행렬 C의 i행(또는 i열)이 A의 i행(또는 i열)과 B의 i행(또는 i열) 의 합이고, 나머지는 세 행렬이 동일하다면,
det(C) = det(A) + det(B) 입니다.
6). A의 한 행(또는 열)의 스칼라배를 A의 다른 행(또는 열)에 더한 A’를 정의 할 때, det(A’) = det(A) 입니다.
위의 주요성질을 응용하면 기본행렬 E에 대해 다음 세 가지를 유도 할 수 있습니다.
1). E가 항등행렬에서 서로 다른 두 행을 바꿔놓은 행렬이면 det(E) = -1 입니다.
2). E가 항등행렬에서 한 행을 k배 하여 얻은 행렬이면 det(E) = k 입니다.
3). E가 항등행렬에서 한 행을 상수배하여 다른 행에 더한 행렬이면 det(E) = 1 입니다.
다음은 행렬식에 대한 추가적인 정리 가지를 나열 한 것입니다.
1). 두 정사각행렬 A, B가 정의 될 때, det(AB) = det(A)det(B) 가 성립합니다.
2). 정사각행렬 A와 상수 k가 정의 될 때, det(kA) = k^n det(A) 가 성립합니다.
3). 정사각행렬 A가 정의 될 때, det(A) = det(A^T) 가 성립합니다.
행렬식을 이용하여 n개의 미지수를 가지는 n개로 구성된 연립 일차방정식의 해를 구하는 공식으로
“크래머 법칙”(Cramer`s rule)을 사용할 수 있습니다. 크래머 법칙은 다음과 같습니다.
정의 하기전 먼저, A_i(b) 는 A의 i번째 열을 b로 바꾼 행렬이라고 정의합니다.
가역행렬 A와 b를 \mathbb{R}^n 의 벡터라고 정의한다면, Ax = b의 유일한 해는 다음과 같습니다.
x_i = \frac{det( A_i(b) )}{det(A)} ( 1 \leq i \leq n )추가로, b를 기저벡터 e_j로 둔다면, Ax_j = e_j 가 되고,
이 식은 크래머법칙을 적용하면 특이한 식을 얻어 낼 수 있습니다.
x_{ij} = \frac{det(A_i(e_j))}{det(A)} = \frac{(-1)^{j+i}det(A_{ji}) = C_{ji}}{det(A)} 가 성립합니다.
위의 C_{ji}는 C_{ij}^T 로도 표현가능하고 행렬로 한 번에 표기한 것을 A의 “수반(adjoint) 행렬”라고 표현합니다.
( 즉, C_{ji} = C_{ij}^T = \begin{bmatrix} C_{11} & C_{21} & \cdots & C_{n1} \\ C_{12} & C_{22} & \cdots & C_{n2} \\ \vdots & \vdots & \ddots & \vdots \\ C_{1n} & C_{2n} & \cdots & C_{nn} \\ \end{bmatrix} 일 것 입니다. )
수반 행렬은 adj(A)로도 표현가능하고, 이후 4.2. 역행렬을 구하는데 크게 사용되는 개념입니다.
4.2. 역행렬
A가 정사각행렬 n × n 일 때, A × A^{-1} = A^{-1}×A = I_{n×n} 인
“A^{-1}“을 A의 “역행렬”(Inverse Matrix 또는 A’)이라고 표현합니다.
(이 때, 행렬에는 나눗셈이 정의되지 않으므로, A^{-1}은 A의 역수가 아니고 \frac{1} {A} 로 표현하지 않습니다.)
A에 따라 A의 역행렬이 존재할 수도 존재하지 않을 수도 있는데
존재한다면, A를 “가역행렬”(Invertible Matrix)이라고 표현하고
존재하지 않는다면, A를 “비가역행렬”(Non-Invertible Matrix)이라고 표현합니다.
A가 가역행렬이면, A의 역행렬은 유일합니다.
다음은 가역행렬의 성질에 대해 나열 한 것입니다.
1). A 가 가역행렬이면, A^{-1} 도 가역행렬이고 (A^{-1})^{-1} = A
2). A 가 가역행렬이고 c가 0이 아닌 스칼라 이면, c · A 도 가역행렬이고 (c * A)^{-1} = \frac{1} {c} * A^{-1}
3). A 와 B 가 같은 크기의 가역행렬이면, A × B도 가역행렬이고 (A × B)^{-1} = B^{-1} × A^{-1}
4). A 가 가역행렬이면, A^T 도 가역행렬이고, (A^T)^{-1} = (A^{-1})^T
5). A 가 가역행렬이면, n > 0 , n ∈ ℕ => A^n 도 가역행렬 이고, (A^n)^{-1} = (A^{-1})^n = A^{-n}
다음은 역행렬에 대한 행렬식의 성질 세 가지를 나열 한 것입니다.
1). 정사각행렬 A가 가역행렬일 필요 충분 조건은 det(A) \neq 0 입니다.
( 즉, 어떠한 행렬 A의 행렬식 | A | 가 0 이면, A는 비가역행렬이 되고, 0이 아니면 A는 가역행렬이 됩니다. )
2). 가역행렬 A가 존재 할 때, det(A^{-1}) = \frac{1}{det(A)} 입니다.
3). 가역행렬 A가 존재 할 때, A^{-1} = \frac{1}{det(A)}adj(A) 입니다.
단위행렬에 기본 행변환 한 것을 E 라 할 때, ( 기본 행변환은 2.2절에 설명되어 있습니다. )
E 를 어떤 행렬 A에 곱했을 때, E × A 는 A의 기본 행변환 한 행렬 중 하나 A’ 이 되고,
A’ 행렬은 단위행렬이 E 가 될 때, 바꾼 위치와 동일하게 바뀐 행렬입니다.
이 때, 가능한 모든 E × A 들을 “기본행렬”(Elementary Matrix)이라고 표현합니다.
어떠한 가역행렬 A에 대해 A의 모든 기본행렬의 역행렬은 A^{-1}의 기본행렬들에 포함됩니다.
A가 정사각행렬이고 가역행렬 이라면 다음의 성질들을 만족합니다.
1). ℝ^n에서 임의의 b 에 대해, A · \vec{x} = b 는 유일한 해를 갖습니다.
2). A · \vec{x} = 0 의 해는 반드시 자명한 해 입니다.
3). A 의 기약 행사다리꼴은 I_{n×n} 입니다.
4). A 는 기본행렬들의 곱으로 표현됩니다.
역행렬의 계산하기 위해서 첨가행렬 [A | I_{n×n} ] 을 만들어 기본 행변환을 시도하여
[ I_{n×n} | A^{-1} ] 을 만들어서 역행렬을 구할 수 있습니다.
이 방법을 우리가 이미 배운 “가우스-조르단 소거법”(Gauss-Jordan Elimination)입니다.
이전에 배운 가우스-조르단 소거법은 우항이 행렬이 아니지만,
좌항이 기약 행사다리꼴인 것과 기본행변환으로 구하는 방법이 유사하여 같은 방법이라 볼 수 있습니다.
( 2.3절에 정의되어 있습니다. )
4.3. LU 분해
어떠한 행렬이 정의 될 때, 이 행렬을 상삼각 행렬과 하삼각 행렬로 분해 할 수 있습니다.
어떠한 행렬 A가 기본 행변환을 시행하여 U로 만들 수 있다면,
만드는 과정에서 기본 행변환 한 내용들을 단위행렬에 하삼각 행렬의 형태로 저장하여
기본 행변환 들을 곱한 결과와 U를 곱한 결과가 A가 되도록 하는
기본 행변환 들을 곱한 결과를 L로 나타낼 수 있고,
이 때, A = L × U 가 성립합니다. 이를 “LU 분해”라고 표현합니다.
그렇다면, 어떻게 단위행렬에서 기본 행변환 내용들을 추가하여 L로 나타 낼 수 있을까요?
가우스 소거법을 진행 할 때, 행을 교환 하거나 다른행의 스칼라 배한 값과 더해서 상삼각 행렬을 만들었습니다.
이 때, 다른 행의 스칼라 배한 값과 더하는 방법을 R_i – kR_j 꼴로 나타낼 수 있었는데,
이 때, k를 “승수”(mutliplier)라고 표현합니다.
항등행렬 I 에서 위에 내용을 반대로 R_j + kR_i 꼴로 역 순서대로 모두 진행하면 L을 얻어낼 수 있습니다.
하지만, 가우스 소거법에는 위의 연산 뿐만 아니라 행 교환도 연산에 포함되는데,
이를 표현하려면 반드시 하삼각 행렬 또는 상삼각 행렬이 깨지게 됩니다.
그래서 L과 U를 깨지 않고 치환 행렬 P를 따로 정의하여 이 문제를 해결합니다.
생각해보면 치환은 중복되지 않기 때문에 해당 연산에서 모든 치환내용을 하나의 행렬로 나타낼 수 있을 것입니다.
치환 행렬은 항등행렬 I에서 치환한 내역을 동일 하게 적용하면 얻어낼 수 있습니다.
치환행렬 P는 초기에 A에 값을 곱하여 LU분해가 되도록 하기 위해 사용되기 때문에,
초기 행렬 A에 대해 P×A = L×U가 되도록, P를 위의 내용에 맞게 얻어내면 됩니다.
여기서, 위의 식을 고쳐보면 A = P^{-1}×L×U 가 됩니다.
P는 항등행렬 I를 단순 치환으로 나타낸 행렬이기 때문에 P는 반드시 직교행렬이 됩니다.
(즉, 항등행렬 I를 단순 치환한 P에 대해 P^{-1} = P^T 가 반드시 성립합니다. )
따라서, A = P^{-1}×L×U = P^T×L×U 가 되고, 이를 “P^TLU 분해” 라고 표현합니다.