Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Lecture 19. 행렬식 공식과 여인수

Determinant Formulas and Cofactors — 서술

지난 강의에서는 행렬식의 성질만 다뤘을 뿐 정의는 미뤄 두었다. 세 개의 공리를 만족하는 수가 정말 있는지, 있다면 그 공식이 무엇인지는 답하지 않았다. 이제 공리에서 실제 공식을 뽑아낼 차례이다.

그런데 미리 말해 두자. 이번에 유도할 공식은 실용적으로는 쓸모가 없다. n×nn \times n 행렬에 대해 항이 n!n! 개 나오기 때문이다. n=20n = 20 이면 항이 2.4×10182.4 \times 10^{18} 개이다. 세상의 모든 컴퓨터를 동원해도 끝나지 않는다.

그럼에도 이 공식을 배우는 이유가 있다. 계산하기 위해서가 아니라, 행렬식이 왜 그런 성질을 갖는지 이해하기 위해서이다. 지난 강의의 성질들이 어디서 왔는지가 이 공식을 보면 한눈에 보인다. 그리고 여기서 얻는 여인수는 다음 강의에서 역행렬의 공식이 된다.


1. 2×22 \times 2 가 알려 준 규칙

L18의 마지막에서 2×22 \times 2 를 끝까지 계산했다. 첫 행을 좌표축 방향으로 쪼개 두 항으로 가르고, 각 항의 둘째 행을 다시 쪼개 넷으로 가른 다음, 네 항의 값을 공리로 따졌다.

det[abcd]=acdet[1010]+addet[1001]+bcdet[0110]+bddet[0101]=adbc\det\begin{bmatrix} a & b \\ c & d \end{bmatrix} = ac \det\begin{bmatrix} 1 & 0 \\ 1 & 0 \end{bmatrix} + ad \det\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} + bc \det\begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} + bd \det\begin{bmatrix} 0 & 1 \\ 0 & 1 \end{bmatrix} = ad - bc
두 행이 같은 방향을 고른 항은 죽고, 서로 다른 방향을 고른 항만 살아남는다.

Figure 1:두 행이 같은 방향을 고른 항은 죽고, 서로 다른 방향을 고른 항만 살아남는다.

여기서 눈여겨볼 것은 답이 아니라 살아남는 규칙이다. 세 문장으로 줄일 수 있다.

  1. 각 행이 좌표축 방향을 하나씩 고른다. 곧 행마다 열을 하나씩 고른다.

  2. 두 행이 같은 열을 고르면 그 항은 죽는다. 두 행이 같아져 성질 1에 걸리기 때문이다.

  3. 살아남은 항의 부호는, 남은 0-1 행렬을 II 로 되돌리는 데 드는 행 교환 횟수의 홀짝이다.

이 세 문장에는 “2” 라는 숫자가 한 번도 나오지 않는다. n×nn \times n 에서도 그대로 쓸 수 있다는 뜻이다. 다만 곧바로 nn 으로 가면 기호에 파묻히기 쉬우니, 3×33 \times 3 을 한 번 끝까지 해 보고 가자.


2. 3×33 \times 3 을 끝까지 전개한다

AA 의 세 행을 r1,r2,r3\vv{r}_1, \vv{r}_2, \vv{r}_3 이라 하자. 각 행을 좌표축 방향으로 쪼갠다.

ri=ai1(1,0,0)+ai2(0,1,0)+ai3(0,0,1)=k=13aikek\vv{r}_i = a_{i1}\,(1,0,0) + a_{i2}\,(0,1,0) + a_{i3}\,(0,0,1) = \sum_{k=1}^{3} a_{ik}\,\vv{e}_k

공리 ③을 첫 행에 쓰면 항이 셋, 각 항의 둘째 행에 또 쓰면 아홉, 각 항의 셋째 행에 또 쓰면 스물일곱이 된다. 33=273^3 = 27 개이다.

