복합행렬

편집 역사 토론
수치해석 계산물리 마지막 수정: 2026-08-23 04:27:09

1. 개요[편집]

복합행렬
Compound matrix
정의$A$ 의 모든 $k$ 차 소행렬식을 사전식으로 배열한 행렬 $C_k(A)$
크기$\binom{m}{k}\times\binom{n}{k}$
핵심 항등식코시-비네 $C_k(AB)=C_k(A)C_k(B)$
고유값원 고유값 $k$ 개의 곱 전부
양 끝$C_1(A)=A$, $C_n(A)=\det A$
실무작은 $n$ 에서만. 큰 문제는 연속 QR로 대체

복합행렬(compound matrix)은 행렬 AAkk 차 소행렬식들을 성분으로 삼아 새로 만든 행렬 Ck(A)C_k(A) 로, m×nm\times n 행렬에서 행 kk 개와 열 kk 개를 고르는 모든 방법에 대해 그 부분행렬의 행렬식을 계산하고, 인덱스 집합을 사전식으로 줄 세워 (mk)×(nk)\binom{m}{k}\times\binom{n}{k} 배열에 담은 것이다.

[Ck(A)]I,J=detA[IJ],I([m]k), J([n]k)\bigl[C_k(A)\bigr]_{I,J} = \det A[I \mid J], \qquad I \in \binom{[m]}{k},\ J \in \binom{[n]}{k}

양 끝은 익숙한 물건이다. k=1k=1 이면 C1(A)=AC_1(A)=A 그대로고, AAn×nn\times n 일 때 k=nk=n 이면 Cn(A)=detAC_n(A)=\det A 라는 1×11\times1 행렬이다. 즉 복합행렬은 행렬과 행렬식 사이를 잇는 사다리이며, 그 사다리의 각 칸이 ”kk 차원 부피가 어떻게 늘어나는가”를 잰다. 존재 이유를 한 줄로 말하면, 행렬식이 만족하는 곱셈 법칙 det(AB)=detAdetB\det(AB)=\det A\det B 가 모든 kk 에 대해 성립하도록 일반화한 것이 복합행렬이다.1

2. 코시-비네 — 이 개념의 전부[편집]

복합행렬의 값어치는 사실상 다음 한 줄에 다 들어 있다.

Ck(AB)=Ck(A)Ck(B)C_k(AB) = C_k(A)\,C_k(B)

코시-비네 정리(Cauchy–Binet)의 일반형이다. AAm×nm\times n, BBn×pn\times p 이고 kmin(m,n,p)k\le\min(m,n,p) 이면 성립하며, 성분으로 풀어 쓰면 ”ABAB 의 한 소행렬식은 AA 의 소행렬식과 BB 의 소행렬식의 곱의 합”이라는 익숙한 형태가 된다. m=n=p=km=n=p=k 로 두면 det(AB)=detAdetB\det(AB)=\det A\det B 로 돌아온다.

이 한 줄에서 나머지가 줄줄이 딸려 나온다.

  • Ck(In)=I(nk)C_k(I_n) = I_{\binom{n}{k}} 이므로 Ck(A1)=Ck(A)1C_k(A^{-1}) = C_k(A)^{-1}.
  • Ck(A)=Ck(A)C_k(A^{\top}) = C_k(A)^{\top}, Ck(A)=Ck(A)C_k(A^{*}) = C_k(A)^{*}. 직교행렬의 복합행렬은 직교행렬이고, 유니터리의 복합행렬은 유니터리다.
  • Ck(cA)=ckCk(A)C_k(cA) = c^k C_k(A).
  • AA 가 상삼각이면 Ck(A)C_k(A) 도 상삼각이고 대각성분은 ai1i1aikika_{i_1i_1}\cdots a_{i_ki_k} 다.

수학적으로 이건 kk 차 외대수 Λk\Lambda^k 위의 유도 사상을 기저 ei1eike_{i_1}\wedge\cdots\wedge e_{i_k} 로 좌표화한 것이다. 즉 CkC_k 는 함자(functor)이고 코시-비네는 그 함자성을 좌표로 쓴 것에 불과하다. 외대수의 언어로 보면 det=Λn\det = \Lambda^n 이 최고차 한 칸만 본 것이고, 복합행렬은 중간 칸들을 전부 살려 둔 것이다.

가장 손에 잡히는 얼굴은 부피다. XXn×kn\times k 이면 코시-비네에서

det(XX)=I(detX[I])2=Ck(X)F2\det(X^{\top}X) = \sum_{I}\bigl(\det X[I\mid\cdot]\bigr)^2 = \lVert C_k(X)\rVert_F^2

