C5 · 행렬식은 무엇을 기록하고, 무엇을 알려 주지 못할까?#

행렬식을 역행렬을 구하기 전에 계산하는 숫자로만 기억하면, 왜 그 공식이 맞는지와 어떤 경우에 유용한지가 분리됩니다. C4에서는 여러 방향의 쐐기를 계산했습니다. 이제 전체 차원의 방향 기록이 선형변환 뒤에 몇 배가 되는가를 행렬식으로 정의합니다.

그 정의에서 곱셈성·여인수·특성다항식을 얻은 뒤, 생산모형의 수요 반응과 정규분포의 밀도 변환을 계산하겠습니다. 마지막에는 행렬식이 작다는 이유만으로 행렬이 수치적으로 위험하다고 판단할 수 없음을 확인합니다.

대수적 정의와 증명은 유한차원 체 위에서 진행합니다. 부피·확률 예에서는 실수를 사용하며, 길이·직사각형 부피, 일변수 치환적분, 비음수 함수에 대한 반복적분 법칙, 표준정규밀도의 적분과 평균·분산을 해석학·확률의 출발 전제로 명시합니다. 일반 비선형 치환적분 정리 자체를 이 장에서 증명했다고 주장하지 않습니다.

1. 전체 방향의 기록은 한 숫자로 바뀐다#

C4에서 \(n\)차원 공간의 \(\Lambda^nV\)는 1차원임을 증명했습니다. 기저를 \((e_1,\ldots,e_n)\)으로 고르면

\[ \Omega=e_1\wedge\cdots\wedge e_n \]

하나로 모든 원소를 표현합니다. 선형변환 \(T\)가 작용하면 어떤 스칼라 \(d\)에 대해

\[ Te_1\wedge\cdots\wedge Te_n=d\Omega \]

입니다. 그 스칼라를 \(\det T\)라고 정의합니다.

평면 예로

\[\begin{split} T=\begin{pmatrix}2&1\\1&2\end{pmatrix} \end{split}\]

를 사용합시다. 열벡터들의 쐐기는

\[\begin{split} \begin{aligned} (2e_1+e_2)\wedge(e_1+2e_2) &=2e_1\wedge e_1+4e_1\wedge e_2 +e_2\wedge e_1+2e_2\wedge e_2\\ &=0+4e_{12}-e_{12}+0=3e_{12}. \end{aligned} \end{split}\]

따라서 \(\det T=3\)입니다. 외워 둔 2×2 공식을 사용한 것이 아니라, 다중선형성과 교대성으로 그 공식을 다시 얻었습니다.

2. 기준을 바꾸어도 같은 숫자인 이유#