detA=p=13q=13r=13a1pa2qa3r  det[epeqer]\det A = \sum_{p=1}^{3}\sum_{q=1}^{3}\sum_{r=1}^{3} a_{1p}\,a_{2q}\,a_{3r} \; \det\begin{bmatrix} \vv{e}_p \\ \vv{e}_q \\ \vv{e}_r \end{bmatrix}

남은 행렬은 각 행이 0 아니면 1인 행렬이고, 그 행렬식은 공리만으로 값이 정해진다. p,q,rp, q, r 중에 같은 것이 둘 있으면 그 두 행이 똑같은 e\vv{e} 라 성질 1에 의해 0이다.

p=qdet[epeper]=0p = q \quad\Longrightarrow\quad \det\begin{bmatrix} \vv{e}_p \\ \vv{e}_p \\ \vv{e}_r \end{bmatrix} = 0

그러므로 살아남는 것은 p,q,rp, q, r전부 다른 경우뿐이다. 1, 2, 3을 한 번씩 쓰는 배열, 곧 3!=63! = 6 가지이다. 27개 중 21개가 죽고 6개가 남는다.

여섯 개를 하나씩 적어 보자. 남은 행렬은 II 의 행을 재배열한 것이므로, II 로 되돌리는 데 드는 교환 횟수를 세면 부호가 나온다.

(p,q,r)(p, q, r)남은 행렬의 행II 로 되돌리는 교환행렬식
(1,2,3)(1,2,3)e1,e2,e3\vv{e}_1, \vv{e}_2, \vv{e}_30번+1+a11a22a33+\,a_{11}a_{22}a_{33}
(2,3,1)(2,3,1)e2,e3,e1\vv{e}_2, \vv{e}_3, \vv{e}_12번+1+a12a23a31+\,a_{12}a_{23}a_{31}
(3,1,2)(3,1,2)e3,e1,e2\vv{e}_3, \vv{e}_1, \vv{e}_22번+1+a13a21a32+\,a_{13}a_{21}a_{32}
(1,3,2)(1,3,2)e1,e3,e2\vv{e}_1, \vv{e}_3, \vv{e}_21번-1a11a23a32-\,a_{11}a_{23}a_{32}
(2,1,3)(2,1,3)e2,e1,e3\vv{e}_2, \vv{e}_1, \vv{e}_31번-1a12a21a33-\,a_{12}a_{21}a_{33}
(3,2,1)(3,2,1)e3,e2,e1\vv{e}_3, \vv{e}_2, \vv{e}_11번-1a13a22a31-\,a_{13}a_{22}a_{31}

교환 횟수를 한 줄만 따라가 보자. (2,3,1)(2,3,1) 은 행이 e2,e3,e1\vv{e}_2, \vv{e}_3, \vv{e}_1 이다. 1행과 2행을 바꾸면 e3,e2,e1\vv{e}_3, \vv{e}_2, \vv{e}_1 이 되고, 다시 1행과 3행을 바꾸면 e1,e2,e3=I\vv{e}_1, \vv{e}_2, \vv{e}_3 = I 가 된다. 두 번이므로 det=(1)2=+1\det = (-1)^2 = +1 이다.

여섯 항을 모으면 익숙한 공식이 나온다.

detA=a11a22a33+a12a23a31+a13a21a32a11a23a32a12a21a33a13a22a31\det A = a_{11}a_{22}a_{33} + a_{12}a_{23}a_{31} + a_{13}a_{21}a_{32} - a_{11}a_{23}a_{32} - a_{12}a_{21}a_{33} - a_{13}a_{22}a_{31}

외운 공식이 아니라 27개에서 21개를 걷어 내고 남은 것이다.


3. 빅 포뮬러

3×33 \times 3 에서 한 일에 "3"이 본질적으로 쓰인 곳은 없다. n×nn \times n 도 똑같다.

각 행을 nn 개의 좌표축 방향으로 쪼개면 항이 n×n××n=nnn \times n \times \cdots \times n = n^n 개 나온다. 그중 살아남는 것은 모든 행이 서로 다른 열을 고른 경우뿐이다.

