C3 · 행렬을 미지수로 하는 계산을 어떻게 선형식으로 바꿀까?#

회귀계수를 여러 식에 동시에 기록하거나 두 부분계의 상태를 함께 기록하면, 미지수 자체가 행렬이 됩니다. 이때도 미지수의 각 성분에 관해서는 선형인 계산이 많습니다. 이번 장은 그 성분들을 어떤 순서로 기록해야 하는지에서 출발합니다.

숫자를 세로로 펼치는 규약이 수학의 본질은 아닙니다. 그러나 규약을 정하지 않으면 같은 기호로 서로 다른 계산을 하게 됩니다. 작은 행렬에서 모든 성분을 확인한 뒤, 그 계산이 텐서곱이라는 일반적인 구성의 좌표 표현임을 보겠습니다. 본문의 예제는 실수이고, 형식화에서는 유한차원 공간과 해당 체를 명시합니다.

1. 양쪽에서 곱하는 행렬의 각 성분을 먼저 계산하기#

행렬 \(X\)가 두 활동의 두 기간 자료를 담고 있다고 합시다. 행 방향을 변환하는 \(A\)와 열 방향을 변환하는 \(B\)가 주어져 있습니다.

\[\begin{split} X=\begin{pmatrix}a&b\\c&d\end{pmatrix},\quad A=\begin{pmatrix}1&2\\0&1\end{pmatrix},\quad B=\begin{pmatrix}1&0\\3&1\end{pmatrix}. \end{split}\]

자료는 같은 단위로 정규화했고 두 변환의 계수는 고정된 무차원 수라고 가정합니다. 먼저 왼쪽을 곱하면

\[\begin{split} AX=\begin{pmatrix}a+2c&b+2d\\c&d\end{pmatrix}. \end{split}\]

이 행렬에 \(B\)를 오른쪽에서 곱하면 첫 열은 원래 첫 열과 둘째 열의 3배를 더한 값입니다. 둘째 열은 그대로입니다.

\[\begin{split} AXB=\begin{pmatrix} a+2c+3b+6d&b+2d\\ c+3d&d \end{pmatrix}. \end{split}\]

각 성분이 \(a,b,c,d\)의 선형결합입니다. 그래서 \(X\mapsto AXB\)는 행렬들의 공간 위의 선형사상입니다. \(A\)\(B\)까지 미지수로 움직이면 같은 주장은 성립하지 않을 수 있습니다. 무엇을 고정했는지 먼저 밝혀야 합니다.

2. 열을 쌓는 vec 규약#

이 책은 첫 열을 먼저, 그다음 열을 아래에 붙입니다.

\[ \operatorname{vec}X=(a,c,b,d)^{\mathsf T}. \]

그러면 1절의 계산은

\[\begin{split} \operatorname{vec}(AXB)= \begin{pmatrix} 1&2&3&6\\ 0&1&0&3\\ 0&0&1&2\\ 0&0&0&1 \end{pmatrix} \begin{pmatrix}a\\c\\b\\d\end{pmatrix} \end{split}\]

입니다. 첫 행은 \(a+2c+3b+6d\), 둘째 행은 \(c+3d\)입니다. 출력 역시 열 순서로 쌓았다는 점을 확인하세요.

이 4×4 행렬을 2×2 블록으로 나누면

\[\begin{split} \begin{pmatrix}A&3A\\0A&A\end{pmatrix}. \end{split}\]

블록 앞의 계수 행렬은 \(B\)가 아니라 \(B^{\mathsf T}\)입니다. 이를 Kronecker 곱이라고 쓰면

\[ \operatorname{vec}(AXB)=(B^{\mathsf T}\otimes A)\operatorname{vec}X. \]

\(X=\begin{pmatrix}1&2\\3&4\end{pmatrix}\)이면 \(AXB=\begin{pmatrix}37&10\\15&4\end{pmatrix}\)이고, 올바른 입력 목록은 \((1,3,2,4)\)입니다. \((1,2,3,4)\)를 넣으면 첫 성분부터 \(1+4+9+24=38\)이 되어 틀립니다. 행으로 펼치는 규약도 사용할 수 있지만 그 경우 계수행렬도 바꾸어야 합니다.

2행 2열의 a,b,c,d를 열 우선 a,c,b,d 순으로 쌓는 대응과 각 위치 번호를 보여줍니다.

그림 43 배열을 펼칠 때의 순서는 선언해야 합니다. Python 예제에서도 열 우선 순서를 사용하며 기본 행 우선 펼치기와 구별합니다.#

3. 좌우 작용을 더하는 방정식을 실제로 풀기#