이 나오고, 좌변의 제곱근은 XX 의 열들이 만드는 kk 차원 평행체의 부피다. Ck(X)C_k(X) 의 성분들은 그 부분공간의 플뤼커 좌표이며, 크기를 무시하면 그라스만 다양체 위의 한 점을 가리킨다. “부분공간을 좌표 대신 소행렬식 벡터로 표현한다”는 발상이 뒤에 나올 응용 전부의 뼈대다. 자세한 기하는 플뤼커 좌표 쪽 이야기.

3. 스펙트럼 — 고유값 kk 개의 곱[편집]

AA 의 고유값이 λ1,,λn\lambda_1,\ldots,\lambda_n(중복 포함)이면 Ck(A)C_k(A) 의 고유값은

λi1λi2λik,i1<i2<<ik\lambda_{i_1}\lambda_{i_2}\cdots\lambda_{i_k}, \qquad i_1<i_2<\cdots<i_k

(nk)\binom{n}{k} 개다. 슈어 분해 A=QTQA=QTQ^{*} 에 코시-비네를 먹이면 Ck(A)=Ck(Q)Ck(T)Ck(Q)C_k(A)=C_k(Q)C_k(T)C_k(Q)^{*} 이고, 삼각행렬의 복합행렬이 삼각이며 그 대각이 고유값들의 곱이라는 사실에서 곧바로 나온다. 같은 논법을 특이값 분해에 쓰면 특이값도 kk 개씩 곱해진다.

σ1(Ck(A))=σ1σ2σk,Ck(A)2=i=1kσi\sigma_1(C_k(A)) = \sigma_1\sigma_2\cdots\sigma_k, \qquad \lVert C_k(A)\rVert_2 = \prod_{i=1}^{k}\sigma_i

여기서 실무적으로 무시무시한 사실 하나가 따라 나온다. Ck(A)C_k(A)조건수σ1σk/(σnk+1σn)\sigma_1\cdots\sigma_k/(\sigma_{n-k+1}\cdots\sigma_n) 이라 원 행렬의 조건수를 kk 제곱 가까이 키운다. 복합행렬을 부동소수점으로 만들면 유효숫자가 kk 배 속도로 증발한다는 뜻이고, 이것이 뒤에서 “실제로는 계산하지 않는다”로 이어지는 첫 번째 이유다.

행렬식 쪽도 깔끔하다. 실베스터-프랑케 정리(Sylvester–Franke)는

detCk(A)=(detA)(n1k1)\det C_k(A) = (\det A)^{\binom{n-1}{k-1}}

를 준다. k=n1k=n-1 이면 지수가 n1n-1 이 되어 det(adjA)=(detA)n1\det(\operatorname{adj}A)=(\det A)^{n-1} 이라는 익숙한 공식이 된다. 그리고 그게 우연이 아니다.

4. 수반행렬·크라메르 법칙과의 연결[편집]

k=n1k=n-1 이 특별한 이유는 (nn1)=n\binom{n}{n-1}=n 이라 Cn1(A)C_{n-1}(A)원래와 같은 n×nn\times n 크기로 돌아오기 때문이다. 그리고 이 자리에 이미 이름이 붙은 물건이 살고 있다 — 수반행렬 adj(A)\operatorname{adj}(A) 다.

(n1)(n-1) 부분집합은 빠진 원소 하나로 지정되므로, 행 인덱스 집합 jˉ=[n]{j}\bar j = [n]\setminus\{j\} 로 줄을 세우면

adj(A)ij=(1)i+jMji=(1)i+j[Cn1(A)]jˉ,iˉ\operatorname{adj}(A)_{ij} = (-1)^{i+j}M_{ji} = (-1)^{i+j}\bigl[C_{n-1}(A)\bigr]_{\bar j,\,\bar i}

이다. 즉 수반행렬은 (n1)(n-1) 차 복합행렬의 전치에 체스판 부호를 얹은 것이다. 부호 대각행렬 S=diag((1)i)S=\operatorname{diag}((-1)^{i}) 를 쓰면 adj(A)=SCn1(A)S\operatorname{adj}(A) = S\,C_{n-1}(A)^{\top}S 로 한 줄에 적히고, S2=IS^2=I 이므로 코시-비네가 곧바로

adj(AB)=SCn1(B)Cn1(A)S=adj(B)adj(A)\operatorname{adj}(AB) = S\,C_{n-1}(B)^{\top}C_{n-1}(A)^{\top}S = \operatorname{adj}(B)\operatorname{adj}(A)

를 준다. 수반행렬의 곱 순서가 뒤집히는 이유가 “전치가 곱을 뒤집기 때문”이라는 것이 여기서야 눈에 보인다. 여인수 전개로 이걸 직접 증명하려 들면 지옥이다.

크라메르 법칙도 같은 언어로 다시 읽힌다. Ax=bAx=b 의 해가