행마다 열을 하나씩, 겹치지 않게 고르는 방법이 몇 가지인가. 첫 행에 nn 가지, 둘째 행에 남은 n1n-1 가지, 그다음 n2n-2 가지. 곧 n!n! 가지이다.

nn 개에서 출발해 n! 개가 남는다n^n \text{ 개에서 출발해 } n! \text{ 개가 남는다}

이것이 L5의 순열이다. 순열 σ\sigma 하나가 항 하나에 대응한다. ii 행에서 σ(i)\sigma(i) 열을 골랐다는 뜻이다.

행마다 하나씩, 열이 겹치지 않게 놓는 방법이 곧 순열이다. 체스판에서 서로 공격하지 않게
룩을 놓는 문제와 같다.

Figure 2:행마다 하나씩, 열이 겹치지 않게 놓는 방법이 곧 순열이다. 체스판에서 서로 공격하지 않게 룩을 놓는 문제와 같다.

계수는 그 자리의 성분들을 곱한 a1σ(1)a2σ(2)anσ(n)a_{1\sigma(1)}a_{2\sigma(2)}\cdots a_{n\sigma(n)} 이고, 남는 행렬식은 그 자리에만 1이 있는 행렬, 곧 순열행렬 PσP_\sigma 의 행렬식이다.

detA=σa1σ(1)a2σ(2)anσ(n)  detPσ\det A = \sum_{\sigma} a_{1\sigma(1)}\, a_{2\sigma(2)} \cdots a_{n\sigma(n)}\;\det P_\sigma

순열행렬의 행렬식은 왜 ±1\pm1 인가

PσP_\sigmaII 로 되돌릴 수 있어야 이 말이 성립한다. 되돌릴 수 있다. e1\vv{e}_1 이 놓인 행을 찾아 1행과 맞바꾸고, 그다음 e2\vv{e}_2 가 놓인 행을 찾아 2행과 맞바꾸고, 이렇게 내려가면 된다. 늦어도 n1n-1 번이면 II 가 된다.

교환을 kk 번 했다면 공리 ②를 kk 번 쓴 것이므로

detPσ=(1)kdetI=(1)k\det P_\sigma = (-1)^k \det I = (-1)^k

이다. 짝수 번이면 +1, 홀수 번이면 -1 이다.

이 부호를 sgnσ\operatorname{sgn}\sigma 라 쓰면 (7)의 식이 교과서에서 보는 모양이 된다.

detA=σ(sgnσ)  a1σ(1)a2σ(2)anσ(n)\det A = \sum_{\sigma} (\operatorname{sgn}\sigma)\; a_{1\sigma(1)}\, a_{2\sigma(2)} \cdots a_{n\sigma(n)}

합은 n!n! 개의 순열 전부에 걸쳐 있다. 이것이 빅 포뮬러이다.

성질들이 여기서 다시 보인다

L18에서 공리로부터 유도했던 것들이 이 공식에서도 읽힌다. 같은 결론에 다른 길로 도착하는 셈이다.

0인 행이 있으면 0. ii 행이 영벡터이면 모든 항이 aiσ(i)=0a_{i\sigma(i)} = 0 을 인수로 가지므로 n!n! 개가 전부 0이다.

삼각행렬은 대각의 곱. 상삼각행렬에서는 i>ji > j 일 때 aij=0a_{ij} = 0 이다. 0이 아닌 항이 되려면 모든 ii 에 대해 σ(i)i\sigma(i) \ge i 여야 한다. nn 행부터 거꾸로 보자. σ(n)n\sigma(n) \ge n 이므로 σ(n)=n\sigma(n) = n 이고, 그러면 σ(n1)n1\sigma(n-1) \ge n-1 인데 nn 은 이미 쓰였으니 σ(n1)=n1\sigma(n-1) = n-1 이다. 이렇게 올라가면 σ\sigma 가 항등순열뿐이다. 그 항의 부호는 교환이 0번이므로 ++ 이다.

detU=a11a22ann\det U = a_{11}a_{22}\cdots a_{nn}