이번에는 \(AX+XB=C\)입니다. 같은 \(A,B\)를 계속 쓰는 것이 아니라, 계산을 쉽게 확인할 수 있는 다음 값으로 새로 정합니다.

\[\begin{split} A=\begin{pmatrix}1&1\\0&2\end{pmatrix},\qquad B=\begin{pmatrix}3&0\\0&4\end{pmatrix},\qquad C=\begin{pmatrix}7&14\\15&24\end{pmatrix}. \end{split}\]

\(X=\begin{pmatrix}a&b\\c&d\end{pmatrix}\)라 놓으면

\[\begin{split} AX=\begin{pmatrix}a+c&b+d\\2c&2d\end{pmatrix}, \qquad XB=\begin{pmatrix}3a&4b\\3c&4d\end{pmatrix}. \end{split}\]

따라서 네 식은

\[ 4a+c=7,\quad 5b+d=14,\quad 5c=15,\quad 6d=24. \]

뒤의 두 식에서 \(c=3,d=4\)를 얻습니다. 첫 식에 넣어 \(a=(7-3)/4=1\), 둘째 식에서 \(b=(14-4)/5=2\)입니다. 모든 성분을 결정했고 대입도 맞으므로 해는 \(X=\begin{pmatrix}1&2\\3&4\end{pmatrix}\)입니다.

vec로 쓰면

\[\begin{split} \left(I_2\otimes A+B^{\mathsf T}\otimes I_2\right)\operatorname{vec}X = \begin{pmatrix} 4&1&0&0\\0&5&0&0\\0&0&5&1\\0&0&0&6 \end{pmatrix} \operatorname{vec}X =\operatorname{vec}C. \end{split}\]

대각의 수 \(4,5,5,6\)\(A\)의 고윳값 1,2와 \(B\)의 고윳값 3,4의 합입니다. 뒤의 증명에서는 대각화되지 않는 경우에도 이 합으로 가역성을 판정할 수 있음을 보입니다.

공명이 생기는 예도 직접 보겠습니다. \(A=\operatorname{diag}(1,2)\), \(B=\operatorname{diag}(-1,3)\)이면 \((AX+XB)_{11}=0a\)입니다. 따라서 \(C_{11}\ne0\)이면 해가 없고, \(C_{11}=0\)이면 \(a\)가 자유입니다. 유일성이 깨지는 조건은 두 고윳값이 “같음”이 아니라 합이 0이 되는 것입니다.

4. 두 목록의 모든 조합을 기록해야 하는 이유#

두 부분계가 각각 두 상태를 가진다고 합시다. 첫 부분계의 확률은 \(p=(1/4,3/4)\), 둘째는 \(q=(3/5,2/5)\)이고 독립이라고 가정합니다. 결합 상태의 확률은

\[\begin{split} p_iq_j,\qquad \begin{pmatrix}p_1q_1&p_1q_2\\p_2q_1&p_2q_2\end{pmatrix} = \begin{pmatrix}3/20&1/10\\9/20&3/10\end{pmatrix}. \end{split}\]

독립이라는 가정이 곱을 정당화합니다. 모든 결합분포가 이 형태인 것은 아닙니다. 예를 들어

\[\begin{split} Q=\begin{pmatrix}1/2&0\\0&1/2\end{pmatrix} \end{split}\]

의 두 주변분포는 모두 \((1/2,1/2)\)이지만 그 곱은 모든 원소가 \(1/4\)인 행렬입니다. 따라서 \(Q\)는 독립 곱으로 표현되지 않습니다.

두 벡터에서 모든 성분곱을 기록하는 기호를 \(p\otimes q\)라고 씁니다. 그 기호는 각 입력에 따로 선형입니다.

