이번 포스팅은 정방행렬(Square matrix)에 대해 다뤄보겠습니다. 다시말해, 정방행렬이 무엇이고 정방행렬의 종류에 대한 내용을 알아보겠습니다.
정방행렬의 개념
먼저 정방행렬이란 행과 열의 크기가 같은 행렬을 말합니다. 즉, 다음과 같은 행렬입니다.
A is a n × n matrix A = [ a 11 a 12 a 13 ⋯ a 1 n a 21 a 22 a 23 ⋯ a 2 n a 31 a 32 a 33 ⋯ a 3 n ⋮ ⋮ ⋮ ⋱ ⋮ a n 1 a n 2 a n 3 ⋯ a n n ] \begin{matrix} A \ \text{is a } \ n \times n \ \text{matrix} && A \ =\ \begin{bmatrix} a_{11} & a_{12} & a_{13} & \cdots & a_{1n} \\ a_{21} & a_{22} & a_{23} & \cdots & a_{2n} \\ a_{31} & a_{32} & a_{33} & \cdots & a_{3n} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & a_{n3} & \cdots & a_{nn} \\ \end{bmatrix} \end{matrix} A is a n × n matrix A = ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎡ a 1 1 a 2 1 a 3 1 ⋮ a n 1 a 1 2 a 2 2 a 3 2 ⋮ a n 2 a 1 3 a 2 3 a 3 3 ⋮ a n 3 ⋯ ⋯ ⋯ ⋱ ⋯ a 1 n a 2 n a 3 n ⋮ a n n ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎤
이제는 정방행렬의 종류에 대해 살펴보겠습니다.
정방행렬의 종류
1. Diagonal matrix(대각행렬)
주 대각 성분을 제외한 모든 성분의 값이 0인 행렬을 말한다. 즉 A A A 를 대각행렬이라 하면 다음과 같다.
A = [ a 11 0 0 ⋯ 0 0 a 22 0 ⋯ 0 0 0 a 33 ⋯ 0 ⋮ ⋮ ⋮ ⋱ ⋮ 0 0 0 ⋯ a n n ] , ∀ i , j ∈ { 1 , ⋯ , n } , i ≠ j ⇒ a i j = 0 A = \begin{bmatrix} a_{11} & 0 & 0 & \cdots & 0 \\ 0 & a_{22} & 0 & \cdots & 0 \\ 0 & 0 & a_{33} & \cdots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & \cdots & a_{nn} \\ \end{bmatrix} ,\ \forall i, j \in \{1, \cdots, n\}, i \ne j \Rightarrow \ a_{ij} = 0 A = ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎡ a 1 1 0 0 ⋮ 0 0 a 2 2 0 ⋮ 0 0 0 a 3 3 ⋮ 0 ⋯ ⋯ ⋯ ⋱ ⋯ 0 0 0 ⋮ a n n ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎤ , ∀ i , j ∈ { 1 , ⋯ , n } , i = j ⇒ a i j = 0
대각행렬의 표현방법(notation)은 다음과 같다.
A = [ a 1 0 0 ⋯ 0 0 a 2 0 ⋯ 0 0 0 a 3 ⋯ 0 ⋮ ⋮ ⋮ ⋱ ⋮ 0 0 0 ⋯ a n ] = diag ( a 1 , ⋯ , a n ) \\ A = \begin{bmatrix} a_{1} & 0 & 0 & \cdots & 0 \\ 0 & a_{2} & 0 & \cdots & 0 \\ 0 & 0 & a_{3} & \cdots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & \cdots & a_{n} \\ \end{bmatrix} = \text{diag}(a_1,\cdots,a_n) A = ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎡ a 1 0 0 ⋮ 0 0 a 2 0 ⋮ 0 0 0 a 3 ⋮ 0 ⋯ ⋯ ⋯ ⋱ ⋯ 0 0 0 ⋮ a n ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎤ = diag ( a 1 , ⋯ , a n )
2. Trianglar matrix(삼각행렬)
삼각행렬은 두 가지 종류가 있습니다. 대각선을 기준으로 나눌 수 있습니다.
3. Identity matrix(항등행렬)
항등행렬은 대각행렬중에서 대각 성분의 모든 값이 1인 행렬을 의미한다.
즉 다음과 같은 행렬을 말합니다.
I n = diag ( 1 , ⋯ , 1 ) = [ 1 0 0 ⋯ 0 0 1 0 ⋯ 0 0 0 1 ⋯ 0 ⋮ ⋮ ⋮ ⋱ ⋮ 0 0 0 ⋯ 1 ] n × n I_n \ =\ \text{diag}(1,\cdots,1) \ = \ \begin{bmatrix} 1 & 0 & 0 & \cdots & 0 \\ 0 & 1 & 0 & \cdots & 0 \\ 0 & 0 & 1 & \cdots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & \cdots & 1 \\ \end{bmatrix}_{n \times n} I n = diag ( 1 , ⋯ , 1 ) = ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎡ 1 0 0 ⋮ 0 0 1 0 ⋮ 0 0 0 1 ⋮ 0 ⋯ ⋯ ⋯ ⋱ ⋯ 0 0 0 ⋮ 1 ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎤ n × n
그리고 이 항등행렬은 다음을 만족합니다.
Let A A A be a m × n m \times n m × n matrix.
I m A = A = A I n I_m A = A = AI_n I m A = A = A I n
다른 행렬과 행렬곱셈(matrix multiplication)을 취해도 자기 자신의 행렬이 나옵니다. 즉 행렬의 행렬곱셈 연산에서 항등원(identity element)가 되는 것입니다.
4. Inverse matrix(역행렬)
def> Invertible matrix(가역행렬)
Let A , B A, B A , B be n × n n \times n n × n matrices
A A A is called "invertible matrix" if ∃ ! B \exist! \ B ∃ ! B such that A B = B A = I n AB = BA = I_n A B = B A = I n
이때 B B B 를 A A A 에 대응하는 역행렬(inverse matrix, A − 1 A^{-1} A − 1 )이라 한다.
example> n × n n \times n n × n Matrix A is invertible?
Gaussian elimination 방법을 사용해 행렬 A A A 의 역행렬을 구해보겠습니다.
A = [ − 1 3 / 2 1 − 1 ] A = \begin{bmatrix} -1& 3/2 \\ 1&-1 \end{bmatrix} A = [ − 1 1 3 / 2 − 1 ]
solution>
step 1 : Create the augmented matrix [A ∣ I 2 A|I_2 A ∣ I 2 ]
A = [ − 1 3 / 2 1 − 1 ] ⇒ [ − 1 3 2 1 0 1 − 1 0 1 ] A \ = \ \begin{bmatrix} -1& 3/2 \\ 1&-1 \end{bmatrix} \quad \Rightarrow \quad \left[ \begin{array}{cc|cc} -1 & {3 \over 2} & 1 & 0 \\ 1 & -1 & 0 & 1 \\ \end{array} \right] A = [ − 1 1 3 / 2 − 1 ] ⇒ [ − 1 1 2 3 − 1 1 0 0 1 ]
step 2 : Elementary row operation : R 1 + R 2 → R 2 R_1 + R_2 \rightarrow R_2 R 1 + R 2 → R 2
[ − 1 3 2 1 0 1 − 1 0 1 ] ⇒ [ − 1 3 2 1 0 0 1 2 1 1 ] \left[ \begin{array}{cc|cc} -1 & {3 \over 2} & 1 & 0 \\ 1 & -1 & 0 & 1 \\ \end{array} \right] \quad \Rightarrow \quad \left[ \begin{array}{cc|cc} -1 & {3 \over 2} & 1 & 0 \\ 0 & {1 \over 2} & 1 & 1 \\ \end{array} \right] [ − 1 1 2 3 − 1 1 0 0 1 ] ⇒ [ − 1 0 2 3 2 1 1 1 0 1 ]
step 3 : Elementary row operation : R 1 − 3 R 2 → R 1 R_1 - 3R_2 \rightarrow R_1 R 1 − 3 R 2 → R 1
[ − 1 3 2 1 0 0 1 2 1 1 ] ⇒ [ − 1 0 − 2 − 3 0 1 2 1 1 ] \left[ \begin{array}{cc|cc} -1 & {3 \over 2} & 1 & 0 \\ 0 & {1 \over 2} & 1 & 1 \\ \end{array} \right] \quad \Rightarrow \quad \left[ \begin{array}{cc|cc} -1 & 0 & -2 & -3 \\ 0 & {1 \over 2} & 1 & 1 \\ \end{array} \right] [ − 1 0 2 3 2 1 1 1 0 1 ] ⇒ [ − 1 0 0 2 1 − 2 1 − 3 1 ]
step 4 : Elementary row operation : − R 1 → R 1 & 2 R 2 → R 2 -R_1\rightarrow R_1 \ \& \ 2R_2\rightarrow R_2 − R 1 → R 1 & 2 R 2 → R 2
[ − 1 0 − 2 − 3 0 1 2 1 1 ] ⇒ [ 1 0 2 3 0 1 2 2 ] \left[ \begin{array}{cc|cc} -1 & 0 & -2 & -3 \\ 0 & {1 \over 2} & 1 & 1 \\ \end{array} \right] \quad \Rightarrow \quad \left[ \begin{array}{cc|cc} 1 & 0 & 2 & 3 \\ 0 & 1 & 2 & 2 \\ \end{array} \right] [ − 1 0 0 2 1 − 2 1 − 3 1 ] ⇒ [ 1 0 0 1 2 2 3 2 ]
So we have that A − 1 = [ 2 3 2 2 ] A^{-1} = \begin{bmatrix} 2 & 3 \\ 2 & 2 \end{bmatrix} A − 1 = [ 2 2 3 2 ]
A = [ 2 4 1 2 ] A = \begin{bmatrix} 2&4 \\ 1&2 \end{bmatrix} A = [ 2 1 4 2 ]
위의 예제는 불가능 합니다. 왜냐하면 기본행 연산을 통해 항등행렬로 만들 수 없기 때문입니다. 역행렬에 대한 것은 다음 포스팅에서 더 자세하게 다루도록하겠습니다.
5. Symmetric matrix(대각행렬)
대각행렬은 정방행렬의 A A A 의 전치행렬 A T A^T A T 과 A A A 가 같은 행렬을 말합니다.
Def> Symmetric matrix
The square matrix A that is equal to its transpose. (i . e . A = A T i.e. \ A = A^T i . e . A = A T )
Example> A A A is a 3 × 3 3 \times 3 3 × 3 matrix.
A = [ 1 2 3 2 4 6 3 6 9 ] → A = A T A = \begin{bmatrix} 1 & 2 & 3 \\ 2 & 4 & 6 \\ 3 & 6 & 9 \end{bmatrix} \quad \rightarrow \quad A = A^T A = ⎣ ⎢ ⎡ 1 2 3 2 4 6 3 6 9 ⎦ ⎥ ⎤ → A = A T
또한 − A = A T -A = A^T − A = A T 인 경우 A A A 를 skew-symmetric matrix 라 합니다.
6. Definite matrix(정방향행렬)
정방향행렬은 행렬의 부호를 나타냅니다. 즉 벡터를 선형변환을 했을 때 선형변환된 벡터와 자기자신의 벡터와의 내적의 값의 부호로 결정됩니다.
Let A A A be a n × n n \times n n × n symmetric matrix.
∀ v ∈ R n \ { 0 ⃗ } \forall v \in \R^n \backslash \{\vec0\} ∀ v ∈ R n \ { 0 } , (either semi positive and semi negative : ∀ v ∈ R n \forall v \in \R^n ∀ v ∈ R n )
Q ( v ) = v T A v = < v , A v > Q(v)\quad = \quad v^TAv \quad = \quad <v,Av> Q ( v ) = v T A v = < v , A v >
positive definite matrix : Q ( v ) > 0 , ∀ v ∈ R n \ { 0 ⃗ } Q(v) > 0, \forall v \in \R^n \backslash \{\vec0\} Q ( v ) > 0 , ∀ v ∈ R n \ { 0 }
semi positive definite matrix : Q ( v ) ≥ 0 , ∀ v ∈ R n Q(v) \ge 0, \forall v \in \R^n Q ( v ) ≥ 0 , ∀ v ∈ R n
negative definite matrix : Q ( v ) < 0 , ∀ v ∈ R n \ { 0 ⃗ } Q(v) < 0, \forall v \in \R^n \backslash \{\vec0\} Q ( v ) < 0 , ∀ v ∈ R n \ { 0 }
semi negative definite matrix : Q ( v ) ≤ 0 , ∀ v ∈ R n Q(v) \le 0, \forall v \in \R^n Q ( v ) ≤ 0 , ∀ v ∈ R n
모든 대각 행렬이 위 4가지로 분류되진 않습니다. 0인 경우 0보다 작은 경우 0보다 큰 경우 다 존재할 수도 있습니다. 이 경우 행렬 A A A 를 indefinite matrxi라 합니다.
example> numpy를 이용해 무작위 벡터의 Q ( v ) Q(v) Q ( v ) 확인
import numpy as np
A = np. array( [ [ 1 , 0 ] , [ 0 , 1 ] ] )
T = 100
p, n, e = 0 , 0 , 0
print ( A)
for _ in range ( T) :
v = np. random. randn( 2 )
while not np. linalg. norm( v, 1 ) :
v = np. random. randn( 2 )
inner = np. dot( v, np. dot( A, v) )
if inner > 0 :
p += 1
elif inner < 0 :
n += 1
else :
e += 1
p, n, e
result>
위와 같이 I 2 I_2 I 2 는 양의 정방향행렬(positive definite matrix)입니다. 이는 당연하게 수학적으로 증명이 가능합니다.
∀ v ∈ R 2 \ { 0 ⃗ } \forall v \in \R^2 \backslash\{\vec0\} ∀ v ∈ R 2 \ { 0 } ,
Q ( v ) = v T I 2 v = v T v = < v , v > = ∣ ∣ v ∣ ∣ 2 > 0 Q(v) = v^TI_2v = v^Tv = <v,v> = ||v||^2 > 0 Q ( v ) = v T I 2 v = v T v = < v , v > = ∣ ∣ v ∣ ∣ 2 > 0
이번 포스팅은 짧게 여기서 마무리 짓겠습니다. 설명이 더 필요하거나 내용이 잘못된 경우 댓글 부탁드리겠습니다. 읽어주셔서 감사합니다.
Reference>