같은 행이 둘이면 0. pp 행과 qq 행이 같다고 하자. 곧 모든 kk 에 대해 apk=aqka_{pk} = a_{qk} 이다. 순열 σ\sigma 마다 짝꿍 τ\tau 를 이렇게 만든다.

τ(p)=σ(q),τ(q)=σ(p),τ(i)=σ(i)    (ip,q)\tau(p) = \sigma(q), \qquad \tau(q) = \sigma(p), \qquad \tau(i) = \sigma(i) \;\;(i \neq p, q)

τ\tauσ\sigma 에 교환을 하나 더 붙인 것이라 부호가 반대이다. 그런데 계수는 같다.

apτ(p)aqτ(q)=apσ(q)aqσ(p)=aqσ(q)apσ(p)a_{p\tau(p)}\,a_{q\tau(q)} = a_{p\sigma(q)}\,a_{q\sigma(p)} = a_{q\sigma(q)}\,a_{p\sigma(p)}

가운데에서 오른쪽으로 갈 때 ap=aqa_{p\,\cdot} = a_{q\,\cdot} 를 두 번 썼다. 나머지 인수는 σ\sigmaτ\tau 가 같으므로 그대로이다. 계수가 같고 부호가 반대이니 두 항이 상쇄된다. n!n! 개가 n!/2n!/2 쌍으로 완전히 짝지어지므로 합이 0이다.


4. 여인수 전개

n!n! 개의 항을 그냥 늘어놓으면 손으로 다룰 수가 없다. 첫 행에서 어느 열을 골랐는지를 기준으로 묶어 보자. 고를 수 있는 열이 nn 개이니 nn 뭉치가 된다.

jj 열을 고른 뭉치의 항들은 전부 a1ja_{1j} 를 인수로 갖는다. 밖으로 빼내자.

detA=j=1na1jD1j,D1j=(j 열을 고른 뭉치에서 a1j 를 뺀 나머지의 합)\det A = \sum_{j=1}^{n} a_{1j}\,D_{1j}, \qquad D_{1j} = (j \text{ 열을 고른 뭉치에서 } a_{1j} \text{ 를 뺀 나머지의 합})

이제 남은 물음은 하나이다. D1jD_{1j} 는 무엇인가.

가장 쉬운 경우 — 첫 행이 1열을 골랐을 때

j=1j = 1 이라 하자. 첫 행이 1열을 썼으므로 나머지 2,,n2, \dots, n 행은 2,,n2, \dots, n 열에서 겹치지 않게 고른다. 그런 고르기는 AA 에서 1행과 1열을 지운 (n1)×(n1)(n-1) \times (n-1) 행렬의 빅 포뮬러 항과 하나씩 정확히 대응한다.

부호도 그대로이다. σ(1)=1\sigma(1) = 1 인 순열행렬을 II 로 되돌릴 때 1행은 이미 제자리라 건드릴 일이 없고, 나머지에서 하는 교환이 작은 행렬에서 세는 교환과 똑같기 때문이다.

D11=detM11,M11=(A 에서 1행과 1열을 지운 것)D_{11} = \det M_{11}, \qquad M_{11} = (A \text{ 에서 1행과 1열을 지운 것})

부호를 고칠 것이 없다. 첫 칸이 ++ 인 이유가 여기에 있다.

일반적인 jj — 열을 앞으로 끌어온다

j1j \neq 1 이면 위의 논리를 그대로 쓸 수 없다. 쓸 수 있게 만들면 된다. jj 열을 1열 자리로 옮겨 놓고 방금의 결과를 쓰는 것이다.

옮기는 방법이 중요하다. 이웃끼리만 바꿔 가며 옮긴다. jj 열과 j1j-1 열을 바꾸고, 그다음 j2j-2 열과 바꾸고, 1열 자리에 닿을 때까지 반복한다. 교환 횟수는 j1j-1 번이다.

(1,2,,j1,  j,  j+1,)    (j,  1,2,,j1,  j+1,)(1, 2, \dots, j-1, \;j,\; j+1, \dots) \;\longrightarrow\; (j, \;1, 2, \dots, j-1,\; j+1, \dots)