\(\Lambda^nV\)의 다른 기저가 \(\Omega'=c\Omega\), \(c\ne0\)라 합시다. 그러면

\[ \Lambda^nT(\Omega') =\Lambda^nT(c\Omega) =c\,\det(T)\Omega =\det(T)\Omega'. \]

배율은 같습니다. 원래 \(V\)에서 기저를 바꾸어도 그 쐐기는 이 1차원 공간의 다른 기저이므로 같은 결론입니다. 좌표행렬이 \(P^{-1}AP\)로 달라져도 행렬식이 같은 이유입니다.

두 변환 \(T\) 다음 \(S\)를 적용하면

\[ \Lambda^n(ST)\Omega =\Lambda^nS\bigl(\det(T)\Omega\bigr) =\det(T)\det(S)\Omega. \]

따라서 \(\det(ST)=\det S\det T\)입니다. 이 식의 짧은 증명은 C4에서 쐐기 공간의 구성과 함자성을 이미 증명했기 때문에 가능합니다.

\(\det T=0\)이라는 것은 \(\Lambda^nT=0\), 즉 C4의 계수 판정으로 \(\operatorname{rank}T<n\)이라는 뜻입니다. 유한차원의 정사각 선형사상에서는 이것이 가역이 아닌 조건입니다. 아직 수치오차에 관한 말은 하지 않았습니다.

3. 부피와 부호를 나누어 읽기#

실수 평면의 단위 정사각형을 \(T\)로 보내면 꼭짓점은

\[ (0,0),\quad(2,1),\quad(3,3),\quad(1,2) \]

입니다. 부피 배율은 절댓값 \(|\det T|=3\)입니다. 반면 두 열의 순서를 바꾸면 같은 평행사변형을 만들면서 방향 기록의 부호는 \(-3\)으로 바뀝니다. 넓이는 음수가 되지 않습니다.

단위 정사각형과 행렬 2,1;1,2에 의한 넓이 3의 평행사변형, 두 열을 바꾸어 같은 넓이지만 방향이 반대인 경우를 비교합니다.

그림 49 세 패널의 좌표 눈금과 가로·세로 비율은 같습니다. 꼭짓점의 방문 순서로 방향을 표시했습니다. 절댓값은 넓이 배율, 부호는 방향 변화를 기록합니다.#

직사각형에서 시작한 넓이 직관을 일반 집합의 부피 주장으로 확장하려면 적분에 관한 전제가 필요합니다. 마지막 절에서 선형변환을 기본 변환들로 나누고 위에서 명시한 반복적분 법칙으로 그 주장을 증명합니다.

4. 생산모형의 수요 변화에 적용하기#

두 산업의 총산출을 \(x_1,x_2\)라 합시다. 각 산업의 산출 한 단위를 만들기 위해 필요한 중간투입 비율이

\[\begin{split} B=\begin{pmatrix}1/5&3/10\\2/5&1/10\end{pmatrix} \end{split}\]

이라고 가정합니다. 각 행은 투입하는 재화, 열은 생산하는 산업입니다. 산출과 최종수요는 각 재화의 고정 단위로 기록하고, 투입계수는 그 단위 사이의 비율입니다. 고정 계수와 선형적인 투입 합산을 가정합니다.

최종수요 \(d\)를 충족하려면 총산출에서 중간투입을 뺀 양이 \(d\)여야 합니다.

\[\begin{split} x=Bx+d,\qquad M x=d,\qquad M=I-B=\begin{pmatrix}4/5&-3/10\\-2/5&9/10\end{pmatrix}. \end{split}\]

행렬식은

\[ \det M=\frac45\frac9{10} -\left(-\frac3{10}\right)\left(-\frac25\right) =\frac{36}{50}-\frac6{50}=\frac35. \]

2×2 곱을 직접 확인하면

\[\begin{split} M^{-1}=\frac1{3/5} \begin{pmatrix}9/10&3/10\\2/5&4/5\end{pmatrix} =\begin{pmatrix}3/2&1/2\\2/3&4/3\end{pmatrix}. \end{split}\]

예를 들어 \(d=(1,1)\)이면 \(x=(2,2)\)입니다. 실제로 \(Bx=(1,1)\)이므로 \(x-Bx=(1,1)\)입니다. 수요를 \(d+(0,h)\)로 바꾸면 산출 변화는

\[ \Delta x=M^{-1}(0,h)^{\mathsf T} =(h/2,4h/3)^{\mathsf T}. \]

따라서 둘째 재화의 최종수요 한 단위 증가는 첫째 재화의 산출도 \(1/2\)단위 증가시킵니다. 이것이 비교정태입니다. 선형모형이므로 여기서는 작은 변화에 대한 근사가 아니라 정확한 변화식입니다.

이번 역행렬의 모든 성분이 비음수이므로 \(d\ge0\)이면 \(x\ge0\)입니다. 그러나 \(\det M>0\)이라는 사실 하나만으로 모든 행렬에서 비음수 해를 보장하는 것은 아닙니다. 예를 들어 \(M=-I_2\)는 행렬식이 1이지만 \(d=(1,1)\)의 해는 \((-1,-1)\)입니다. 투입산출 모형의 일반적인 비음수 판정은 H9에서 추가 가정과 함께 다룹니다.

5. 여인수는 어디에서 나오는가?#

행렬 \(A=(a_{ij})\)\(i\)행·\(j\)열을 제거한 행렬을 \(A[\widehat i,\widehat j]\)라고 쓰고

\[ C_{ij}=(-1)^{i+j}\det A[\widehat i,\widehat j] \]

를 여인수라고 부릅니다. \(C_{ij}\)를 전치해 만든 행렬이 수반행렬 \(\operatorname{adj}A\)입니다. 이것은 내적에서의 수반사상과 다른 용어입니다.

2×2에서는

\[\begin{split} A=\begin{pmatrix}a&b\\c&d\end{pmatrix},\qquad (C_{ij})=\begin{pmatrix}d&-c\\-b&a\end{pmatrix}, \quad \operatorname{adj}A=\begin{pmatrix}d&-b\\-c&a\end{pmatrix}. \end{split}\]

곱을 모든 성분에서 확인하면

\[\begin{split} A\operatorname{adj}A =\begin{pmatrix}ad-bc&-ab+ba\\cd-dc&-cb+da\end{pmatrix} =(ad-bc)I. \end{split}\]

역순 곱도 같은 계산으로 \((ad-bc)I\)입니다. 따라서 행렬식이 0이 아니면 수반행렬을 행렬식으로 나눈 것이 역입니다.

4절의 비교정태에서 \((M^{-1})_{12}=C_{21}/\det M\)입니다. \(C_{21}=-M_{12}=3/10\)이므로 \((3/10)/(3/5)=1/2\)입니다. 왜 여인수의 인덱스가 \(12\)가 아니라 \(21\)인지 수반행렬의 전치에서 확인할 수 있습니다.

일반 차원에서도 같은 항등식이 성립합니다. 뒤의 증명은 \(n-1\)개 벡터의 쐐기와 남은 하나의 쐐기를 결합해서 부호까지 유도합니다.

6. 특성다항식으로 두 중복도를 연결하기#

\(A\)의 특성다항식을

\[ c_A(z)=\det(zI-A) \]

로 정의합니다. \(z\)는 스칼라 변수이고 결과는 스칼라 다항식입니다. C1의 행렬

\[\begin{split} A=\begin{pmatrix}3&1&1\\0&3&2\\0&0&5\end{pmatrix} \end{split}\]

에서는 \(zI-A\)도 상삼각이어서

\[ c_A(z)=(z-3)^2(z-5)=z^3-11z^2+39z-45. \]

상삼각행렬의 행렬식이 대각의 곱인 이유는 다음과 같습니다. 쐐기 계수의 순열 전개에서 각 열 \(j\)의 행 인덱스 \(\sigma(j)\)\(j\)보다 크면 그 원소가 0입니다. 모든 \(\sigma(j)\le j\)이면 두 수열의 합이 같으므로 모두 등호여야 합니다. 따라서 항등순열의 대각 곱만 남습니다.

C1에서 \(\dim G(3,A)=2\), \(\dim G(5,A)=1\)이었습니다. 이제 특성다항식에서 같은 중복도를 확인했습니다. 최소다항식의 \((z-3)\) 지수도 이 예에서는 2이지만, 그것이 항상 같지는 않습니다. \(3I_4\)에서는 특성다항식이 \((z-3)^4\), 최소다항식이 \(z-3\)입니다.

7. 특성다항식의 계수도 방향 기록으로 계산할 수 있다#

위 3×3 행렬의 대각합은 \(3+3+5=11\)입니다. 두 방향의 공간 \(\Lambda^2V\)에서 대각성분은 각각

\[ 3\cdot3=9,\qquad 3\cdot5=15,\qquad 3\cdot5=15 \]

여서 합이 39입니다. 세 방향의 공간에서는 유일한 성분이 \(\det A=45\)입니다. 따라서 앞 다항식의 계수는

\[ c_A(z)=z^3-(\operatorname{tr}A)z^2 +(\operatorname{tr}\Lambda^2A)z-\det A. \]

일반 차원에서도

\[ c_T(z)=\sum_{k=0}^n(-1)^k\operatorname{tr}(\Lambda^kT)z^{n-k}. \]

여기서 \(\Lambda^0T=I_F\)이므로 첫 계수는 1입니다. 단순히 대각 원소의 곱만 나열한 식이 아닙니다. 일반 행렬에서는 \(\operatorname{tr}\Lambda^kT\)가 모든 \(k\times k\) 주소행렬식의 합이 되고, 마지막 절에서 그 계수가 생기는 과정을 전개합니다.

8. 대각합은 왜 좌표를 바꾸어도 같은가?#

C3에서 계수 1 사상은 \(v\mapsto\varphi(v)w\)였습니다. 이 사상에 \(\varphi(w)\)를 대응시킵니다. \(\varphi,w\)에 대해 쌍선형이므로 텐서곱의 보편성질에 의해 모든 사상에 선형으로 확장됩니다. 이 범함수가 좌표무관한 대각합입니다.

실제 기저에서 \(T=\sum_j\varepsilon_j\otimes Te_j\)로 쓰면

\[ \operatorname{tr}T=\sum_j\varepsilon_j(Te_j)=\sum_j T_{jj}. \]

정의에서 기저를 택하지 않았는데 좌표 계산에서는 익숙한 대각성분의 합이 됩니다.

\(A:W\to V\), \(B:V\to W\)의 경우도

\[ \operatorname{tr}(AB)=\sum_{i,j}a_{ij}b_{ji} =\sum_{j,i}b_{ji}a_{ij}=\operatorname{tr}(BA) \]

입니다. 양쪽 행렬의 크기가 달라도 각 합성은 자기 공간의 대각합을 가집니다. 특히 \(\operatorname{tr}(P^{-1}TP)=\operatorname{tr}(TPP^{-1})=\operatorname{tr}T\)입니다. 일반적으로 \(\operatorname{tr}(ABC)=\operatorname{tr}(ACB)\)라고 순서를 아무렇게나 바꿀 수는 없습니다.

9. 행렬이 조금 바뀔 때 행렬식은 얼마나 바뀔까?#

2×2에서는 모든 항을 전개할 수 있습니다. \(A=\begin{pmatrix}a&b\\c&d\end{pmatrix}\), \(H=\begin{pmatrix}p&q\\r&s\end{pmatrix}\)라 놓으면

\[\begin{split} \begin{aligned} \det(A+tH) &=(a+tp)(d+ts)-(b+tq)(c+tr)\\ &=ad-bc+t(dp+as-cq-br)+t^2(ps-qr). \end{aligned} \end{split}\]

따라서 \(t=0\)에서 방향 \(H\)로의 변화율은 \(dp+as-cq-br\)입니다. 이는

\[ \operatorname{tr}(\operatorname{adj}(A)H) \]

와 같습니다. \(A\)가 가역이면 \(\operatorname{adj}(A)=\det(A)A^{-1}\)이므로

\[ \left.\frac{d}{dt}\det(A+tH)\right|_{t=0} =\det(A)\operatorname{tr}(A^{-1}H). \]

이것이 Jacobi 공식입니다. \(A\)가 특이할 때 역행렬 판본은 쓸 수 없지만 수반행렬 판본은 그대로 성립합니다.

가역인 실수 \(A\)에서 연속성 때문에 충분히 작은 \(t\)에서는 행렬식 부호가 바뀌지 않습니다. 일변수 로그 미분을 적용하면

\[ \left.\frac{d}{dt}\log|\det(A+tH)|\right|_{t=0} =\operatorname{tr}(A^{-1}H). \]

C6에서는 이를 일반적인 행렬 미분의 언어로 확장합니다. 여기서는 스칼라 \(t\)에 따른 다항식의 미분으로 직접 유도했습니다.

10. 정규분포에서 로그 행렬식이 등장하는 이유#

독립인 표준정규변수 \(z_1,z_2\)의 밀도는

\[ p_Z(z)=\frac1{2\pi}\exp\left[-\frac12(z_1^2+z_2^2)\right] \]

입니다. 정규분포의 이 성질과 표준화된 평균 0·분산 1은 출발 전제로 둡니다. 다음 변환을 정의합시다.

\[\begin{split} x=\mu+Lz,\qquad L=\begin{pmatrix}2&0\\1&\sqrt2\end{pmatrix}. \end{split}\]

각 성분의 평균은 \(\mu\)이고, 평균을 뺀 값을 곱해 기댓값을 취하면

\[\begin{split} \Sigma=LL^{\mathsf T} =\begin{pmatrix}4&2\\2&3\end{pmatrix}. \end{split}\]

예를 들어 공분산은 \(E[2z_1(z_1+\sqrt2z_2)]=2E[z_1^2]+2\sqrt2E[z_1z_2]=2\)입니다. 마지막 항은 독립과 평균 0 때문에 0입니다.

\(L\)은 작은 부피를 \(|\det L|=2\sqrt2\)배로 만듭니다. 같은 확률을 보존하려면 \(x\)의 밀도는 그만큼 나누어져야 합니다.

\[ p_X(x)=\frac1{2\pi|\det L|} \exp\left[-\frac12\|L^{-1}(x-\mu)\|_2^2\right]. \]

이 선형 밀도 변환은 마지막 절의 선형 치환적분으로 정당화됩니다. \(\det\Sigma=(\det L)^2=8\)이고 \(L^{-\mathsf T}L^{-1}=\Sigma^{-1}\)이므로 로그를 취하면

\[ \log p_X(x) =-\log(2\pi)-\frac12\log 8 -\frac12(x-\mu)^{\mathsf T}\Sigma^{-1}(x-\mu). \]

로그 행렬식 항은 작은 영역의 부피 변화에 따른 밀도 보정입니다. 이를 빼면 이 변환으로 얻은 밀도의 정규화가 맞지 않습니다.

표준 좌표의 원과 L 변환 뒤의 타원을 같은 비율의 좌표축으로 보여주고 면적 배율 2루트2를 표시합니다.

그림 50 왼쪽의 \(z_1^2+z_2^2=1\)은 오른쪽에서 \((x-\mu)^{\mathsf T}\Sigma^{-1}(x-\mu)=1\)이 됩니다. 이 선은 특정 확률수준을 새로 주장하는 것이 아니라 같은 이차식 값을 표시한 것입니다. 그림에서는 \(\mu=0\)입니다.#

11. 대칭 모수에서는 어느 변수를 미분하는가?#

위 공분산의 역은

\[\begin{split} \Sigma^{-1} =\frac18\begin{pmatrix}3&-2\\-2&4\end{pmatrix}. \end{split}\]

일반 방향 \(H=(h_{ij})\)에 대해

\[ d\log\det\Sigma[H] =\frac38h_{11}-\frac14h_{12}-\frac14h_{21}+\frac12h_{22}. \]

네 성분을 독립적으로 바꾸는 좌표에서 gradient는 \((\Sigma^{-1})^{\mathsf T}\)이며, \(\Sigma\)가 대칭이므로 여기서는 \(\Sigma^{-1}\)와 같습니다.

그러나 \(S(a,b,c)=\begin{pmatrix}a&b\\b&c\end{pmatrix}\)의 세 모수를 사용하면 \(h_{12}=h_{21}=db\)입니다. 따라서

\[ d\log\det S=\frac38\,da-\frac12\,db+\frac12\,dc \]

입니다. vech 순서 \((a,b,c)\)의 gradient는 \((3/8,-1/2,1/2)\)입니다. C3의 복제행렬로 쓰면 \(D^{\mathsf T}\operatorname{vec}(\Sigma^{-1})\)와 같습니다.

이를 “대칭 gradient는 언제나 비대각을 두 배 한 행렬”이라고만 말하면 기준이 모호합니다. 대칭행렬 공간에서 성분곱 합으로 표현하는 gradient는 여전히 \(\Sigma^{-1}\)로 쓸 수 있고, 세 독립 모수의 좌표 gradient에서 비대각 계수가 합쳐지는 것입니다.

12. 작은 행렬식은 언제 위험 신호가 아닌가?#

\(A=10^{-3}I_{100}\)은 모든 방향을 똑같이 \(10^{-3}\)배 합니다. 역은 \(10^3I\)이고, 유클리드 연산자 노름에서 조건수는 \(10^{-3}\cdot10^3=1\)입니다. 행렬식은 \(10^{-300}\)으로 아주 작지만 상대적인 입력 오차를 특정 방향에서 증폭시키는 불균형은 없습니다.

반대로

\[ B=\operatorname{diag}(10^5,10^{-5}) \]

는 행렬식이 1인데 노름 조건수는 \(10^5\cdot10^5=10^{10}\)입니다. 대각행렬의 노름은 가장 큰 대각 절댓값입니다. 실제로 \(\|Bx\|_2^2=\sum_i |b_i|^2|x_i|^2\le(\max|b_i|)^2\|x\|_2^2\)이고, 최대 위치의 기저벡터에서 등호가 되어 확인됩니다.

따라서 정확한 “행렬식이 0인가”와 근사적인 “행렬식이 작은가”를 같은 진단으로 쓰면 안 됩니다.

2차원에서 tI는 행렬식 t제곱과 조건수 1을 가지며 diag(t,1/t)는 행렬식 1과 조건수 t제곱을 가지는 것을 로그 눈금으로 비교합니다.

그림 51 두 가족에서 행렬식과 조건수가 서로 다른 정보를 기록합니다. 로그 눈금을 사용했고, 모든 \(t\)는 양수입니다. 행렬식이 정확히 0인 경우는 이 그래프에 포함하지 않았습니다.#

이미 \(\Sigma=LL^{\mathsf T}\)이고 \(L\)이 양의 대각을 갖는 삼각행렬로 주어졌다면

\[ \log\det\Sigma =\log\left(\prod_i L_{ii}^2\right) =2\sum_i\log L_{ii}. \]

행렬식을 먼저 큰 곱으로 만든 뒤 로그를 취하지 않아도 됩니다. 일반적인 양정치 행렬에서 이런 \(L\)이 존재하고 안정적으로 구하는 방법은 후속 내적·수치 파트에서 증명합니다. 이번 예에서는 \(L\)을 직접 주고 곱으로 확인했습니다.

13. 정확산술과 로그 계산을 확인하기#

from sympy import Matrix, symbols, eye, expand, Rational
import numpy as np
z,t=symbols("z t")
A=Matrix([[3,1,1],[0,3,2],[0,0,5]])
assert expand((z*eye(3)-A).det())==z**3-11*z*z+39*z-45
assert A.adjugate()*A==A*A.adjugate()==A.det()*eye(3)
Sigma=Matrix([[4,2],[2,3]])
H=Matrix([[1,2],[2,-1]])
assert Sigma.det()==8
assert expand((Sigma+t*H).det())==8-9*t-5*t*t
assert (Sigma.inv()*H).trace()==Rational(-9,8)
M=Matrix([[Rational(4,5),Rational(-3,10)],
          [Rational(-2,5),Rational(9,10)]])
assert M.inv()==Matrix([[Rational(3,2),Rational(1,2)],
                       [Rational(2,3),Rational(4,3)]])
L=np.array([[2.,0.],[1.,np.sqrt(2.)]])
sign,logabs=np.linalg.slogdet(L@L.T)
assert sign==1 and np.isclose(logabs,2*np.log(np.diag(L)).sum())
# 곱을 먼저 만들지 않고 대각의 로그를 더합니다.
values=np.full(400,1e-3)
with np.errstate(under="ignore"):
    direct=np.prod(values)
assert direct==0.0
safe_log=np.log(values).sum()
assert np.isfinite(safe_log) and np.isclose(safe_log,400*np.log(1e-3))
print("행렬식:", Sigma.det(), "방향 로그미분:", (Sigma.inv()*H).trace())
print("작은 수 400개의 곱:", direct, "/ 유한한 로그합:", safe_log)
행렬식: 8 방향 로그미분: -9/8
작은 수 400개의 곱: 0.0 / 유한한 로그합: -2763.1021115928547

마지막 계산은 명시한 float64 배열에서 작은 곱이 표현 범위 아래로 내려가는 예입니다. 행렬이 수학적으로 특이하다는 뜻이 아닙니다. 로그합은 같은 양의 로그를 직접 표현하므로 이 곱의 언더플로를 피합니다.

14. 직접 써 보는 문제와 전체 풀이#

문제 1 · 비교정태의 다른 열#

4절에서 최종수요 변화가 \((h,0)\)이면 산출 변화는 얼마인가요?

풀이. 역행렬의 첫 열에 \(h\)를 곱하여 \((3h/2,2h/3)\)입니다. \(M\)을 곱하면 첫 성분은 \((4/5)(3h/2)-(3/10)(2h/3)=6h/5-h/5=h\), 둘째는 \(-(2/5)(3h/2)+(9/10)(2h/3)=-3h/5+3h/5=0\)입니다.

문제 2 · 행렬식이 0이어도 미분은 존재한다#

\(A=\operatorname{diag}(1,0)\), \(H=\operatorname{diag}(0,1)\)에서 방향 미분을 구하세요.

풀이. \(\det(A+tH)=t\)이므로 미분은 1입니다. \(\operatorname{adj}A=\operatorname{diag}(0,1)\)여서 \(\operatorname{tr}(\operatorname{adj}A\,H)=1\)입니다. 역행렬은 없으므로 역을 포함한 공식을 쓰면 안 됩니다.

문제 3 · 대각합과 행렬식만으로 충분한가?#

\(A=I_2\), \(B=\begin{pmatrix}1&1\\0&1\end{pmatrix}\)를 비교하세요.

풀이. 둘 다 대각합 2, 행렬식 1입니다. 그러나 \(A-I=0\)의 계수는 0이고 \(B-I\)의 계수는 1입니다. 상사라면 이 계수가 같아야 하므로 상사가 아닙니다. 두 스칼라는 완전한 상사 불변량이 아닙니다.

문제 4 · 대칭 비대각 방향#

\(\Sigma=\begin{pmatrix}4&2\\2&3\end{pmatrix}\)에서 두 비대각 원소를 동시에 \(t\)만큼 늘릴 때 \(\log\det\)의 미분을 구하세요.

풀이. \(\det\begin{pmatrix}4&2+t\\2+t&3\end{pmatrix}=12-(2+t)^2=8-4t-t^2\)입니다. 로그의 미분은 \(-4/8=-1/2\)입니다. 역행렬의 한 비대각 성분 \(-1/4\)만 취하면 두 위치 중 하나를 빠뜨립니다.

문제 5 · 단위 변경과 행렬식#

가역 \(n\times n\) 행렬 \(A\)\(cA\), \(c\ne0\)으로 바꾸면 행렬식과 노름 조건수는 어떻게 되나요?

풀이. 각 열에 \(c\)를 곱하므로 다중선형성에서 \(\det(cA)=c^n\det A\)입니다. 유도노름은 \(\|cA\|=|c|\|A\|\)이고 역은 \(c^{-1}A^{-1}\)이므로 조건수는 \(|c|\|A\||c|^{-1}\|A^{-1}\|=\kappa(A)\)입니다. 행렬식 크기는 달라져도 같은 비율의 전체 스케일 변경으로 상대 조건수가 바뀌지는 않습니다.

15. 지금까지의 내용을 수학의 언어로 정리해 봅시다#

행렬식의 정의, 그 계산 규칙, 특성다항식과 미분을 정리합니다. 대수적 결과는 체 \(F\) 위의 유한차원에서 성립합니다. 부피·로그·미분의 결과는 실수에서 논의합니다.

15.1 행렬식의 정의와 곱셈성#

정의 18 (행렬식)

\(n\)차원 공간 \(V\)의 선형사상 \(T\)에 대해 \(\Lambda^nT\)가 1차원 공간 \(\Lambda^nV\)에서 작용하는 스칼라를 \(\det T\)라 합니다. 0차원에서는 \(\Lambda^0T=I_F\)이므로 행렬식을 1로 정합니다.

C4의 차원 정리가 정의를 정당화합니다. 2절에서 기저 무관성과 곱셈성을 임의의 \(T,S\)에 대해 증명했습니다. \(\det I=1\)이고, 가역이면 \(\det T^{-1}=1/\det T\)입니다. 가역성의 동치는 C4의 계수 판정과 차원정리를 사용한 2절의 논증입니다.

C4의 성분 공식에서

\[ \det A=\sum_{\sigma\in S_n}\operatorname{sgn}(\sigma) \prod_j a_{\sigma(j),j} \]

를 얻습니다. 전치의 식에서 순열을 \(\sigma^{-1}\)로 다시 이름 붙이면 \(\det A^{\mathsf T}=\det A\)입니다. 부호는 역순열에서도 같고 성분곱은 체에서 순서를 바꿀 수 있기 때문입니다.

각 열에 대한 선형성, 열 교환의 부호 변화, 한 열의 배수를 다른 열에 더해도 값이 같음은 쐐기의 다중선형성과 교대성에서 나옵니다. 전치 불변성으로 행에도 같은 법칙이 성립합니다. 블록 대각행렬의 행렬식은 각 블록 행렬식의 곱입니다. 순열 전개에서 블록 밖의 0을 사용하지 않는 순열만 남고, 각 블록의 순열 합이 독립적으로 곱해지기 때문입니다.

15.2 쐐기와 쌍대성에서 여인수 얻기#

\(n\ge1\)이라 하고 \(e_{\widehat j}\)\(e_j\)를 뺀 증가 순서의 쐐기로 둡니다. \(v\in V\), \(\eta\in\Lambda^{n-1}V\)에 대해 \(v\wedge\eta\)\(\Lambda^nV\)의 원소입니다. 따라서 \(\eta\)는 “벡터를 받아 최상위 쐐기를 돌려주는 선형사상”을 정의합니다.

특히

\[ e_i\wedge e_{\widehat j} =\delta_{ij}(-1)^{j-1}\Omega. \]

\(i\ne j\)이면 같은 인덱스가 중복되고, \(i=j\)이면 첫 번째의 \(e_j\)를 제자리로 옮기는 데 \(j-1\)번 교환하기 때문입니다. 그러므로 \(e_{\widehat j}\)들은 부호를 제외하면 쌍대기저와 대응하며 \(\Lambda^{n-1}V\simeq V^*\otimes\Lambda^nV\)입니다. 기저를 기저로 보내므로 실제 동형입니다.

이제

\[ Te_k\wedge\Lambda^{n-1}T(e_{\widehat j}) =\Lambda^nT(e_k\wedge e_{\widehat j}) =\det(T)\delta_{kj}(-1)^{j-1}\Omega. \]

왼쪽을 C4의 성분 공식으로 전개하면

\[ \sum_i T_{ik}\det T[\widehat i,\widehat j](-1)^{i-1}\Omega. \]

양변에 \((-1)^{j-1}\)을 곱하고 \(\Omega\)의 계수를 비교하면

\[ \sum_i(-1)^{i+j}\det T[\widehat i,\widehat j]T_{ik} =\delta_{jk}\det T. \]

이는 정확히 \((\operatorname{adj}T\,T)_{jk}\)의 식입니다. \(k=j\)인 경우가 한 열에 따른 Laplace 전개입니다. 전치행렬에 적용하고 다시 전치하면 \(T\operatorname{adj}T=\det(T)I\)도 얻습니다.

가역 \(A\)\(Ax=b\)에 역행렬을 곱하면

\[ x_j=\frac{\sum_i C_{ij}b_i}{\det A}. \]

분자는 \(A\)\(j\)열을 \(b\)로 바꾼 행렬의 그 열에 대한 Laplace 전개입니다. 따라서 \(x_j=\det A_j(b)/\det A\)라는 Cramer 공식이 나옵니다. 이는 해석적 비율을 주는 정리이며 큰 선형계의 권장 수치 알고리즘이라고 주장하지 않습니다.

15.3 특성다항식의 계수#

정리 63 (외적 거듭제곱의 대각합과 특성다항식)

\(c_T(z)=\sum_{k=0}^n(-1)^k\operatorname{tr}(\Lambda^kT)z^{n-k}\)입니다.

증명. \((ze_1-Te_1)\wedge\cdots\wedge(ze_n-Te_n)\)을 전개합니다. 부분집합 \(I\)에 속하는 위치에서 \(-Te_i\), 다른 위치에서 \(ze_i\)를 고르면 계수 \((-1)^{|I|}z^{n-|I|}\)를 얻습니다.

\(Te_i\)의 성분 중 \(j\notin I\)\(e_j\)는 이미 다른 자리에서 선택한 \(e_j\)와 중복되어 0입니다. 따라서 \(I\) 안의 행 성분만 남고 그 계수는 \(\det T[I,I]\)입니다. 이때 \(I\) 위치들을 앞으로 모으는 부호와 계산 뒤 되돌리는 부호가 같아 곱이 1이므로 추가 부호는 없습니다.

크기가 \(k\)인 모든 \(I\)에 대해 합하면 \(\sum_{|I|=k}\det T[I,I]\)입니다. C4의 좌표 정리에서 이것이 \(\Lambda^kT\)의 대각합입니다. 모든 \(k\)의 합이 원하는 식을 줍니다. \(\square\)

15.4 일반화 고유공간과 근 중복도의 일치#

\(m_T\)가 완전히 분해되는 체에서 C1의 준분해를 적용합니다. 각 \(G(\lambda,T)\)에서 C2의 사슬 기저를 고르면 제한사상의 대각은 모두 \(\lambda\)이고 상삼각입니다. 따라서 그 블록의 특성다항식은 \((z-\lambda)^{\dim G(\lambda,T)}\)입니다. 블록 대각의 곱셈 법칙으로

\[ c_T(z)=\prod_\lambda(z-\lambda)^{\dim G(\lambda,T)}. \]

이것이 C1에서 정의한 대수적 중복도와 전통적인 근 중복도가 일치하는 증명입니다. 최소다항식의 지수는 해당 멱영사상의 최대 사슬 길이이고 이는 그 공간의 차원 이하이므로, 이 경우 \(m_T\mid c_T\)도 얻습니다. C7은 이 결과와 다른 방법들을 통해 Cayley–Hamilton을 더 일반적인 범위에서 정리합니다. 여기서 일반 체의 분해체 존재를 증명 없이 앞당겨 사용하지 않았습니다.

15.5 Kronecker 행렬식의 회수#

\(A\)\(n\times n\), \(B\)\(m\times m\), \(m,n\ge1\)이면 모든 체에서

\[ \det(A\otimes B)=(\det A)^m(\det B)^n. \]

증명. \(A\)가 특이하면 0 아닌 \(x\in\ker A\)와 0 아닌 \(y\)를 골라 \((A\otimes B)(x\otimes y)=0\)을 얻습니다. \(x\otimes y\ne0\)은 C3의 기저 성분곱 또는 계수 1 대응에서 확인됩니다. \(B\)가 특이한 경우도 같습니다. 따라서 특이한 경우 양변은 0입니다.

둘 다 가역이면 혼합곱으로 \(A\otimes B=(A\otimes I_m)(I_n\otimes B)\)입니다. 두 번째 인수는 \(B\)\(n\)개인 블록 대각이므로 행렬식이 \((\det B)^n\)입니다.

첫 번째는 소거법의 기본행렬로 계산합니다. 가역 \(A\)는 행 기본변환으로 \(I\)가 되므로 기본행렬들의 곱입니다. 행 하나를 \(c\)배 하는 기본행렬 \(E\)에서는 \(E\otimes I_m\)\(m\)개 행을 각각 \(c\)배 하므로 행렬식이 \(c^m\)입니다. 다른 행의 배수를 더하는 경우는 \(m\)번의 행 덧셈이므로 1입니다. 두 행을 바꾸는 경우 두 크기 \(m\) 블록을 교환하며 개별 행 \(m\)쌍의 교환으로 구현되어 부호가 \((-1)^m\)입니다. 각 경우 \(\det(E\otimes I_m)=(\det E)^m\)입니다. 혼합곱과 행렬식 곱셈성을 기본행렬의 곱에 반복 적용하면 결론입니다. \(\square\)

15.6 Jacobi 공식의 일반 증명#

행렬식은 각 열에 선형이므로 \(A+tH\)의 열을 전개할 때 \(t\)가 정확히 한 번 나오는 항은 \(A\)의 한 열만 \(H\)의 같은 열로 바꾼 행렬식입니다. 두 열 이상을 바꾼 항에는 \(t^2\) 이상의 인수가 있습니다. 따라서

\[ \left.\frac{d}{dt}\det(A+tH)\right|_{t=0} =\sum_j\sum_i C_{ij}(A)H_{ij} =\operatorname{tr}(\operatorname{adj}(A)H). \]

마지막 등식은 수반행렬이 여인수 행렬의 전치라는 정의에서 나옵니다. 가역이면 수반행렬 항등식으로 \(\operatorname{adj}(A)=\det(A)A^{-1}\)를 대입하여 Jacobi 공식을 얻습니다.

\(\operatorname{tr}(A^{-1}H)=\sum_{i,j}(A^{-1})_{ji}H_{ij}\)이므로 자유 행렬 성분의 gradient는 \((A^{-1})^{\mathsf T}\)입니다. 대칭 방향으로 제한했을 때의 합산은 11절에서 직접 계산했습니다.

15.7 선형 부피·밀도 변환의 정당화#

실수 가역행렬은 소거법의 기본행렬들의 곱입니다. 기본변환마다 적분의 변화율을 확인하면 전체 변환에도 곱으로 적용할 수 있습니다.

좌표 교환은 반복적분의 순서를 바꾸므로 부피를 유지합니다. 한 좌표를 \(c\ne0\)배 하면 일변수 치환적분에서 \(|c|\)배가 됩니다. 한 좌표에 다른 좌표의 배수를 더하는 변환 \(x_i'=x_i+ax_j\)는 다른 좌표를 고정한 각 단면에서 평행이동이므로 길이를 보존합니다. 비음수 함수의 반복적분 법칙으로 이를 모든 단면에 적분하면 부피도 유지됩니다.

각 기본변환의 배율은 각각 \(1,|c|,1\)로 그 행렬식의 절댓값과 같습니다. 합성에서 배율을 곱하고 행렬식 곱셈성을 적용하면 비음수 가측함수에 대해 선형 치환식

\[ \int_{\mathbb R^n}f(Az)\,|\det A|\,dz =\int_{\mathbb R^n}f(x)\,dx \]

를 얻습니다. 집합의 지시함수에 적용하면 가측집합 \(E\)의 부피는 \(\operatorname{vol}(AE)=|\det A|\operatorname{vol}(E)\)입니다.

특이행렬의 상은 진부분공간입니다. 상의 기저를 전체 기저로 확장하는 가역변환으로 좌표 부분공간에 옮길 수 있고, 좌표 부분공간은 적어도 한 좌표가 0인 단면이므로 반복적분에서 측도가 0입니다. 따라서 특이변환의 상은 부피 0입니다. 무한 부피에 \(0\)을 곱하는 표기 대신 이 사실 자체로 진술합니다.

마지막으로 \(X=\mu+LZ\)에서 임의의 가측집합 \(E\)에 대해 \(P(X\in E)=\int_{L^{-1}(E-\mu)}p_Z(z)\,dz\)입니다. 방금 증명한 선형 치환식과 평행이동을 사용하면

\[ P(X\in E)=\int_E\frac{p_Z(L^{-1}(x-\mu))}{|\det L|}\,dx. \]

따라서 10절의 밀도 공식이 나옵니다. 일반 비선형 변환의 야코비안도 각 점의 도함수의 행렬식과 관련되지만, 그 전역 치환정리는 별도의 해석학 정리가 필요합니다.

본문의 계산

수학적 표현

전체 방향 기록의 배율

\(\det T\)

연속된 두 변환의 배율을 곱함

행렬식 곱셈성

수요 변화의 특정 성분을 비율로 읽음

여인수와 Cramer 공식

일반화 고유공간의 차원

특성다항식의 근 중복도

부피가 늘어날 때 밀도를 나눔

선형 치환의 $

로그 행렬식의 방향 변화율

\(\operatorname{tr}(A^{-1}H)\)

작은 행렬식과 큰 상대오차는 다름

스케일과 조건수의 구분

행렬식으로 부피 변화와 특성다항식을 읽었습니다. 다음 장에서는 행렬 자체가 조금 변할 때 출력과 행렬식이 얼마나 바뀌는지, 변화량에 대한 선형사상으로 계산합니다. C6로 이어 읽기.