1 챕터 5 전체 로드맵
Ch.4까지의 여정을 되돌아보면 다음과 같다.
- Ch.1: 개별 벡터 — 덧셈, 내적, 길이
- Ch.2: 연립방정식 — \(\mathbf{A}\mathbf{x} = \mathbf{b}\) 를 소거법과 LU 분해로 풀기
- Ch.3: 부분공간 — 해의 집합을 공간 전체로 이해
- Ch.4: 직교성 — 부분공간 사이의 90도 관계와 투영·최소제곱
- Ch.5: 행렬식 — 정사각 행렬의 “한 줄 요약서”
Ch.3까지는 행렬을 “여러 방정식의 계수”로 봤고, Ch.4는 “기하학적 연산자”로 봤다. Ch.5는 관점을 다시 바꾼다 — 행렬을 단 하나의 스칼라로 압축한다.
그 스칼라가 담는 정보:
- 행렬이 가역인가? (det = 0 ⟺ 특이)
- 이 행렬이 만드는 평행육면체의 부피는?
- 고윳값은 무엇인가? (\(\det(\mathbf{A} - \lambda\mathbf{I}) = 0\))
Ch.5는 세 개의 짧은 절로 구성된다.
| 절 | 제목 | 핵심 질문 |
|---|---|---|
| §5.1 | The Properties of Determinants | 행렬식은 어떤 규칙으로 정의되는가? |
| §5.2 | Permutations and Cofactors | 행렬식의 실제 공식은 무엇인가? |
| §5.3 | Cramer’s Rule, Inverses, and Volumes | 행렬식은 무엇에 쓰이는가? |
2 왜 행렬식인가
2.1 질문 하나로 여는 동기
2×2 행렬 \(\mathbf{A} = \begin{bmatrix} a & b \\ c & d \end{bmatrix}\) 의 역행렬을 떠올려본다.
\[\mathbf{A}^{-1} = \frac{1}{ad - bc}\begin{bmatrix} d & -b \\ -c & a \end{bmatrix}\]
분모에 등장하는 \(ad - bc\) 가 0이면 역행렬이 존재하지 않는다. 이 숫자가 바로 2×2 행렬의 행렬식이다.
“\(ad - bc\) 는 단순한 계산 결과가 아니라 행렬의 가역성을 압축한 정보다.”
\(n \times n\) 행렬에도 같은 역할을 하는 숫자가 있다. 그것이 \(\det \mathbf{A}\) 다.
2.2 하나의 숫자가 담는 세 가지 정보
\(\det \mathbf{A}\) 는 세 가지 질문에 동시에 답한다.
1. 가역성: \(\det \mathbf{A} \neq 0 \iff \mathbf{A}\) 가역. 가장 빠른 “존재 테스트”다.
2. 부피: \(|\det \mathbf{A}|\) 는 \(\mathbf{A}\) 의 행(또는 열)들이 만드는 \(n\) 차원 평행육면체의 부피이다. 평면에서는 평행사변형 면적, 3차원에서는 평행육면체 부피.
3. 고윳값: \(\det(\mathbf{A} - \lambda\mathbf{I}) = 0\) 의 해 \(\lambda\) 가 \(\mathbf{A}\) 의 고윳값이다 (Ch.6).
직관: 행렬식은 “압축 스칼라”다. 행렬 전체의 복잡한 구조를 단 하나의 숫자로 요약한다. 그 숫자가 0인지 아닌지만 봐도 가역성이 판별되고, 절대값은 부피를 주고, 특성방정식의 근은 고윳값을 준다.
2.3 왜 실무에서는 거의 계산하지 않는가 — 주의
역설적이게도, 큰 행렬에서는 \(\det \mathbf{A}\) 를 직접 계산하는 일이 거의 없다. 이유:
- 가역성 판별: 소거법으로 피벗을 보는 것이 훨씬 빠르다
- 방정식 풀기: 소거법 / QR / SVD가 Cramer 공식보다 수십 배 빠르다
- 부피 계산: 직접 공식이 있다면 대부분 \(|\det|\) 을 구하는 것이 목적이므로 동어반복
그럼에도 행렬식을 배우는 이유는: - 이론적 도구: 증명·유도에 필수 (Cramer, 고윳값, 야코비안, 행렬 미분) - 개념적 통합: 가역성·부피·고윳값을 하나로 묶는 언어 - 작은 문제: 2×2, 3×3 에서는 여전히 손으로 쓴다
3 행렬식의 세 가지 정의 성질
Strang의 접근은 “공식부터 외우지 말고, 성질부터 시작하자”이다. 세 가지 성질만으로도 \(n \times n\) 행렬식이 유일하게 결정된다.
성질 1: 단위 행렬의 행렬식은 1이다. \[\det \mathbf{I} = 1\]
성질 2: 두 행을 교환하면 부호가 바뀐다. \[\det(\text{row 교환}) = -\det \mathbf{A}\]
성질 3: 행렬식은 각 행에 대해 선형적이다 (다른 행들은 고정). \[\det \begin{bmatrix} t\mathbf{a}_1 + s\mathbf{a}_1' \\ \mathbf{a}_2 \\ \vdots \\ \mathbf{a}_n \end{bmatrix} = t \det \begin{bmatrix} \mathbf{a}_1 \\ \mathbf{a}_2 \\ \vdots \\ \mathbf{a}_n \end{bmatrix} + s \det \begin{bmatrix} \mathbf{a}_1' \\ \mathbf{a}_2 \\ \vdots \\ \mathbf{a}_n \end{bmatrix}\]
3.1 각 성질의 직관
성질 1 (항등): “아무 변환도 하지 않는 행렬”의 행렬식은 1. 단위 정육면체의 부피가 1인 것과 같은 기준점이다.
성질 2 (부호 반전): 두 행을 교환하면 부호가 뒤집힌다. 왜? 기하학적으로 “손잡이 방향(handedness)”이 바뀌기 때문이다. 오른손 좌표계를 왼손 좌표계로 뒤집는 조작과 대응된다. 부피는 같지만 “방향이 있는 부피”는 부호가 반대가 된다.
성질 3 (행별 선형성): 한 행만 놓고 보면 선형. 핵심은 “한 행씩만”이다. \(\det(\mathbf{A} + \mathbf{B}) = \det \mathbf{A} + \det \mathbf{B}\) 는 틀렸다. 예: \(\det(\mathbf{I} + \mathbf{I}) = \det(2\mathbf{I}) = 2^n\), 반면 \(\det \mathbf{I} + \det \mathbf{I} = 2\).
왜 행별 선형성이 자연스러운가: 부피 관점에서, 한 변을 \(t\) 배 늘리면 부피도 \(t\) 배 늘어난다. 두 변을 각각 \(t, s\) 로 늘리면 부피는 \(ts\) 배가 된다. 여기서 “각 변(행) 하나씩만 건드릴 때” 선형이 된다.
3.2 왜 이 세 성질이면 충분한가
이 세 성질이 서로 독립적이면서도 제한이 충분히 강하다. 어떤 \(n \times n\) 행렬도 이 성질들만으로 행렬식이 유일하게 결정된다. Strang의 접근법은 이 세 성질을 “공리”로 삼고, 나머지는 모두 정리로 유도한다.
4 파생 성질 일곱 가지
세 가지 정의 성질에서 일곱 가지가 즉시 따라 나온다. 이것이 Strang §5.1의 본론이다.
4.1 성질 4: 두 행이 같으면 \(\det = 0\)
증명: 두 같은 행을 교환해도 행렬이 그대로다. 그런데 성질 2에 의해 부호는 바뀌어야 한다. 따라서 \(\det \mathbf{A} = -\det \mathbf{A}\), 즉 \(\det \mathbf{A} = 0\).
직관: 두 행이 같다는 것은 그 행들이 같은 방향을 가리킨다는 뜻이다. 평행한 두 변이 만드는 “평행사변형”은 실제로는 선분 — 면적 0.
4.2 성질 5: 한 행에서 다른 행의 배수를 빼도 행렬식 불변
증명: 성질 3 (선형성)으로 분해하면 “원래 행렬” + “두 같은 행 가진 행렬”의 합이 된다. 후자는 성질 4에 의해 0. 따라서 전체는 원래 행렬식과 같다.
\[\det \begin{bmatrix} \mathbf{a}_1 \\ \mathbf{a}_2 - \ell\mathbf{a}_1 \\ \vdots \end{bmatrix} = \det \begin{bmatrix} \mathbf{a}_1 \\ \mathbf{a}_2 \\ \vdots \end{bmatrix} - \ell\det \begin{bmatrix} \mathbf{a}_1 \\ \mathbf{a}_1 \\ \vdots \end{bmatrix} = \det \mathbf{A} - 0 = \det \mathbf{A}\]
의미: 이것이 소거법(Gaussian elimination)이 행렬식을 보존한다는 말의 정확한 의미다. 소거법으로 \(\mathbf{A} \to \mathbf{U}\) 로 변환해도 \(\det \mathbf{A} = \det \mathbf{U}\).
4.3 성질 6: 영행이 있으면 \(\det = 0\)
증명: 영행에 아무 다른 행이나 더해도 행렬식 불변 (성질 5). 그러면 두 같은 행이 생기므로 성질 4.
직관: 한 변이 길이 0이면 부피도 0.
4.4 성질 7: 삼각 행렬의 \(\det\) = 대각 성분의 곱
유도: 상/하삼각 행렬을 성질 5로 대각 행렬로 만들고, 성질 3 (선형성)으로 각 대각 성분을 차례로 꺼낸다. 마지막에 성질 1 (\(\det \mathbf{I} = 1\))을 사용.
\[\det \begin{bmatrix} d_1 & * & \cdots \\ 0 & d_2 & \cdots \\ \vdots & & \ddots \end{bmatrix} = d_1 d_2 \cdots d_n\]
의미: 삼각 행렬의 행렬식이 “가장 계산하기 쉽다”. 여기서 첫 번째 공식이 나온다:
공식 1: \(\det \mathbf{A} = \pm (d_1 d_2 \cdots d_n)\) — 피벗들의 곱 (부호는 행 교환 횟수에 따라)
4.5 성질 8: 특이 ⟺ \(\det = 0\)
증명: \(\mathbf{A}\) 가 특이 ⟺ 소거 후 영행이 생김 ⟺ \(\det = 0\).
이것이 행렬식의 가장 중요한 응용이다. “행렬식이 0인지 아닌지로 가역성을 판별할 수 있다.”
4.6 성질 9: 곱셈 규칙 \(\det(\mathbf{A}\mathbf{B}) = \det \mathbf{A} \cdot \det \mathbf{B}\)
계: \(\det(\mathbf{A}^{-1}) = 1 / \det \mathbf{A}\) (\(\mathbf{A}\mathbf{A}^{-1} = \mathbf{I}\) 에 적용)
직관 — 부피 배율: 행렬을 선형변환으로 보면, \(\det \mathbf{A}\) 는 “부피 배율”이다. 변환 \(\mathbf{A}\) 후 \(\mathbf{B}\) 를 적용하면 부피는 먼저 \(|\det \mathbf{A}|\) 배, 그 다음 \(|\det \mathbf{B}|\) 배 늘어난다. 전체 배율은 곱. 이것이 \(\det(\mathbf{A}\mathbf{B}) = \det \mathbf{A} \cdot \det \mathbf{B}\) 의 기하학적 의미다.
주의: \(\det(\mathbf{A} + \mathbf{B}) \neq \det \mathbf{A} + \det \mathbf{B}\). 곱셈은 성립, 덧셈은 실패. 그리고 \(\det(c\mathbf{A}) = c^n \det \mathbf{A}\) — 스칼라는 \(n\) 제곱으로 나온다 (\(n\) 개 행 각각에서 \(c\) 가 튀어나옴).
4.7 성질 10: \(\det \mathbf{A}^\top = \det \mathbf{A}\)
유도: \(\mathbf{P}\mathbf{A} = \mathbf{L}\mathbf{U}\) 분해에서 \(\det \mathbf{L} = \det \mathbf{L}^\top = 1\), \(\det \mathbf{U} = \det \mathbf{U}^\top\) (같은 대각선), \(\det \mathbf{P} = \det \mathbf{P}^\top = \pm 1\). 곱셈 규칙 적용.
결정적 따름정리: 행에 대한 모든 성질은 열에 대해서도 동일하게 성립한다. 이 덕분에 두 같은 열, 영열, 열별 선형성, 열 교환 부호 반전 등 모든 성질이 자동으로 열에도 적용된다.
4.8 요약 표
| 성질 | 내용 | 기하적 의미 |
|---|---|---|
| 1 | \(\det \mathbf{I} = 1\) | 단위 입방체 부피 1 |
| 2 | 행 교환 → 부호 반전 | 방향(handedness) 반전 |
| 3 | 행별 선형성 | 변 하나만 늘리면 부피 비례 |
| 4 | 두 같은 행 → 0 | 평행한 두 변 = 면적 0 |
| 5 | 소거법 → \(\det\) 불변 | 평행 이동으로 부피 유지 |
| 6 | 영행 → 0 | 길이 0인 변 |
| 7 | 삼각 → 대각 곱 | 상자의 축별 곱 |
| 8 | 특이 ⟺ \(\det = 0\) | 차원 축소 = 부피 0 |
| 9 | \(\det(\mathbf{A}\mathbf{B}) = \det \mathbf{A} \cdot \det \mathbf{B}\) | 부피 배율의 곱 |
| 10 | \(\det \mathbf{A}^\top = \det \mathbf{A}\) | 행 = 열의 역할 대칭 |
5 행렬식을 계산하는 세 가지 방법
\(n \times n\) 행렬의 행렬식을 계산하는 고전적 방법은 정확히 세 가지다.
- 피벗 공식(Pivot Formula): \(\det \mathbf{A} = \pm (d_1 d_2 \cdots d_n)\) — \(n\) 개 피벗의 곱 (\(\pm\) 는 행 교환 수)
- 빅 공식(Big Formula): \(\det \mathbf{A} = \sum_{\sigma} (\text{sign}\,\sigma) \cdot a_{1\sigma(1)} a_{2\sigma(2)} \cdots a_{n\sigma(n)}\) — \(n!\) 개 항의 합
- 여인수 공식(Cofactor Formula): \(\det \mathbf{A} = \sum_{j=1}^n a_{1j} C_{1j}\) — \(n\) 개 작은 행렬식의 조합
5.1 공식 1: 피벗 공식
아이디어: 소거법으로 \(\mathbf{A} \to \mathbf{U}\) (상삼각). 성질 5로 \(\det\) 불변, 성질 7로 삼각 행렬식 = 피벗 곱.
연산량: \(\mathcal{O}(n^3)\) — 소거법과 동일.
장점: 실무에서 가장 빠르다. MATLAB, NumPy의 det() 는 내부적으로 LU 분해를 한 뒤 피벗을 곱한다.
단점: 소거 과정이 수치적으로 필요하므로 “공식”이라기보다 “알고리즘”에 가깝다.
5.2 공식 2: 빅 공식 (Leibniz 공식)
아이디어: 행렬식을 \(n!\) 개의 항의 합으로 표현. 각 항은 서로 다른 행·열에서 정확히 하나씩 뽑은 성분들의 곱.
\[\det \mathbf{A} = \sum_{\sigma \in S_n} \text{sign}(\sigma) \prod_{i=1}^n a_{i, \sigma(i)}\]
여기서 \(\sigma\) 는 \(\{1, \ldots, n\}\) 의 순열이고, \(\text{sign}(\sigma) = \pm 1\) 은 홀/짝 순열 부호.
2×2: \(\det = a_{11} a_{22} - a_{12} a_{21}\) (2! = 2개 항)
3×3: 3! = 6개 항. Sarrus 법칙으로 기억되는 유명한 공식.
연산량: \(\mathcal{O}(n \cdot n!)\) — 천문학적으로 비싸다. \(n = 20\) 이면 \(20! \approx 2.4 \times 10^{18}\).
장점: 이론 증명용. 행렬식의 “모든 가능성”이 다 보이고, 성질들이 명확히 드러난다.
단점: 실제 계산 불가능. \(n = 5\) 만 되어도 120개 항.
5.3 공식 3: 여인수 전개 (Laplace 공식)
아이디어: 첫 번째 행 (또는 아무 행/열)에 대해 “작은 행렬식”들의 조합으로 분해.
\[\det \mathbf{A} = \sum_{j=1}^n a_{1j} \cdot C_{1j}, \quad C_{1j} = (-1)^{1+j} \det(\mathbf{A}_{1j})\]
여기서 \(\mathbf{A}_{1j}\) 는 \(\mathbf{A}\) 에서 1행과 \(j\) 열을 제거한 \((n-1) \times (n-1)\) 부분 행렬.
재귀적 구조: \(n\) 차 행렬식을 \((n-1)\) 차 행렬식 \(n\) 개로 환원. 계속 반복하면 결국 \(2 \times 2\) 나 \(1 \times 1\) 까지 내려간다.
연산량: \(\mathcal{O}(n!)\) — 빅 공식과 같은 수준. 비효율.
장점: 손 계산에 유용. 특히 영 성분이 많은 행렬에서 특정 행/열을 택하면 항이 많이 사라져 빠르게 풀린다.
단점: 수치 계산에는 부적합. 개념 이해·이론 유도가 주 용도.
5.4 세 공식의 사용 기준
| 공식 | 언제 쓰는가 |
|---|---|
| 피벗 공식 | 컴퓨터 계산 (항상) |
| 빅 공식 | 이론 증명 (행렬식 성질 유도) |
| 여인수 공식 | 손 계산 (희소 행렬), 재귀 증명 |
6 세 가지 응용
행렬식을 배우는 진짜 이유는 응용에 있다. §5.3에서 상세히 다루는 세 가지.
6.1 응용 1: Cramer 공식 — 역행렬과 \(\mathbf{A}^{-1}\mathbf{b}\)
\(\mathbf{A}\mathbf{x} = \mathbf{b}\) 의 해를 행렬식의 비율로 표현한다.
\[x_i = \frac{\det \mathbf{B}_i}{\det \mathbf{A}}\]
여기서 \(\mathbf{B}_i\) 는 \(\mathbf{A}\) 의 \(i\) 열을 \(\mathbf{b}\) 로 교체한 행렬.
역행렬도 행렬식으로 공식화 가능:
\[\mathbf{A}^{-1} = \frac{1}{\det \mathbf{A}} \mathbf{C}^\top\]
여기서 \(\mathbf{C}\) 는 여인수 행렬.
실무적 의미: Cramer 공식은 \(\mathcal{O}(n \cdot n!)\) 이라 큰 문제에서는 쓰이지 않는다. 그러나 3×3 이하의 손 계산이나 기호 계산(symbolic)에서는 여전히 유용하다. 더 중요한 것은 이론적 가치 — 해가 계수들의 다항식 함수임을 명시적으로 보여준다.
6.2 응용 2: 부피 — \(n\) 차원 평행육면체
\(\mathbf{A}\) 의 행(또는 열)을 변으로 하는 \(n\) 차원 평행육면체의 부피는 \(|\det \mathbf{A}|\) 이다.
- 2D (평행사변형): \(\begin{bmatrix} a & b \\ c & d \end{bmatrix}\) 의 두 행 벡터가 만드는 평행사변형 면적 = \(|ad - bc|\)
- 3D (평행육면체): 3×3 행렬식이 3차원 부피
- n차원: 일반화된 “하이퍼큐브”의 부피
가역성과 부피의 연결: \(\det \mathbf{A} = 0\) ⟺ 행들이 선형 종속 ⟺ 부피 0 ⟺ 평행육면체가 저차원으로 “짜부라짐”. 이것이 “특이 행렬”이라는 용어의 기하학적 의미다.
방향(부호)의 의미: \(\det > 0\) 이면 오른손 좌표계 유지, \(\det < 0\) 이면 왼손 좌표계로 뒤집힘. “부호 있는 부피(signed volume)” 개념이 미적분의 변수 치환 (야코비안)에서 결정적이다.
6.3 응용 3: 고윳값 — \(\det(\mathbf{A} - \lambda\mathbf{I}) = 0\)
Ch.6에서 본격적으로 다룰 내용의 예고편.
\(\mathbf{A}\mathbf{v} = \lambda\mathbf{v}\) 를 만족하는 비자명한 \(\mathbf{v}\) 가 존재하려면 \((\mathbf{A} - \lambda\mathbf{I})\mathbf{v} = \mathbf{0}\) 의 비자명 해가 필요하다. 이는 \(\mathbf{A} - \lambda\mathbf{I}\) 가 특이해야 한다는 뜻이고, 곧 \(\det(\mathbf{A} - \lambda\mathbf{I}) = 0\).
이 방정식을 특성방정식(characteristic equation)이라 부른다. \(\lambda\) 에 대한 \(n\) 차 다항식이고, 그 근들이 고윳값이다.
왜 이것이 중요한가: 고윳값은 행렬의 “본질”을 담는다 — 안정성, 진동수, 증가율, PCA의 주성분 등. 행렬식이 없으면 고윳값 개념을 정의조차 할 수 없다.
7 2×2와 3×3 예시
7.1 2×2 예시
\[\mathbf{A} = \begin{bmatrix} 3 & 1 \\ 2 & 4 \end{bmatrix}\]
- 피벗 공식: 소거법 \(R_2 - \frac{2}{3}R_1\): \(\begin{bmatrix} 3 & 1 \\ 0 & 4 - 2/3 \end{bmatrix} = \begin{bmatrix} 3 & 1 \\ 0 & 10/3 \end{bmatrix}\). \(\det = 3 \cdot 10/3 = 10\).
- 빅 공식: \(\det = 3 \cdot 4 - 1 \cdot 2 = 12 - 2 = 10\).
- 여인수 공식: \(\det = 3 \cdot \det[4] - 1 \cdot \det[2] = 3 \cdot 4 - 1 \cdot 2 = 10\).
- 부피: \(|10|\) = 평행사변형 면적 10.
- 가역: \(\det \neq 0\) 이므로 가역.
7.2 3×3 예시
\[\mathbf{B} = \begin{bmatrix} 1 & 2 & 0 \\ 0 & 3 & 1 \\ 2 & 0 & 4 \end{bmatrix}\]
여인수 전개 (첫 행 기준):
\[\det \mathbf{B} = 1 \cdot \det\begin{bmatrix} 3 & 1 \\ 0 & 4 \end{bmatrix} - 2 \cdot \det\begin{bmatrix} 0 & 1 \\ 2 & 4 \end{bmatrix} + 0 \cdot \det\begin{bmatrix} 0 & 3 \\ 2 & 0 \end{bmatrix}\]
\[= 1 \cdot (12 - 0) - 2 \cdot (0 - 2) + 0 = 12 + 4 = 16\]
import numpy as np
# 2x2 예시
A = np.array([[3, 1],
[2, 4]], dtype=float)
print(f"A =\n{A}")
print(f"det(A) = {np.linalg.det(A):.4f}")
print(f"A 가역? {np.linalg.det(A) != 0}")
# 역행렬로 확인
if abs(np.linalg.det(A)) > 1e-10:
print(f"A⁻¹ =\n{np.linalg.inv(A)}")
# 3x3 예시
B = np.array([[1, 2, 0],
[0, 3, 1],
[2, 0, 4]], dtype=float)
print(f"\nB =\n{B}")
print(f"det(B) = {np.linalg.det(B):.4f}") # 16
# 성질 확인: det(AB) = det(A) det(B)
C = np.array([[1, 0, 2],
[3, 1, 0],
[0, 4, 1]], dtype=float)
print(f"\ndet(B) * det(C) = {np.linalg.det(B) * np.linalg.det(C):.4f}")
print(f"det(BC) = {np.linalg.det(B @ C):.4f}")
# det(A^T) = det(A)
print(f"\ndet(B) = {np.linalg.det(B):.4f}")
print(f"det(Bᵀ) = {np.linalg.det(B.T):.4f}")
# det(2B) = 2³ det(B)
print(f"\ndet(2B) = {np.linalg.det(2 * B):.4f}")
print(f"2³ det(B) = {8 * np.linalg.det(B):.4f}")7.3 부피 시각화 (2D 평행사변형)
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
# 2x2 행렬의 행이 만드는 평행사변형
A = np.array([[3, 1],
[2, 4]], dtype=float)
# 네 꼭짓점
origin = np.array([0, 0])
v1 = A[0] # [3, 1]
v2 = A[1] # [2, 4]
corner = v1 + v2
fig, ax = plt.subplots(figsize=(7, 6))
polygon = Polygon([origin, v1, corner, v2],
closed=True, alpha=0.3, color='steelblue',
edgecolor='steelblue', linewidth=2)
ax.add_patch(polygon)
# 벡터 화살표
ax.quiver(0, 0, v1[0], v1[1], angles='xy', scale_units='xy', scale=1,
color='red', width=0.008, label=f'행 1 = {tuple(v1)}')
ax.quiver(0, 0, v2[0], v2[1], angles='xy', scale_units='xy', scale=1,
color='green', width=0.008, label=f'행 2 = {tuple(v2)}')
det_val = np.linalg.det(A)
ax.set_title(f'평행사변형의 면적 = |det(A)| = {abs(det_val):.0f}')
ax.set_xlim(-1, 7)
ax.set_ylim(-1, 7)
ax.set_aspect('equal')
ax.grid(True, alpha=0.3)
ax.axhline(0, color='k', linewidth=0.3)
ax.axvline(0, color='k', linewidth=0.3)
ax.legend()
plt.tight_layout()
plt.savefig('det_parallelogram.png', dpi=100, bbox_inches='tight')
plt.show()8 응용 분야
| 분야 | 행렬식의 역할 |
|---|---|
| 수치해석 | 가역성 판별 (이론) |
| 미적분 (변수 치환) | 야코비안(Jacobian) — 다변수 적분의 부피 왜곡 |
| 선형대수 (고윳값) | 특성방정식 \(\det(\mathbf{A} - \lambda\mathbf{I}) = 0\) |
| 기하학 | \(n\) 차원 부피, 외적 (cross product) |
| 물리학 | 보존량 계산 (Wronskian — 미분방정식 해의 독립성) |
| 확률 (다변량 가우시안) | \(\sqrt{\det \mathbf{\Sigma}}\) 가 공분산 행렬의 “부피” |
| 머신러닝 (정규화 흐름) | Change-of-variables로 확률밀도 변환 |
| 통계 (카이제곱 통계량) | 이차 형식의 정규화 |
특히 주목: 머신러닝의 Normalizing Flow 모델은 각 층에서 \(\log|\det \mathbf{J}|\) 를 계산해야 하므로, “효율적으로 계산 가능한 행렬식 구조”를 설계하는 것이 핵심 연구 주제이다 (예: Real NVP, Glow).
9 핵심 요약
행렬식이란?
- 정사각 행렬의 "한 줄 요약 스칼라"
- 세 가지 정보를 동시에 압축: 가역성, 부피, 고윳값
세 가지 정의 성질 (Strang):
1. det I = 1
2. 행 교환 → 부호 반전
3. 행별 선형성
파생 성질 일곱 가지:
4. 두 같은 행 → 0 5. 소거법 불변
6. 영행 → 0 7. 삼각 → 대각 곱
8. 특이 ⟺ det = 0 9. det(AB) = det A · det B
10. det Aᵀ = det A
세 가지 계산 공식:
1. 피벗 공식 — 실무 표준 (O(n³))
2. 빅 공식 (Leibniz) — 이론용 (O(n!))
3. 여인수 공식 (Laplace) — 손 계산 (O(n!))
세 가지 응용:
1. Cramer 공식 — 역행렬, Ax=b 해
2. 부피 — n차원 평행육면체
3. 고윳값 — det(A - λI) = 0
배우는 이유:
- 이론적 도구 (증명, 유도)
- 개념 통합 (가역성·부피·고윳값의 언어)
- 작은 문제의 손 계산
10 관련 주제
선행 지식
- Ch.2 §2.6 — A = LU 분해 — 피벗 공식의 기초
- Ch.3 §3.5 — 선형 독립, 기저, 차원 — 특이성과 독립의 관계
챕터 내 후속
- Ch.5 §5.1 — The Properties of Determinants — 공리와 열 가지 성질
- Ch.5 §5.2 — Permutations and Cofactors — 빅 공식과 여인수 전개
- Ch.5 §5.3 — Cramer’s Rule, Inverses, and Volumes — 세 가지 응용
후속 주제
- 야코비안 (Math 미적분) — 다변수 적분의 부피 왜곡
- SVD (예정) — \(|\det \mathbf{A}|\) = 특이값의 곱