이웃 교환만 쓰는 데에는 이유가 있다. 이렇게 하면 jj 열을 뺀 나머지 열들의 앞뒤 순서가 그대로 보존된다. 그러므로 옮긴 행렬에서 1행과 1열을 지우고 남는 것이 원래의 M1jM_{1j} 와 글자 그대로 같다. 만약 jj 열과 1열을 곧바로 맞바꿨다면 1열이 jj 자리로 밀려나 순서가 어긋났을 것이다.

열을 한 번 바꿀 때마다 행렬식의 부호가 뒤집힌다. 열에 대한 이 성질은 L18의 detAT=detA\det A^{\mathsf{T}} = \det A 에서 나온 것이었다(L18의 (24)). 옮긴 행렬을 AA' 이라 하면

detA=(1)j1detAdetA=(1)j1detA\det A' = (-1)^{\,j-1} \det A \qquad\Longleftrightarrow\qquad \det A = (-1)^{\,j-1} \det A'

이다. (1)j1(-1)^{j-1} 을 반대편으로 넘겨도 부호가 같은 것은 (1)j1(-1)^{j-1}±1\pm1 이기 때문이다.

AA' 에서는 첫 행이 1열을 골랐고, 그 성분이 a1ja_{1j} 이며, 소행렬이 M1jM_{1j} 이다. (15)에 의해 AA' 에서 a1ja_{1j} 의 계수는 +detM1j+\det M_{1j} 이다. 되돌리면

D1j=(1)j1detM1j=(1)1+jdetM1jD_{1j} = (-1)^{\,j-1}\,\det M_{1j} = (-1)^{\,1+j}\,\det M_{1j}

이다. j1j - 11+j1 + j 는 2만큼 차이 나므로 (1)(-1) 의 지수로는 같은 값이다.

이 값에 이름을 붙이자.

(14)의 자리에 (18)의 결과를 넣으면 첫 행에 대한 여인수 전개가 완성된다.

detA=a11C11+a12C12++a1nC1n\det A = a_{11}C_{11} + a_{12}C_{12} + \cdots + a_{1n}C_{1n}

아무 행으로나 묶어도 된다

첫 행이 특별한 이유는 없다. ii 행으로 묶고 싶으면 ii 행을 먼저 맨 위로 끌어올린 다음 위의 논리를 그대로 쓰면 된다. 이번에도 이웃끼리만 바꾼다. ii 행과 i1i-1 행을 바꾸고, i2i-2 행과 바꾸고, 맨 위에 닿을 때까지. i1i-1 번이 든다.

행 교환도 부호를 뒤집으므로 앞의 (1)j1(-1)^{j-1}(1)i1(-1)^{i-1} 이 곱해진다.

(1)i1(1)j1=(1)i+j2=(1)i+j(-1)^{\,i-1}\,(-1)^{\,j-1} = (-1)^{\,i+j-2} = (-1)^{\,i+j}

정확히 Definition 1의 부호이다. 그러므로 어느 행으로 묶어도 같은 모양이 된다.

detA=j=1naijCij(어느 행 i 를 골라도 된다)\det A = \sum_{j=1}^{n} a_{ij}C_{ij} \qquad (\text{어느 행 } i \text{ 를 골라도 된다})

아무 열로나 묶어도 된다

열에 대한 전개는 따로 유도할 필요가 없다. detAT=detA\det A^{\mathsf{T}} = \det A 이고, ATA^{\mathsf{T}} 의 행이 AA 의 열이기 때문이다. ATA^{\mathsf{T}}jj 행으로 전개한 식을 AA 의 말로 옮기면 그것이 곧 AAjj 열로 전개한 식이다.

detA=i=1naijCij(어느 열 j 를 골라도 된다)\det A = \sum_{i=1}^{n} a_{ij}C_{ij} \qquad (\text{어느 열 } j \text{ 를 골라도 된다})

(22)의 식과 (23)의 식은 생김새가 거의 같지만 더하는 첨자가 다르다. 앞의 것은 jj 로, 뒤의 것은 ii 로 더한다. 행을 고정하고 옆으로 훑느냐, 열을 고정하고 아래로 훑느냐의 차이이다.