\[ (p+p')\otimes q=p\otimes q+p'\otimes q,\qquad p\otimes(q+q')=p\otimes q+p\otimes q'. \]

두 입력을 동시에 바꾸면 교차항도 생깁니다. 예를 들어 \((2p)\otimes(2q)=4(p\otimes q)\)이므로 쌍 \((p,q)\) 전체에 대한 선형사상은 아닙니다. 각 입력에 따로 선형인 성질을 쌍선형성이라고 부릅니다.

확률분포 자체는 벡터공간이 아니므로 텐서곱은 이를 포함하는 전체 좌표공간에서 구성합니다. 실제 확률로 읽을 때에는 성분의 비음수와 합 1을 따로 검사합니다.

5. 단순 텐서 하나와 그 합은 다르다#

기저가 \((e_1,e_2)\), \((f_1,f_2)\)이면

\[ (ae_1+be_2)\otimes(cf_1+df_2) =ac\,e_1\otimes f_1+ad\,e_1\otimes f_2 +bc\,e_2\otimes f_1+bd\,e_2\otimes f_2. \]

이런 하나의 곱을 단순 텐서라고 부릅니다. 일반적인 텐서는 단순 텐서들의 유한 합입니다. 예를 들어 \(e_1\otimes f_1+e_2\otimes f_2\)가 하나의 곱이라고 가정하면

\[ ac=1,\quad ad=0,\quad bc=0,\quad bd=1 \]

이어야 합니다. \(ac=1\)에서 \(a,c\ne0\)이고 \(ad=0\)에서 \(d=0\)이지만 \(bd=1\)과 모순입니다. 따라서 하나의 곱으로는 쓸 수 없습니다. 네 기저 계수는 자유지만 단순 텐서의 네 계수에는 제약이 있습니다.

또한 \(\varphi\in V^*\)\(w\in W\)의 곱은 선형사상

\[ v\longmapsto\varphi(v)w \]

로 읽을 수 있습니다. 입력의 한 평가값을 계산한 다음 고정된 출력 방향을 그만큼 배율 조정하는 것입니다. 둘 다 0이 아니면 상이 정확히 \(\operatorname{span}(w)\)라서 계수가 1입니다. 하나가 0이면 계수도 0입니다. “단순 텐서는 언제나 계수 1”이라고 쓰면 영텐서를 놓칩니다.

6. 두 규칙을 함께 작용시키는 계산#

\(T:V\to V'\), \(S:W\to W'\)가 선형이면

\[ (T\otimes S)(v\otimes w)=Tv\otimes Sw \]

로 두 규칙을 함께 적용합니다. 기저를 \((e_1\otimes f_1,e_1\otimes f_2,e_2\otimes f_1,e_2\otimes f_2)\)처럼 두 번째 인덱스가 먼저 변하도록 정하면, 행렬은

\[\begin{split} A\otimes B= \begin{pmatrix} a_{11}B&a_{12}B\\a_{21}B&a_{22}B \end{pmatrix} \end{split}\]

입니다. 이것이 2절의 블록 계산과 같은 규칙입니다. 다만 행렬 \(X\)를 선형사상으로 읽을 때 입력의 쌍대 인덱스가 먼저 오기 때문에 열 쌓기에서는 \(B^{\mathsf T}\otimes A\)가 나타납니다.

연속해서 두 쌍의 규칙을 적용하면

\[ (T\otimes S)(U\otimes R)(v\otimes w) =TUv\otimes SRw. \]

단순 텐서들이 전체를 생성하므로 \((T\otimes S)(U\otimes R)=TU\otimes SR\)입니다. 좌표로는

\[ (A\otimes B)(C\otimes D)=AC\otimes BD. \]

행렬 크기가 맞아야 하는 조건은 각 합성의 정의역·공역이 맞는다는 조건입니다. 인수의 순서를 임의로 바꾸는 법칙은 아닙니다.

7. 두 회귀식의 오차를 함께 기록하기#

관측 시점 \(t=1,2\)와 두 식 \(i=1,2\)를 생각합니다. 오차는 평균 0이고 다른 시점 사이 공분산은 0, 같은 시점의 공분산은

\[\begin{split} \Sigma=\begin{pmatrix}4&2\\2&3\end{pmatrix} \end{split}\]

라고 가정합니다. 성분 단위는 각각 표준화했고 공분산은 그 단위의 제곱 또는 곱으로 읽습니다. 식별로 묶어 \(u=(u_{11},u_{12},u_{21},u_{22})\)라고 기록하면

\[\begin{split} \operatorname{Cov}(u)=\Sigma\otimes I_2 =\begin{pmatrix} 4&0&2&0\\0&4&0&2\\2&0&3&0\\0&2&0&3 \end{pmatrix}. \end{split}\]

예를 들어 첫 행 셋째 열은 같은 시점의 서로 다른 식이므로 2이고, 첫 행 넷째 열은 다른 시점이므로 0입니다. 각 위치를 이렇게 확인하면 Kronecker 인수 순서를 기억에 의존하지 않아도 됩니다.

시점별로 \((u_{11},u_{21},u_{12},u_{22})\)라고 다시 기록하면 \(I_2\otimes\Sigma\)가 됩니다. 확률모형을 바꾼 것이 아니라 목록의 순서를 바꾼 것입니다. 이 예에서 사용하는 확률 사실은 평균과 공분산의 정의뿐이며, 분포가 정규라고 가정하지 않았습니다.

식별로 쌓은 오차 공분산 Sigma 텐서 I와 시점별로 쌓은 I 텐서 Sigma의 4행 4열 성분을 같은 색 눈금으로 비교합니다.

그림 44 같은 오차를 다른 순서로 기록하면 0과 2의 위치가 바뀝니다. 두 그림은 같은 색 범위와 숫자 표시를 사용합니다. 서로 다른 모형의 공분산을 비교하는 그림이 아닙니다.#

8. 대칭행렬에는 독립적인 미지수가 적다#

공분산처럼 대칭인 행렬은

\[\begin{split} S=\begin{pmatrix}a&b\\b&c\end{pmatrix} \end{split}\]

입니다. 전체 vec는 \((a,b,b,c)\)이지만 독립적인 숫자는 세 개입니다. 하삼각 부분을 열 순서로 쌓아 \(\operatorname{vech}S=(a,b,c)\)로 정합니다.

\[\begin{split} D=\begin{pmatrix}1&0&0\\0&1&0\\0&1&0\\0&0&1\end{pmatrix}, \quad L=\begin{pmatrix}1&0&0&0\\0&1&0&0\\0&0&0&1\end{pmatrix} \end{split}\]

이면 \(\operatorname{vec}S=D\operatorname{vech}S\), \(L\operatorname{vec}S=\operatorname{vech}S\), \(LD=I_3\)입니다. \(D\)는 비대각 원소를 복제하고 \(L\)은 하삼각 위치를 선택합니다.

그러나 \(L\)은 양쪽 비대각 값을 평균하지 않습니다. 임의의 \(X=\begin{pmatrix}a&c\\b&d\end{pmatrix}\)에서

\[ DL\operatorname{vec}X=(a,b,b,d) \]

입니다. 원래 위쪽 값 \(c\)를 버리고 아래쪽 값 \(b\)를 두 번 씁니다.

평균을 원한다면 다른 왼쪽 역을 써야 합니다.

\[\begin{split} D^+=(D^{\mathsf T}D)^{-1}D^{\mathsf T} =\begin{pmatrix} 1&0&0&0\\ 0&1/2&1/2&0\\ 0&0&0&1 \end{pmatrix}. \end{split}\]

여기서 \(D^{\mathsf T}D=\operatorname{diag}(1,2,1)\)입니다. 따라서

\[ DD^+\operatorname{vec}X =(a,(b+c)/2,(b+c)/2,d) =\operatorname{vec}\frac{X+X^{\mathsf T}}2. \]

둘 다 대칭행렬에서는 올바른 세 좌표를 돌려주지만 일반 행렬에서는 \(L\ne D^+\)입니다. \(1/2\)를 쓰는 이 구성은 표수가 2가 아닌 체에서 유효합니다. 일반적인 Moore–Penrose 역 이론은 내적 파트에서 다루고, 여기서는 표시한 곱과 왼쪽 역 성질만 사용합니다.

비대칭 행렬의 비대각 값 2와 6에서 하삼각 선택은 2를 복제하고 평균 방식은 4를 양쪽에 기록하는 차이를 보여줍니다.

그림 45 \(L\)은 정보를 선택하고 \(D^+\)는 서로 대응하는 두 정보를 평균합니다. 같은 대칭행렬 위에서 일치한다고 두 사상이 전체 행렬공간에서 같지는 않습니다.#

9. 이차식에서 비대각 계수가 두 배인 이유#

대칭행렬 \(S=\begin{pmatrix}a&b\\b&c\end{pmatrix}\)의 이차식은

\[ q(x)=x^{\mathsf T}Sx =x_1(ax_1+bx_2)+x_2(bx_1+cx_2) =ax_1^2+2bx_1x_2+cx_2^2. \]

따라서 독립 변수 \(b\)를 변화시키는 것은 행렬의 두 위치를 동시에 바꾸는 것입니다. 표수가 2이면 중간 항이 0이 되어 \(q\)만으로 \(b\)를 복원할 수 없습니다.

일반적인 대칭 쌍선형형식 \(b(u,v)\)와 그 이차식 \(q(v)=b(v,v)\) 사이에는, 표수가 2가 아닐 때

\[ b(u,v)=\frac{q(u+v)-q(u)-q(v)}2 \]

가 성립합니다. 분자는 \(b(u,u)+b(u,v)+b(v,u)+b(v,v)-b(u,u)-b(v,v)=2b(u,v)\)이기 때문입니다.

형식의 계수는 벡터가 아니라 입력을 평가하는 쌍대공간에 놓입니다. 따라서 이차형식과 대응하는 것은 대칭인 쌍대 텐서 \(\operatorname{Sym}^2(V^*)\)입니다. \(\operatorname{Sym}^2(V)\)와 구분 없이 동일시하려면 추가 구조가 필요합니다. 이 내용은 양정치성이나 길이를 가정하지 않는 대수적 대응입니다.

10. 복소수로 계산해도 실수 상태를 잃지 않기#

실수 공간 \(V\)의 복소화는 \(a+ib\) 형태로 두 실수 벡터를 기록하는 공간입니다. 복소수 \(\alpha+i\beta\)의 곱을

\[ (\alpha+i\beta)(a+ib) =(\alpha a-\beta b)+i(\beta a+\alpha b) \]

로 정의합니다. 실수 기저 \((e_1,\ldots,e_n)\)는 복소화에서도 복소 기저입니다. 계수 \(z_j=a_j+ib_j\)로 생성하며, \(\sum z_je_j=0\)이면 실수부·허수부의 독립성에서 모든 \(a_j,b_j=0\)이기 때문입니다.

따라서 복소 차원은 \(n\), 실수 차원은 \(2n\)입니다. 이는 \(V\otimes_{\mathbb R}\mathbb C\)의 구체 표현입니다. 텐서 \(v\otimes(\alpha+i\beta)\)\(\alpha v+i\beta v\)에 대응시키면 기저에서 동형임을 확인할 수 있습니다.

실수 행렬 \(T\)\(T_{\mathbb C}(a+ib)=Ta+iTb\)로 작용합니다. \(T_{\mathbb C}z=\lambda z\)이면 켤레를 취해 \(T_{\mathbb C}\bar z=\bar\lambda\bar z\)입니다. 비실수 고유벡터의 실수부·허수부가 실수 불변평면을 만든다는 A5의 계산이 이 구성 안에서 정당화됩니다. 실수 행렬의 원소를 바꾸는 것이 아니라 허용 스칼라를 넓힌 것입니다.

11. 작은 정확산술 검사와 큰 행렬의 비용#

from sympy import Matrix, eye, kronecker_product as kron
def vec(X):
    X=Matrix(X)
    return Matrix([X[i,j] for j in range(X.cols) for i in range(X.rows)])
A=Matrix([[1,2],[0,1]])
B=Matrix([[1,0],[3,1]])
X=Matrix([[1,2],[3,4]])
assert A*X*B==Matrix([[37,10],[15,4]])
assert vec(A*X*B)==kron(B.T,A)*vec(X)
wrong=Matrix(list(X))
assert kron(B.T,A)*wrong!=vec(A*X*B)
D=Matrix([[1,0,0],[0,1,0],[0,1,0],[0,0,1]])
L=Matrix([[1,0,0,0],[0,1,0,0],[0,0,0,1]])
Dp=(D.T*D).inv()*D.T
K=Matrix([[1,0,0,0],[0,0,1,0],[0,1,0,0],[0,0,0,1]])
assert L*D==Dp*D==eye(3) and L!=Dp
assert D*Dp==(eye(4)+K)/2
assert K*vec(X)==vec(X.T)
A=Matrix([[1,1],[0,2]])
B=Matrix.diag(3,4)
C=Matrix([[7,14],[15,24]])
assert A*X+X*B==C
assert (kron(eye(2),A)+kron(B.T,eye(2)))*vec(X)==vec(C)
print("vec 방향·Sylvester 식·대칭 모수 사전 검산 통과")
vec 방향·Sylvester 식·대칭 모수 사전 검산 통과

\(n\times n\)\(X\)를 펼치면 미지수가 \(n^2\)개이고 계수행렬은 \(n^2\times n^2\)입니다. 모든 원소를 8바이트로 저장하면 \(8n^4\)바이트가 필요합니다. \(n=100\)에서 약 8억 바이트, \(n=320\)에서 \(83\,886\,080\,000\)바이트입니다. 이것은 배열 원소만의 비용이며 추가 작업 공간은 포함하지 않았습니다.

반면 \(AXB\)를 순서대로 곱하면 각 곱에 대략 \(n^3\)개의 곱셈이 필요하고 원래 크기의 행렬로 계산할 수 있습니다. 따라서 vec 식은 유도와 판정에 유용하지만, 그 큰 계수행렬을 항상 실제로 만들어야 한다는 지시는 아닙니다. 이번 코드는 작은 정확산술 예제만 실행합니다.

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

문제 1 · 입력과 출력의 순서#

\(X=\begin{pmatrix}1&2&3\\4&5&6\end{pmatrix}\)의 vec와 전치의 vec를 구하세요.

풀이. 열을 차례로 쌓으면 \((1,4,2,5,3,6)\)입니다. 전치하면 첫 열이 \((1,2,3)\), 둘째 열이 \((4,5,6)\)이므로 \((1,2,3,4,5,6)\)입니다. 이 순서를 바꾸는 행렬이 \(K_{2,3}\)입니다.

문제 2 · 단순 텐서 여부#

계수표가 \(\begin{pmatrix}2&4\\3&6\end{pmatrix}\)인 텐서를 하나의 곱으로 쓰세요.

풀이. 둘째 열이 첫 열의 두 배이므로 \((2e_1+3e_2)\otimes(f_1+2f_2)\)입니다. 전개하면 계수가 차례로 \(2,4,3,6\)입니다.

문제 3 · 선택과 평균#

\(X=\begin{pmatrix}1&6\\2&3\end{pmatrix}\)에서 \(DL\operatorname{vec}X\)\(DD^+\operatorname{vec}X\)를 구하세요.

풀이. vec는 \((1,2,6,3)\)입니다. 선택은 \((1,2,2,3)\)이고 평균은 \((1,4,4,3)\)입니다. 두 결과 모두 대칭이지만 원래 정보를 처리한 규칙이 다릅니다.

문제 4 · Sylvester 식의 실패#

\(A=\operatorname{diag}(1,2)\), \(B=\operatorname{diag}(-1,3)\), \(C=\begin{pmatrix}0&8\\3&10\end{pmatrix}\)의 해를 모두 구하세요.

풀이. 네 식은 \(0a=0\), \(4b=8\), \(c=3\), \(5d=10\)입니다. 따라서 \(X=\begin{pmatrix}a&2\\3&2\end{pmatrix}\)이고 \(a\)는 임의입니다. 고윳값 합 0이 있다고 모든 우변에 해가 없는 것이 아니라, 모든 우변에 유일해를 준다는 성질이 실패합니다.

문제 5 · 표수 2의 정보 손실#

\(\mathbb F_2\)에서 \(S=\begin{pmatrix}0&1\\1&0\end{pmatrix}\)의 이차식을 구하세요.

풀이. \(x^{\mathsf T}Sx=2x_1x_2=0\)입니다. 그러나 쌍선형형식 \(u^{\mathsf T}Sv\)\(u=e_1,v=e_2\)에서 1입니다. 따라서 대각 값만 읽은 이차식으로 이 쌍선형형식을 복원할 수 없습니다.

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

앞에서는 성분표·행렬 방정식·대칭 모수에서 필요한 계산을 수행했습니다. 이제 같은 내용을 텐서곱의 정의와 정리로 옮깁니다. 공간은 모두 유한차원이고 기저는 유한 목록입니다.

13.1 텐서곱의 존재와 보편성질#

정의 17 (텐서곱)

쌍선형사상 \(\tau:V\times W\to Z\)가 다음 성질을 가지면 \((Z,\tau)\)를 텐서곱이라 합니다. 임의의 쌍선형 \(\beta:V\times W\to U\)에 대해 \(\beta(v,w)=\widetilde\beta(\tau(v,w))\)인 선형사상 \(\widetilde\beta:Z\to U\)가 유일하게 존재합니다. \(\tau(v,w)\)\(v\otimes w\), \(Z\)\(V\otimes W\)라고 씁니다.

존재 증명. \(V,W\)의 기저를 \((e_i)_{i=1}^m\), \((f_j)_{j=1}^n\)으로 고릅니다. \(mn\)개 기호 \(E_{ij}\)를 기저로 갖는 좌표공간 \(Z\)를 만들고

\[ \tau\left(\sum_i x_ie_i,\sum_j y_jf_j\right) =\sum_{i,j}x_iy_jE_{ij} \]

로 정의합니다. 좌표 표현이 유일하고 성분곱이 각 입력에 선형이므로 잘 정의된 쌍선형사상입니다.

쌍선형 \(\beta\)가 주어지면 \(\widetilde\beta(E_{ij})=\beta(e_i,f_j)\)로 정하고 선형 확장합니다. 그러면

\[ \widetilde\beta(\tau(v,w)) =\sum_{i,j}x_iy_j\beta(e_i,f_j) =\beta\left(\sum_i x_ie_i,\sum_j y_jf_j\right) =\beta(v,w). \]

또한 \(E_{ij}=\tau(e_i,f_j)\)이므로 이러한 선형사상은 모든 기저에서 값이 정해져 유일합니다. 이로써 존재와 \(\dim(V\otimes W)=mn\)을 함께 증명했습니다.

유일성 증명. 보편성질을 만족하는 두 쌍 사이에는 기본 곱을 보존하는 선형사상 \(F:Z\to Z'\), \(G:Z'\to Z\)가 각각 유일하게 존재합니다. \(GF\)\(I_Z\)는 모든 \(\tau(v,w)\)에서 같으므로 보편성질의 유일성에 의해 같습니다. 마찬가지로 \(FG=I_{Z'}\)입니다. 따라서 기저를 사용해 구성했어도 결과는 기본 곱을 보존하는 유일한 동형까지 기저와 무관합니다.

13.2 사상공간과 계수 1 분해#

정리 61 (텐서와 선형사상의 대응)

\(\Phi:V^*\otimes W\to L(V,W)\), \(\Phi(\varphi\otimes w)(v)=\varphi(v)w\)는 선형동형입니다. 사상의 계수는 이를 단순 텐서의 합으로 표현하는 데 필요한 최소 항 수와 같습니다.

증명. 오른쪽은 \(\varphi,w\)에 관해 쌍선형이므로 보편성질로 \(\Phi\)가 존재합니다. 쌍대기저 \(\varepsilon_i\)\(W\)의 기저 \(f_j\)를 사용하면 \(\Phi(\varepsilon_i\otimes f_j)\)\(e_i\)\(f_j\)로 보내고 다른 기저벡터는 0으로 보내는 사상입니다. A1의 사상공간 기저와 일치하므로 \(\Phi\)는 기저를 기저로 보내는 동형입니다.

\(r\)개의 단순 텐서 합이 주어지면 그 상은 해당 \(r\)개 출력벡터의 생성공간 안에 있으므로 계수는 \(r\) 이하입니다. 역으로 \(T\)의 상 기저를 \(w_1,\ldots,w_r\)로 고르면 \(Tv=\sum_{j=1}^r\varphi_j(v)w_j\)로 유일하게 표현됩니다. \(T\)의 선형성과 좌표의 유일성에 의해 각 \(\varphi_j\)가 선형이므로 \(r\)개 단순 텐서로 표현됩니다. 따라서 최소 항 수는 정확히 계수입니다. \(\square\)

13.3 vec 항등식의 모든 인덱스#

\(A\)\(p\times m\), \(X\)\(m\times n\), \(B\)\(n\times q\)일 때

\[ (AXB)_{ij}=\sum_{k=1}^m\sum_{\ell=1}^n A_{ik}X_{k\ell}B_{\ell j}. \]

열 쌓기에서 출력 \((i,j)\)의 위치는 \(i+p(j-1)\), 입력 \((k,\ell)\)의 위치는 \(k+m(\ell-1)\)입니다. 따라서 계수는 \(A_{ik}B_{\ell j}\)입니다. Kronecker 곱 \(B^{\mathsf T}\otimes A\)의 같은 위치도 \((B^{\mathsf T})_{j\ell}A_{ik}=B_{\ell j}A_{ik}\)이므로 모든 성분이 일치합니다.

크기도 \((pq)\times(mn)\)으로 맞습니다. \(B=I\)\(A=I\)를 각각 넣으면 왼쪽 작용·오른쪽 작용의 vec 식을 얻습니다. 두 식을 더하면 Sylvester 계수행렬이 됩니다.

13.4 Kronecker 스펙트럼과 Sylvester 가해성#

복소 정사각행렬 \(A,B\)를 A6의 정리 52에 의해 각각 상삼각화합니다. \(P^{-1}AP=U\), \(Q^{-1}BQ=V\)이면 혼합곱으로

\[ (P\otimes Q)^{-1}(A\otimes B)(P\otimes Q)=U\otimes V. \]

역행렬은 \(P^{-1}\otimes Q^{-1}\)입니다. 이 Kronecker 곱은 상삼각이고 대각은 \(u_{ii}v_{jj}\)입니다. 따라서 고윳값의 집합은 모든 곱 \(\lambda_i\mu_j\)입니다. 고유벡터 \(x,y\)가 주어지면 \(x\otimes y\)도 실제로 곱 고윳값의 고유벡터이지만, 원래 행렬이 대각화되지 않으면 이런 벡터들만으로 전체 기저를 만들 수 있다고 말할 수 없습니다.

같은 기저변환으로 \(A\otimes I+I\otimes B\)의 대각은 \(\lambda_i+\mu_j\)입니다. Sylvester 식에서는 \(I\otimes A+B^{\mathsf T}\otimes I\)가 나타납니다. 전치는 \(\operatorname{rank}(B-\mu I)\)를 바꾸지 않으므로 A3의 행계수=열계수 정리에 의해 \(B^{\mathsf T}\)\(B\)의 고윳값 집합이 같습니다.

따라서 이 계수행렬이 가역일 필요충분조건은 모든 \(\lambda_i+\mu_j\ne0\), 즉 \(\operatorname{spec}(A)\cap\operatorname{spec}(-B)=\varnothing\)입니다. 가역이면 모든 \(C\)에 유일해가 있고, 가역이 아니면 선형사상은 단사도 전사도 아니므로 그 성질이 실패합니다. 실수 행렬에서는 복소수로 이 조건을 검사할 수 있습니다. 가역인 실수 선형계의 해는 실수 소거법으로 실수이며, 복소 동차해가 있으면 실수부·허수부 중 하나가 실수 동차해를 주므로 실수 가역성과 복소 가역성도 같습니다.

대각합은 성분별로 \(\operatorname{tr}(A\otimes B)=\sum_{i,j}a_{ii}b_{jj}=\operatorname{tr}A\,\operatorname{tr}B\)입니다. 행렬식 항등식은 행렬식을 정의하는 C5에서 증명합니다.

13.5 교환·복제·제거의 일반 구성#

\(K_{m,n}\)\(m\times n\) 행렬의 위치 \(i+m(j-1)\)를 전치 위치 \(j+n(i-1)\)로 옮기는 치환행렬입니다. 두 번 전치하면 원래 위치이므로 \(K_{n,m}K_{m,n}=I\)입니다. 치환행렬의 열은 표준기저의 재배열이므로 역은 전치입니다.

\(n\times n\) 대칭행렬에서 하삼각 위치 \((i,j)\), \(i\ge j\)를 열 우선으로 나열합니다. \(D_n\)의 해당 열에는 \((i,j)\) 위치에 1을, \(i>j\)이면 \((j,i)\)에도 1을 넣습니다. \(L_n\)의 해당 행은 \((i,j)\)만 고릅니다. 그러면 정의대로 \(L_nD_n=I\)입니다.

서로 다른 \(D_n\)의 열은 지지가 겹치지 않습니다. 따라서 \(D_n^{\mathsf T}D_n\)은 대각행렬이고 대각 위치에 대응하면 1, 비대각 위치면 2입니다. 표수가 2가 아니면 가역이고 \(D_n^+=(D_n^{\mathsf T}D_n)^{-1}D_n^{\mathsf T}\)가 왼쪽 역입니다.

\(D_nD_n^+\)는 대각 원소를 그대로 두고 \((i,j),(j,i)\)를 평균합니다. 이는 \(\tfrac12(I+K_{n,n})\)의 성분별 작용과 같으므로 두 행렬이 같습니다. 사영성은 \((D_nD_n^+)^2=D_n(D_n^+D_n)D_n^+=D_nD_n^+\)에서 얻습니다. \(D_nL_n\)도 사영이지만 평균 사영과 다른 사영입니다.

13.6 대칭 텐서의 정확한 의미#

\(V^*\otimes V^*\)에서 인수를 교환하는 사상 \(\tau(\varphi\otimes\psi)=\psi\otimes\varphi\)를 정의합니다. 이 장에서 \(\operatorname{Sym}^2(V^*)\)는 이 사상에 고정되는 텐서들의 공간을 뜻합니다. 텐서 \(\sum c_{ij}\varepsilon_i\otimes\varepsilon_j\)는 쌍선형형식 \(\sum c_{ij}\varepsilon_i(u)\varepsilon_j(v)\)와 대응하고, 고정 조건은 \(c_{ij}=c_{ji}\)입니다.

따라서 기저는 대각 텐서 \(\varepsilon_i\otimes\varepsilon_i\)\(i<j\)에 대한 \(\varepsilon_i\otimes\varepsilon_j+\varepsilon_j\otimes\varepsilon_i\)입니다. 계수표의 각 독립 위치를 하나씩 정하므로 생성과 독립이 성립하며 차원은 \(n(n+1)/2\)입니다. 표수가 2가 아닐 때 9절의 분극 계산이 이 공간과 이차형식의 대응을 줍니다.

실제 계산의 질문

수학적 표현

두 목록의 모든 성분곱을 기록

텐서곱의 쌍선형성

행렬을 열 순서로 하나의 목록에 기록

vec

양쪽 변환의 모든 성분 계수

\(B^{\mathsf T}\otimes A\)

좌우 작용의 합이 가역일 조건

Sylvester 스펙트럼 조건

대칭 원소를 선택하거나 평균

\(L_n\)\(D_n^+\)의 구분

실수 두 성분을 복소 계수로 기록

복소화

텐서곱은 두 입력에 관한 선형성을 하나의 선형사상으로 다루게 해 줍니다. 다음 장에서는 여러 벡터를 함께 기록하면서 중복 방향을 없애는 교대성과 쐐기곱을 살펴봅니다. C4로 이어 읽기.