xi=detAidetA=(adj(A)b)idetAx_i = \frac{\det A_i}{\det A} = \frac{(\operatorname{adj}(A)\,b)_i}{\det A}

이므로, 크라메르 법칙은 Cn1C_{n-1}CnC_n 이라는 이웃한 두 칸의 비다. 사다리의 마지막 두 칸만 쓰는 공식인 셈. 이 시점에서 복합행렬이 왜 잘 안 알려졌는지도 짐작이 간다 — 사람들이 실제로 쓰는 칸이 맨 위 두 개뿐이라, 중간 칸에 이름을 붙일 필요를 못 느낀 것이다.

5. 덧셈형 복합행렬 — 미분방정식이 요구하는 버전[편집]

지금까지의 CkC_k 는 곱셈을 곱셈으로 보내는 곱셈형(multiplicative) 복합행렬이다. 그런데 미분방정식에 쓰려면 덧셈을 덧셈으로 보내는 버전이 필요하다. CkC_k 를 항등원 근처에서 미분한 것이 덧셈형 복합행렬(additive compound)이다.

A[k]=ddεCk(I+εA)ε=0A^{[k]} = \left.\frac{d}{d\varepsilon}\,C_k(I+\varepsilon A)\right|_{\varepsilon=0}

고유값은 곱이 아니라 이 된다 — λi1++λik\lambda_{i_1}+\cdots+\lambda_{i_k}. n=3,k=2n=3,k=2 의 명시적 형태가 자주 인용된다(인덱스 쌍을 {1,2},{1,3},{2,3}\{1,2\},\{1,3\},\{2,3\} 순으로 줄 세운 것).

A[2]=[a11+a22a23a13a32a11+a33a12a31a21a22+a33]A^{[2]} = \begin{bmatrix} a_{11}+a_{22} & a_{23} & -a_{13}\\ a_{32} & a_{11}+a_{33} & a_{12}\\ -a_{31} & a_{21} & a_{22}+a_{33} \end{bmatrix}

대각합이 2trA2\operatorname{tr}A 인 것으로 검산이 된다. 이게 필요한 이유는 다음 사실 때문이다. 선형계 Φ˙=A(t)Φ\dot\Phi = A(t)\Phi 의 기본행렬 Φ\Phi 에 대해

ddtCk(Φ)=A[k](t)Ck(Φ)\frac{d}{dt}\,C_k(\Phi) = A^{[k]}(t)\,C_k(\Phi)

가 성립한다. 즉 소행렬식들 자체가 또 하나의 선형 미분방정식을 만족한다. k=nk=n 을 넣으면 A[n]=trAA^{[n]}=\operatorname{tr}A 라서 ddtdetΦ=(trA)detΦ\frac{d}{dt}\det\Phi = (\operatorname{tr}A)\det\Phi, 곧 브론스키 행렬식의 아벨 항등식이 나온다. 아벨 항등식은 사다리 맨 위 칸의 특수한 경우였던 것.

이 방정식이 실제 정리를 낳는다. 멀다우니(Muldowney, 1990)는 x˙=f(x)\dot x=f(x) 의 야코비안 JJ 에 대해 J[2]J^{[2]} 의 로그 노름이 음수이면 주기해가 존재할 수 없음을 보였다. 2차원의 벤딕손 판정법(divf<0\operatorname{div}f<0 이면 주기해 없음)을 고차원으로 올린 것이며, 논리도 그대로다 — 2차원 부피가 단조 감소하면 닫힌 궤도를 둘러싼 면적이 유지될 수 없다. 감염병 모형이나 화학 반응계의 전역 안정성 증명에서 지금도 쓰이는 도구다.2

6. 랴푸노프 스펙트럼의 부분합[편집]

카오스 쪽에서 복합행렬이 정확히 무엇을 재는지가 가장 선명하게 드러난다. 랴푸노프 지수 λ1λ2λn\lambda_1\ge\lambda_2\ge\cdots\ge\lambda_n부분합이 바로 kk 차 복합행렬의 성장률이다.

λ1+λ2++λk=limt1tlnCk(Φ(t))\lambda_1+\lambda_2+\cdots+\lambda_k = \lim_{t\to\infty}\frac{1}{t}\ln\bigl\lVert C_k(\Phi(t))\bigr\rVert

k=1k=1 이면 접선 벡터 하나의 신장률, k=2k=2 면 접선 평면 조각의 넓이 신장률, k=nk=n 이면 위상공간 부피의 신장률 =trA=\operatorname{tr}A 로 리우빌 정리다. 개별 지수를 직접 정의하기 어려운 자리에서 “부분합의 사다리”가 훨씬 자연스러운 대상이라는 것이 오셀레데츠 정리 계열 논의의 출발점이고, 카오스 이론에서 자주 등장하는 캐플런-요크 차원이 부분합이 부호를 바꾸는 지점을 선형보간하는 것도 이 그림 위에 있다.