부호는 외울 것이 없다

(1)i+j(-1)^{i+j} 는 체스판 무늬이다. 왼쪽 위가 ++ 이고 옆으로 한 칸 갈 때마다 뒤집힌다.

[+++++]\begin{bmatrix} + & - & + & \cdots \\ - & + & - & \cdots \\ + & - & + & \cdots \\ \vdots & & & \ddots \end{bmatrix}

예제

L18에서 쓰던 행렬로 해 보자.

A=[121381041]A = \begin{bmatrix} 1 & 2 & 1 \\ 3 & 8 & 1 \\ 0 & 4 & 1 \end{bmatrix}

먼저 첫 행으로 전개한다. 1행과 jj 열을 지우고 남은 2×22 \times 2 의 행렬식에 체스판 부호를 붙인다.

C11=+det[8141]=84=4,C12=det[3101]=(30)=3,C13=+det[3804]=120=12C_{11} = +\det\begin{bmatrix} 8 & 1 \\ 4 & 1 \end{bmatrix} = 8 - 4 = 4, \quad C_{12} = -\det\begin{bmatrix} 3 & 1 \\ 0 & 1 \end{bmatrix} = -(3 - 0) = -3, \quad C_{13} = +\det\begin{bmatrix} 3 & 8 \\ 0 & 4 \end{bmatrix} = 12 - 0 = 12
detA=14+2(3)+112=46+12=10\det A = 1 \cdot 4 + 2 \cdot (-3) + 1 \cdot 12 = 4 - 6 + 12 = 10

L18에서 피벗을 곱해 얻은 10과 같다.

첫 행에서 하나를 고르고, 그 행과 열을 지우고, 남은 것의 행렬식을 구한다.
그 결과를 다시 같은 방법으로 구한다.

Figure 3:첫 행에서 하나를 고르고, 그 행과 열을 지우고, 남은 것의 행렬식을 구한다. 그 결과를 다시 같은 방법으로 구한다.

이번에는 3행으로 전개해 보자. 3행에 0이 하나 있으니 계산이 하나 줄어든다.

C31=+det[2181]=28=6,C32=det[1131]=(13)=2,C33=+det[1238]=86=2C_{31} = +\det\begin{bmatrix} 2 & 1 \\ 8 & 1 \end{bmatrix} = 2 - 8 = -6, \quad C_{32} = -\det\begin{bmatrix} 1 & 1 \\ 3 & 1 \end{bmatrix} = -(1 - 3) = 2, \quad C_{33} = +\det\begin{bmatrix} 1 & 2 \\ 3 & 8 \end{bmatrix} = 8 - 6 = 2
detA=0(6)+42+12=0+8+2=10\det A = 0 \cdot (-6) + 4 \cdot 2 + 1 \cdot 2 = 0 + 8 + 2 = 10

1열로 전개해도 마찬가지이다. 1열에도 0이 하나 있다. 이번에는 ii 로 더한다.

detA=a11C11+a21C21+a31C31=14+32+0(6)=4+6+0=10\det A = a_{11}C_{11} + a_{21}C_{21} + a_{31}C_{31} = 1 \cdot 4 + 3 \cdot 2 + 0 \cdot (-6) = 4 + 6 + 0 = 10

C21=det[2141]=(24)=2C_{21} = -\det\begin{bmatrix} 2 & 1 \\ 4 & 1 \end{bmatrix} = -(2-4) = 2 이다. 세 번 모두 10이 나왔다.

이것은 재귀이다

(20)의 오른쪽에 다시 행렬식이 있다는 점이 중요하다. nn 차 문제가 (n1)(n-1) 차 문제 nn 개로 바뀐다. 첫 행에서 하나를 고르고 나머지는 아랫사람에게 넘기는 셈이다.

계산량을 세어 보자. nn 차 행렬식 하나를 구하는 데 드는 일을 T(n)T(n) 이라 하면, (n1)(n-1) 차 행렬식을 nn 개 구해야 한다.