7. 그래서, 계산은 하지 않는다[편집]

이론이 이렇게 예쁜데 수치 코드에서 복합행렬을 거의 못 보는 이유는 두 가지다.

첫째, 크기가 폭발한다. (nk)\binom{n}{k}kn/2k\approx n/2 에서 최대가 되는데, n=20n=20 이면 (2010)=184756\binom{20}{10}=184\,756 이다. 20×2020\times20 행렬 하나가 1818 만 차원 행렬로 부푼다. 행렬-벡터 곱조차 감당이 안 된다.

둘째, 조건수가 kk 제곱으로 나빠진다. 앞 절에서 본 σ\sigma 의 곱 구조 때문이다. 성분들이 10±20010^{\pm200} 을 오가며 오버플로·언더플로하고, 살아남아도 유효숫자가 없다.

그래서 큰 문제에서는 QR 기반 연속 직교화가 복합행렬을 대신한다. 부분공간을 소행렬식 벡터로 들고 다니는 대신, n×kn\times k 기저 행렬을 적분하면서 주기적으로 QR 분해로 재직교화하고 성장은 RR 의 대각에 로그로 흡수한다. lnR11Rkk\ln\lvert R_{11}\cdots R_{kk}\rvert 가 정확히 lnCk\ln\lVert C_k\rVert 자리를 대신하므로 얻는 정보는 같은데 조건수가 항상 1이다. 랴푸노프 스펙트럼의 벤티틴 알고리즘, 경계값 문제의 고두노프-콘테 직교화, 그람-슈미트 재직교화가 전부 이 한 가지 요령의 다른 이름이다.

그럼에도 복합행렬이 그대로 살아남은 자리가 있다 — nn 이 작을 때다. 오어-조머펠트 방정식은 4차 상미분방정식이라 n=4n=4, k=2k=2 이고 (42)=6\binom{4}{2}=6 이다. 6차원 계 하나만 적분하면 되는데, 그 대가로 지수적으로 갈라지는 두 해가 만드는 악명 높은 강성이 통째로 사라진다(소행렬식은 부분공간만 보므로 “해들이 서로 평행해지는” 병 자체가 없다). 유체 안정성 계산에서 응·리드(Ng–Reid, 1979)가 정착시킨 이 복합행렬법은 지금도 고전적 표준 해법으로 인용되며, 자기지구물리의 층상 매질 문제에서도 같은 기법이 독립적으로 발견됐다.

이론 쪽 부수입도 하나 있다. 모든 차수의 복합행렬의 성분이 전부 양수인 행렬을 완전양행렬(totally positive matrix)이라 하는데, 이 조건이 곧바로 “고유값이 모두 실수이고 서로 다르며 양수”라는 결론과 고유벡터의 부호 변화 개수 규칙을 준다. 페론-프로베니우스 정리를 각 복합행렬에 따로 적용한 것으로, 간트마허-크레인의 진동 이론이 이 논법 위에 서 있다. 즉 복합행렬은 계산 도구로는 은퇴했어도 정리를 증명하는 도구로는 현역이다.3

8. 관련 문서[편집]

9. Footnotes[편집]

  1. 이름이 지독하게 불친절하다. “복합”에는 아무 정보가 없고, 영어 compound도 사정이 같다. 차라리 “소행렬식 행렬”이나 ”kk 차 부피 행렬”이었다면 개념이 훨씬 빨리 퍼졌을 것이다. 실제로 이 개념은 19세기에 이미 완성됐는데도 학부 선형대수 교과서에서 거의 볼 수 없다 — 수반행렬이라는 특수 사례만 이름을 달고 살아남았다.

  2. 2차원에서는 “면적이 줄어들면 닫힌 궤도가 없다”가 직관적으로 명백한데, 고차원에서 그 직관을 살리려면 어떤 차원의 부피를 봐야 하는지를 골라야 한다. 답이 2차원 부피이고, 그것을 재는 연산자가 J[2]J^{[2]} 라는 것이 멀다우니의 통찰이다. 3차원 계에서 J[2]J^{[2]} 는 여전히 3×33\times3 이라 손으로도 다룰 만하다는 점이 이 방법의 실용성을 지탱한다.

  3. 계산 도구로서의 은퇴는 사실 복합행렬만의 운명이 아니다. 크라메르 법칙, 수반행렬, 여인수 전개, 파데예프-르베리에 — 행렬식 계보의 물건들은 하나같이 “증명에는 쓰고 코드에는 안 쓴다”는 자리로 밀려났다. 부동소수점이라는 환경이 행렬식보다 직교변환을 훨씬 편애하기 때문이다. 억울하면 조건수를 낮춰 오든가.