T(n)=nT(n1),T(1)=1T(n) = n \cdot T(n-1), \qquad T(1) = 1

풀어 보면 계승이 그대로 나온다.

T(n)=n(n1)(n2)21=n!T(n) = n \cdot (n-1) \cdot (n-2) \cdots 2 \cdot 1 = n!

당연한 결과이다. 빅 포뮬러의 n!n! 개 항을 묶어 놓았을 뿐 없앤 것이 아니기 때문이다. 묶는다고 항이 사라지지는 않는다.


5. 그래서 실제로는 쓰지 않는다

n!n!n3n^3 이 얼마나 다른지 보자.

n = 5 부터 갈라지기 시작해 n = 20 에서는 비교가 무의미해진다.

Figure 4:n=5n = 5 부터 갈라지기 시작해 n=20n = 20 에서는 비교가 무의미해진다.

nn여인수 전개 n!n!소거 n3n^3
3627
5120125
103,628,8001,000
202.4×10182.4 \times 10^{18}8,000

n=3n = 3 에서는 오히려 여인수 쪽이 적다. 교과서 연습문제가 전부 3×33 \times 3 인 탓에 여인수 전개가 실용적인 계산법이라는 인상이 남는다. 그러나 n=10n = 10 만 되어도 360만 대 1000이다.

n=20n = 20 을 조금 더 실감해 보자. 1초에 109 개의 항을 처리하는 컴퓨터라 해도 2.4×10182.4 \times 10^{18} 개를 처리하려면 2.4×1092.4 \times 10^9 초, 곧 76년이 걸린다. 같은 행렬을 소거로 처리하면 8000번의 연산, 곧 백만분의 1초도 걸리지 않는다.


마치며...

이번 강의에서 다룬 것을 정리하면 다음과 같다.

대상내용
쪼개기각 행을 좌표축 방향으로 쪼개면 nnn^n 개의 항
살아남는 항행마다 서로 다른 열을 고른 것, 곧 순열. n!n!
3×33 \times 327개 중 21개가 죽고 6개가 남아 익숙한 공식이 된다
빅 포뮬러detA=σ(sgnσ)a1σ(1)anσ(n)\det A = \sum_\sigma (\operatorname{sgn}\sigma)\, a_{1\sigma(1)}\cdots a_{n\sigma(n)}
부호순열행렬의 행렬식. 홀짝이 잘 정의되는 것도 행렬식이 보증한다
존재빅 포뮬러가 세 공리를 만족하므로 행렬식은 실제로 존재한다
여인수Cij=(1)i+jMijC_{ij} = (-1)^{i+j}M_{ij}. 부호는 줄을 끌어오는 교환 횟수
여인수 전개어느 행으로도 어느 열로도 된다. 재귀이고 계산량은 n!n!
실제 계산여전히 소거 후 피벗의 곱, n3n^3

두 가지 공식을 얻었지만 둘 다 계산에는 쓸 수 없다는 것도 함께 확인했다. 그렇다면 이번 강의는 헛수고였는가.

그렇지 않다. 두 가지를 얻었다. 첫째로 행렬식이 존재한다는 것을 확인했다. L18에서는 값이 하나로 정해진다는 것만 알았지, 그런 함수가 정말 있는지는 몰랐다. 둘째로 여인수는 버려지지 않는다. 다음 강의에서 이 여인수들이 모여 역행렬의 공식을 이루는 것을 보게 된다. 그리고 그 과정에서 행렬식의 진짜 정체, 곧 부피를 제대로 만나게 된다.

그 그림은 열 강의 뒤 특이값 분해에서 다시 우리를 찾아온다.


이번 강의의 내용을 파이썬으로 확인해 보려면 L19 실습 노트북으로 넘어가면 된다. 빅 포뮬러를 순열로 직접 돌려 보고, 여인수 전개를 재귀 함수로 짜서 np.linalg.det 와 대조하며, nn 을 키워 가며 두 방법의 시간이 어떻게 갈라지는지 재 볼 수 있다.