H3 · 함께 변하는 관측에서 직교하는 성분으로: 스펙트럼 정리#
1. 두 관측을 더하고 빼면 무엇이 달라질까?#
두 자산의 수익률에서 각각의 평균을 뺀 값을 \(X_1,X_2\)라고 하겠습니다. 두 값은 같은 수익률 단위로 측정하고, 그 단위로 나눈 무차원 수를 사용합니다. 평균은 0이고 이차 모멘트는 유한하다고 가정합니다. 이번 수업의 자료 요약은 다음 세 수입니다.
첫째와 둘째 관측의 분산은 같습니다. 그러나 두 관측은 무상관이 아닙니다. 공분산이 1이므로 함께 증가하는 경향이 이차 모멘트에 남아 있습니다. 이 정보를 행렬로 적으면
입니다. 여기서 행렬을 대각화하라는 계산 문제부터 시작하지 않겠습니다. 먼저 질문을 바꿔 보겠습니다. 관측의 합과 차를 새 관측으로 사용하면, 두 관측 사이의 공분산이 없어질까요?
합과 차를 그냥 쓰지 않고 \(\sqrt2\)로 나눕니다.
이 나눗셈은 임의의 장식이 아닙니다. 계수 벡터 \((1,1)\)과 \((1,-1)\)의 길이는 모두 \(\sqrt2\)입니다. 나누고 나면 두 계수 벡터의 길이가 1이므로 새 방향의 크기를 공정하게 비교할 수 있습니다.
기댓값의 선형성을 써서 각 값을 계산합시다. 두 새 관측의 평균은 0이므로 분산은 제곱의 기댓값입니다.
공분산도 생략하지 않고 곱부터 전개합니다.
따라서 공통으로 움직이는 성분의 분산은 3, 서로 반대로 움직이는 성분의 분산은 1이고 두 성분은 무상관입니다. 이 계산만으로 독립이라고 말할 수는 없습니다. 독립은 곱으로 된 이차 모멘트 하나보다 훨씬 많은 조건을 요구합니다. 뒤의 연습에서 무상관이지만 독립이 아닌 두 변수를 직접 만들겠습니다.
기초 확률에서 사용하는 기댓값의 선형성과 분산의 정의는 이 장의 출발 전제입니다. 특정 정규분포나 표본의 크기는 가정하지 않았습니다.
2. 관측의 계산을 행렬의 계산으로 다시 확인하기#
앞에서 사용한 계수를 열벡터로 모읍시다.
두 열의 내적은 \((1-1)/2=0\)이고 각 열의 길이 제곱은 \((1+1)/2=1\)입니다. 따라서
이것이 이 좌표 변경이 길이를 보존한다는 계산입니다. 실제 수 \(x_1,x_2\)에 대해서도
입니다. 단순히 가역인 좌표 변경보다 조건이 강합니다. 기저를 바꾸면서 길이와 각도를 함께 보존합니다.
이번에는 \(\Sigma\)를 각 열에 곱합니다.
두 방향은 \(\Sigma\)를 적용해도 방향이 바뀌지 않습니다. 첫 방향의 배율은 3, 둘째 방향의 배율은 1입니다. 고유벡터 계산과 관측의 분산 계산에서 같은 수가 나온 이유를 행렬곱으로 확인합니다.
\(Y=Q^\top X\)의 공분산이 바로 이 행렬입니다. 성분으로 쓰면 \(Y_i=\sum_jQ_{ji}X_j\)이므로
이제 길이 1인 임의의 계수 \(u=aq_++bq_-\)를 택해 봅시다. 직교성 때문에 \(\|u\|^2=a^2+b^2=1\)입니다. 새로운 관측 \(u^\top X=aY_++bY_-\)의 분산은
\(0\le a^2\le1\)이므로 분산은 1 이상 3 이하입니다. 가장 큰 분산은 \(u=\pm q_+\)에서 얻습니다. 여기서 제한은 계수의 유클리드 길이 1입니다. 실제 투자 예산 제한인 \(u_1+u_2=1\)과 같지 않습니다. 따라서 이 결과를 예산 제한 포트폴리오의 최적해라고 해석하면 안 됩니다.
그림 67 왼쪽은 \(x^\top\Sigma^{-1}x=1\)의 타원이고 오른쪽은 같은 점을 \(y=Q^\top x\)로 표시한 것입니다. 반축 길이는 \(\sqrt3,1\)입니다. 확률분포를 지정하지 않았으므로 이 선을 확률 등밀도선이나 신뢰영역이라고 부르지 않습니다. 여기서는 이차 모멘트 행렬의 방향과 크기만 시각화합니다.#
3. 벡터 전체를 바꾸지 않고 방향별 부분을 꺼내기#
\(z=(2,0)^\top\)를 두 방향으로 분해해 보겠습니다. 각 방향의 계수는 내적입니다.
그 계수에 방향 벡터를 곱하면
두 벡터를 더하면 원래 \(z\)가 돌아옵니다. 이 연산을 모든 \(z\)에 한꺼번에 적용하는 행렬이 사영입니다.
직접 곱하면 \(P_+^2=P_+\), \(P_-^2=P_-\)이고
따라서 \(\Sigma\)는 각 성분을 꺼낸 뒤 그 성분에 배율을 곱하는 연산입니다.
예를 들어
사영 사이의 곱이 0이므로 제곱에서도 섞인 항이 사라집니다.
같은 계산을 반복하면 정수 \(k\ge0\)에 대해 \(\Sigma^k=3^kP_++P_-\)입니다. 역행렬 역시 추측 후 곱으로 검증할 수 있습니다.
고유벡터의 부호를 바꿔도 \((-q)(-q)^\top=qq^\top\)입니다. 방향의 표현은 바뀌지만 사영은 바뀌지 않습니다. 이 구별은 고윳값이 중복될 때 더욱 중요해집니다.
4. 같은 좌표가 두 질점의 진동도 분리한다#
이번에는 확률변수가 아니라 실제 변위를 다룹니다. 질량이 같은 두 질점 \(m>0\)을 일직선 위에 놓고, 양쪽 고정벽과 두 질점 사이에 같은 용수철 상수 \(\kappa>0\)인 용수철 세 개를 연결합니다. 마찰은 없고 변위가 작아 Hooke 법칙이 성립한다고 가정합니다. 평형 위치에서의 변위를 \(x_1,x_2\)라고 합시다.
세 용수철의 길이 변화는 각각 \(x_1,x_2-x_1,-x_2\)입니다. 따라서 위치에너지는
힘은 위치에너지의 음의 미분입니다. 이 물리 법칙을 출발 전제로 쓰면
변위 단위 \(\ell>0\)를 골라 \(z=x/\ell\)로 놓고, 무차원 시간 \(\tau=t\sqrt{\kappa/m}\)를 씁니다. 연쇄법칙에 의해 \(\ddot x=\ell(\kappa/m)z''\)이므로 위 식은
이 됩니다. 여기서 프라임은 \(\tau\) 미분입니다. 실제 각진동수는 무차원 각진동수에 \(\sqrt{\kappa/m}\)를 곱한 값입니다.
행렬 \(K\)와 앞의 \(\Sigma\)는 \(K=4I-\Sigma\)라는 관계를 가집니다. 그러므로
직접 성분을 곱해도 \((2-1,-1+2)^\top/\sqrt2=q_+\), \((2+1,-1-2)^\top/\sqrt2=3q_-\)입니다. 이제 \(\eta=Q^\top z\)를 대입합니다. \(Q\)는 시간에 무관하므로 \(\eta''=Q^\top z''\)이고 \(z=Q\eta\)입니다.
한 질점의 식에 다른 질점이 들어 있던 문제가 다음 두 식으로 분리되었습니다.
처음에 첫 질점만 한 단위 움직이고 둘 다 정지시켰다고 합시다. \(z(0)=(1,0)^\top\), \(z'(0)=0\)이므로 \(\eta_+(0)=\eta_-(0)=1/\sqrt2\)이고 두 초기속도는 0입니다. 코사인을 두 번 미분해 확인하면
가 각 식과 초기조건을 만족합니다. 원래 변위로 돌아오면
이 해가 유일하다는 점도 확인할 수 있습니다. 같은 초기조건을 만족하는 두 해의 차를 \(d\)라고 하면 \(d''+Kd=0\), \(d(0)=d'(0)=0\)입니다. 그 차의 에너지
를 미분하면 대칭성 때문에
초기 에너지는 0이고 \(d^\top Kd=d_1^2+(d_2-d_1)^2+d_2^2\)는 음수가 아닙니다. 따라서 모든 시각에 \(d_1=d_2=0\)입니다. 여기서는 이미 두 번 미분 가능한 해 사이의 유일성을 보였고, 해의 존재는 위의 명시적 식이 제공합니다.
그림 68 같은 시간축에서 분리 좌표와 실제 변위를 비교합니다. 두 질점이 각각 하나의 주파수로 움직이는 것이 아니라, 각 질점의 변위에 두 주파수가 함께 들어갑니다. 직교 좌표를 쓰면 운동에너지도 \(\|z'\|^2=\|\eta'\|^2\)로 보존됩니다.#
공분산의 큰 고윳값은 큰 분산을 뜻했지만, 이 물리 모형에서 \(K\)의 큰 고윳값은 큰 각진동수의 제곱을 뜻합니다. 같은 선형대수라도 행렬이 어떤 물리량을 표현하는지 먼저 확인해야 합니다.
5. 모든 고유기저가 길이를 보존하는 것은 아니다#
앞에서는 대칭행렬을 다루었습니다. 고윳값이 존재하고 대각화가 가능하기만 하면 같은 일이 성립할까요? 다음 행렬을 계산해 봅시다.
\(Ae_1=e_1\)이고 \(A(1,1)^\top=2(1,1)^\top\)이므로 고유기저가 있습니다. 그러나 두 고유방향의 내적은 1입니다. 고유공간이 각각 일차원이므로 길이를 조절해도 두 방향을 직교하게 만들 수 없습니다.
문제는 단순한 비대칭성만으로 끝나지 않습니다. 회전행렬
도 비대칭이지만 길이를 정확히 보존합니다. 대신 실수 고유벡터가 없습니다. \(R(x,y)^\top=\lambda(x,y)^\top\)이면 \(-y=\lambda x\), \(x=\lambda y\)이므로 \(x=-\lambda^2x\)입니다. 실수 \(\lambda\)에서는 \(x=0\), 이어서 \(y=0\)뿐입니다.
실수에서는 회전을 이차원 블록으로 남겨야 합니다. 복소수에서는 \((1,-i)^\top/\sqrt2\)가 고윳값 \(i\)의 고유벡터이고 \((1,i)^\top/\sqrt2\)가 고윳값 \(-i\)의 고유벡터입니다. 두 벡터는 복소 내적에서 직교합니다.
H2의 수반을 이용하면 대칭행렬과 회전을 같은 조건으로 묶을 수 있습니다. 표준 내적에서 \(A^*=A^H\)이고, 정규성은 \(A^*A=AA^*\)입니다. 실수에서는 \(H\)가 전치 \(\top\)로 바뀝니다.
위의 \(A\)는
이므로 정규가 아닙니다. 반면 \(R^\top R=RR^\top=I\)입니다. 이 장의 일반적인 결론은 복소 유한차원 내적공간에서 정규일 때, 그리고 그때에만 정규직교 고유기저가 존재한다는 것입니다.
이 조건은 내적에 관한 조건입니다. 예를 들어 위의 \(A\)에 대해
는 양의 내적을 정합니다. 직접 곱하면
따라서 이 다른 내적에서는 \(A\)가 자기수반입니다. 원래 유클리드 내적에서 정규라는 결론은 나오지 않습니다.
6. 같은 고윳값인데 초기 충격의 크기가 다른 이유#
무차원 이산 상태 \(s_k\in\mathbb R^2\)를 생각합시다. 두 전이행렬을 비교합니다.
둘 다 특성다항식이 \(t^2-t+1/2\)입니다. \(F\)에서는 \((t-1)t+1/2\), \(M\)에서는 \((t-1/2)^2+1/4\)로 계산됩니다. 근은 \((1+i)/2,(1-i)/2\)이고 절댓값은 \(\rho=1/\sqrt2<1\)입니다.
그러나 같은 초기상태 \(e_1\)에 대한 첫 반응은
입니다. 그 길이는 각각 \(\sqrt2\)와 \(1/\sqrt2\)입니다. 둘 다 장기적으로 감쇠할 수 있어도 첫 한 기간에 줄어드는지는 다릅니다.
\(M=\rho R_{\pi/4}\)이므로 \(M^k=\rho^kR_{k\pi/4}\)이고 \(\|M^ke_1\|=\rho^k\)입니다. 한편 \(F\)의 상태를 \((y_k,y_{k-1})^\top\)로 적으면
순서대로 \(y_1=1\), \(y_2=1/2\), \(y_3=0\), \(y_4=-1/4\)입니다. 더 일반적으로
입니다. 이 식은 실수부와 허수부를 합한 \((\rho e^{i\pi/4})^k\)의 표현입니다. \(r^2-r+1/2=0\)에 \(r^{k-1}\)을 곱하면 \(r^{k+1}=r^k-\frac12r^{k-1}\)이므로 실수부와 허수부 각각이 재귀를 만족합니다. 초기값도 \(k=0,-1\)을 넣어 확인됩니다. 두 초기값이 다음 값을 결정하므로 이 식은 모든 \(k\ge0\)의 재귀해입니다.
그림 69 고윳값의 절댓값만으로 비정규 행렬의 모든 유한 시점 증폭을 읽을 수 없습니다. 이 그림은 지정한 초기벡터의 반응이지, 모든 초기벡터에 대한 최대 증폭 그래프가 아닙니다.#
계산으로 비정규성을 확인하면
입니다. 두 행렬이 다르므로 \(F\)는 정규가 아닙니다.
이 차이는 Schur 분해에서도 드러납니다. 모든 복소 행렬은 정규직교기저에서 상삼각행렬이 됩니다. 대각에는 고윳값이 있고, 대각 위에는 0이 아닐 수도 있는 성분이 남습니다. 정규일 때는 그 성분이 모두 0입니다. 아래 마지막 절에서 이 명제를 증명한 뒤 다음 식도 도출하겠습니다.
고윳값은 대수적 중복도를 포함해 셉니다. 이번 예에서는 \(\|F\|_F^2=1+1/4+1=9/4\), \(\sum|\lambda_j|^2=1\)이므로 \(d(F)=\sqrt5/2\)입니다. \(M\)에서는 \(d(M)=0\)입니다.
수반과의 교환자 크기 \(\nu(A)=\|A^*A-AA^*\|_F\)도 정규일 때 0이지만 같은 양은 아닙니다. 스칼라 \(c\)에 대해 \(d(cA)=|c|d(A)\), \(\nu(cA)=|c|^2\nu(A)\)입니다. 그러므로 두 수가 모든 행렬에 대해 고정된 비율로 같다고 주장할 수 없습니다.
7. 고윳값이 겹쳐도 방향별 부분은 정해진다#
세 관측이 공통 성분을 공유하는 경우를 계산합시다. 모든 성분이 1인 \(3\times3\) 행렬을 \(J\)라고 쓰고
로 둡니다. \(Jx=(x_1+x_2+x_3)(1,1,1)^\top\)입니다. 따라서 공통 방향 \(q_0=(1,1,1)^\top/\sqrt3\)에서는 \(Sq_0=4q_0\)입니다. 성분 합이 0인 평면에서는 \(Jx=0\)이므로 \(Sx=x\)입니다.
그 평면의 기저로
를 쓸 수 있습니다. 길이는 각각 1이고 \(u^\top v=(1-1)/\sqrt{12}=0\)입니다. 이 두 벡터를 평면 안에서 직교 회전시켜도 여전히 고윳값 1의 정규직교기저입니다. 개별 벡터는 유일하지 않습니다.
하지만 공통 성분을 꺼내는 사영과 나머지 사영은
로 정해집니다. \(J^2=3J\)인 이유는 곱의 각 성분이 \(1+1+1=3\)이기 때문입니다. 이 식으로 \(P_4^2=P_4\), \(P_1^2=P_1\), \(P_4P_1=0\)을 확인할 수 있습니다. 예를 들어
따라서
두 행렬을 곱하면 \((I+J)(I-J/4)=I+3J/4-J^2/4=I\)입니다.
서로 다른 연산자가 같은 고유방향을 쓸 조건도 이 예에서 볼 수 있습니다. \(S\)와 가환하는 행렬 \(B\)라면 \(S(Bx)=B(Sx)\)입니다. \(Sx=\lambda x\)일 때 우변은 \(\lambda Bx\)이므로 \(Bx\)는 같은 고유공간 안에 있습니다. 가환성은 고유공간을 보존한다는 계산입니다.
다만 그 안에서 다시 정규직교 고유기저를 고르려면 \(B\)도 정규여야 합니다. \(S=I\)라면 모든 \(B\)와 가환하지만, §5의 비정규 \(A\)는 직교대각화되지 않습니다. “가환하면 동시 직교대각화된다”에는 정규성이라는 가정이 빠져 있습니다.
8. 손계산을 실행 코드로 확인하기#
아래 계산은 존재정리의 증명이 아닙니다. 앞에서 구한 행렬·사영·반응을 검산합니다. 고유벡터는 부호나 중복 고유공간 안의 기저 선택에 따라 달라지므로 라이브러리의 고유벡터 배열과 우리가 쓴 배열이 성분별로 같아야 한다고 검사하지 않습니다.
이 코드는 이차원 Schur 형식을 직접 구성합니다. 단위 고유벡터 \(v=(v_1,v_2)^\top\)를 구한 뒤 \(w=(-\bar v_2,\bar v_1)^\top\)로 놓으면 \(v^Hw=-\bar v_1\bar v_2+\bar v_2\bar v_1=0\)이고 \(\|w\|^2=|v_2|^2+|v_1|^2=1\)입니다. 따라서 \(U=(v,w)\)는 유니터리입니다. \(Av=\lambda v\)이므로 \((U^HAU)_{21}=w^HAv=\lambda w^Hv=0\)입니다. 이것이 아래에서 검사하는 상삼각성입니다.
import numpy as np
Sigma = np.array([[2., 1.], [1., 2.]])
Q = np.array([[1., 1.], [1., -1.]]) / np.sqrt(2)
Pp, Pm = np.outer(Q[:, 0], Q[:, 0]), np.outer(Q[:, 1], Q[:, 1])
assert np.allclose(Q.T @ Q, np.eye(2))
assert np.allclose(Q.T @ Sigma @ Q, np.diag([3., 1.]))
assert np.allclose(Sigma, 3 * Pp + Pm)
assert np.allclose(Pp @ Pm, 0)
K = 4 * np.eye(2) - Sigma
assert np.allclose(Q.T @ K @ Q, np.diag([1., 3.]))
F = np.array([[1., -.5], [1., 0.]])
M = np.array([[.5, -.5], [.5, .5]])
for A in (F, M):
# 이차원 Schur 구성: 단위 고유벡터 하나와 그 직교 여벡터.
_, vectors = np.linalg.eig(A.astype(complex))
v = vectors[:, 0] / np.linalg.norm(vectors[:, 0])
w = np.array([-v[1].conjugate(), v[0].conjugate()])
U = np.column_stack((v, w))
R = U.conj().T @ A @ U
assert np.isclose(R[1, 0], 0)
assert np.allclose(A, U @ R @ U.conj().T)
assert np.allclose(U.conj().T @ U, np.eye(2))
upper2 = np.linalg.norm(np.triu(R, 1), 'fro') ** 2
difference = np.linalg.norm(A, 'fro') ** 2 - np.sum(np.abs(np.diag(R)) ** 2)
assert np.isclose(upper2, difference)
assert np.isclose(np.linalg.norm(F[:, 0]), np.sqrt(2))
assert np.isclose(np.linalg.norm(M[:, 0]), 1 / np.sqrt(2))
J = np.ones((3, 3))
assert np.allclose((np.eye(3) + J) @ (np.eye(3) - J / 4), np.eye(3))
print('공분산·사영·진동 좌표·Schur 분해·반응·역행렬 검산 완료')
공분산·사영·진동 좌표·Schur 분해·반응·역행렬 검산 완료
부동소수점 계산에서는 이론상 0인 \(d(A)^2\)의 차감식이 아주 작은 음수로 나올 수 있습니다. 그림이나 보고용 제곱근에는 반올림오차 범위를 확인한 뒤 0으로 자를 수 있지만, 큰 음수를 무조건 0으로 바꾸면 구현 오류를 숨깁니다. 위 코드는 제곱근을 취하지 않고 두 제곱량을 비교합니다. 또한 Schur 분해의 존재 증명과 이를 안정적으로 계산하는 QR 알고리즘의 분석은 서로 다른 일입니다. 후자의 수렴·오차 분석을 이 코드로 증명한 것은 아닙니다.
9. 직접 적어 보는 연습과 전체 풀이#
연습 1. 분산이 가장 작은 방향과 예산 제한#
§2의 길이 제한 \(\|u\|=1\)에서 분산의 최솟값과 모든 최소 방향을 구하세요. 이어 실제 예산 제한 \(u_1+u_2=1\)에서 같은 공분산 행렬의 최소 분산을 구하고 비교하세요. 공매도 제한은 따로 두지 않습니다.
풀이. \(u=aq_++bq_-\)이면 분산은 \(1+2a^2\)입니다. 최솟값 1은 \(a=0\), \(b=\pm1\)일 때 얻습니다. 따라서 \(u=\pm q_-\)입니다.
예산 제한에서는 \(u=(t,1-t)^\top\)이고 \(t\in\mathbb R\)입니다. 분산을 성분별로 쓰면
최솟값은 \(3/2\)이고 \(u=(1/2,1/2)^\top\)에서 얻습니다. 서로 다른 제약의 결과가 다르다는 사실은 모순이 아닙니다. \(q_-\)는 성분 합이 0이라 예산 제한을 만족하지 않습니다.
연습 2. 무상관과 독립을 분리하기#
\(Z\)가 \(-1,0,1\)을 각각 확률 \(1/3\)으로 취합니다. \(U=Z\), \(V=Z^2-2/3\)에 대해 평균과 공분산을 구하고 독립 여부를 판정하세요.
풀이. \(E[Z]=0\), \(E[Z^2]=2/3\), \(E[Z^3]=0\)입니다. 따라서 \(E[U]=E[V]=0\)이고
하지만 \(U=0\)이면 반드시 \(V=-2/3\)입니다. 결합확률 \(P(U=0,V=-2/3)=1/3\)인 반면 주변확률의 곱은 \((1/3)(1/3)=1/9\)입니다. 두 값이 다르므로 독립이 아닙니다.
연습 3. 중복 고윳값에서 사영과 제곱근#
§7의 \(S=I+J\)에 대해 \(x=(3,0,0)^\top\)의 두 고유공간 성분을 구하세요. 이어 \(B=I+J/3\)이 \(B^2=S\)를 만족하고 \(x\ne0\)에 대해 \(x^\top Bx>0\)임을 확인하세요.
풀이. 성분 합은 3이므로 \(P_4x=(1,1,1)^\top\), \(P_1x=(2,-1,-1)^\top\)입니다. 내적은 \(2-1-1=0\)이고 합은 \(x\)입니다.
또한
입니다. 첫 항이 \(x\ne0\)에서 양수이기 때문입니다. 이 문제는 특정 행렬의 양의 제곱근을 직접 확인합니다. 모든 양의 행렬에 대한 존재·유일성은 다음 H4에서 다룰 대상입니다.
연습 4. “고윳값만 같으면 유니터리 닮음이다”의 오류#
§5의 \(A\)와 \(D=\operatorname{diag}(1,2)\)는 고윳값이 같습니다. \(A=UDU^*\)인 유니터리 \(U\)가 있을 수 없음을 Frobenius 노름으로 보이세요.
풀이. 마지막 절에서 증명하는 유니터리 불변성에 의해 그런 \(U\)가 있으면 \(\|A\|_F^2=\|D\|_F^2\)여야 합니다. 그런데
따라서 불가능합니다. 일반 가역행렬에 의한 닮음과 유니터리 닮음은 구별해야 합니다.
연습 5. 공통 방향을 가진 두 연산자#
§7의 \(S\)와 \(B=\operatorname{diag}(2,2,3)\)는 동시에 직교대각화될까요? 이어 \(C=2I-J\)에 대해서도 판정하고 공통 기저에서 대각성분을 구하세요.
풀이. 대각행렬 \(B\)와의 곱에서는 \((SB)_{ij}=S_{ij}B_{jj}\)이고 \((BS)_{ij}=B_{ii}S_{ij}\)입니다. 특히 \((SB)_{13}=3\), \((BS)_{13}=2\)이므로 가환하지 않습니다. 동시 대각화된다면 같은 기저에서 대각행렬끼리 가환하고 원래 좌표에서도 가환해야 하므로 불가능합니다.
반면 \(S\)와 \(C\)는 모두 \(J\)의 다항식이므로 가환합니다. 직접 계산해도
이고 반대 순서도 같습니다. 정규직교기저 \((q_0,u,v)\)에서 \(J\)의 배율은 \((3,0,0)\)입니다. 따라서 \(S\)의 대각성분은 \((4,1,1)\), \(C\)의 대각성분은 \((-1,2,2)\)입니다.
10. 지금까지의 내용을 수학의 언어로 정리해 봅시다#
지금까지 한 내용을 수학에서는 이렇게 정의하고 이렇게 정리합니다. 또한 왜 일반적으로 성립하는지 이렇게 증명합니다. 계산에서 사용한 언어를 수학의 언어로 변환하는 과정이라 조금 딱딱하겠지만, 앞의 공분산·진동·반례를 떠올리며 내용을 살펴봅시다.
이 절에서 공간은 유한차원이고 실수체 또는 복소수체 위에 있습니다. 복소 내적은 첫째 인수에 선형입니다. 즉 \(\langle ax,y\rangle=a\langle x,y\rangle\), \(\langle x,ay\rangle=\bar a\langle x,y\rangle\)입니다. 수반은 \(\langle Tx,y\rangle=\langle x,T^*y\rangle\)로 정합니다.
이전 결과 중 사용하는 것은 A5 §11.3의 복소 고윳값 존재, H0 §12.4의 유한차원 단위구면 위 최댓값 도달, H1 §12.2의 Gram–Schmidt와 직교분해, H2 §12.3의 수반 법칙입니다. 복소 고윳값 존재에는 대수학의 기본정리가 사용됩니다. 실수 Rayleigh 증명은 그 전제 없이 진행합니다.
10.1. 네 종류의 연산자#
정의. 같은 내적공간에서 자신으로 가는 선형사상 \(T\)에 대해 다음과 같이 부릅니다.
자기수반: \(T^*=T\).
반자기수반: \(T^*=-T\).
정규: \(T^*T=TT^*\).
유니터리: \(T^*T=TT^*=I\). 실수 공간에서는 직교 연산자라고도 부릅니다.
자기수반이면 양쪽 곱이 \(T^2\)이고, 반자기수반이면 양쪽 곱이 \(-T^2\)이므로 둘 다 정규입니다. 유니터리도 정의에 의해 정규입니다. 자기수반과 유니터리는 서로를 포함하지 않습니다. \(2I\)는 자기수반이지만 유니터리가 아니고, §5의 회전 \(R\)은 유니터리이지만 자기수반이 아닙니다. \(R/2\)는 정규이지만 자기수반도 유니터리도 아닙니다.
정규직교기저에서는 수반행렬이 켤레전치이므로 위 조건을 행렬곱으로 검사할 수 있습니다. 일반 기저에서는 Gram 행렬을 포함한 H2의 수반식을 써야 합니다.
유니터리이면 \(\|Tv\|^2=\langle v,T^*Tv\rangle=\|v\|^2\)이고 역은 \(T^*\)이므로 전단사 등거리입니다. 반대로 모든 벡터의 길이를 보존하면 \(\langle v,(T^*T-I)v\rangle=0\)입니다. 바로 아래 증명의 자기수반 행렬 성분 검사를 \(T^*T-I\)에 적용하면 \(T^*T=I\)입니다. 길이 보존은 핵이 0임을 뜻하므로 유한차원 자기공간에서는 차원 정리에 의해 전단사입니다. 따라서 \(T^*=T^{-1}\)이고 \(TT^*=I\)도 얻습니다.
10.2. 정규성에서 길이와 고유공간으로#
보조정리. 다음은 동치입니다.
증명. \(D=T^*T-TT^*\)라고 놓으면 \(D^*=D\)입니다. 수반 정의로
\(D=0\)이면 오른쪽이 0이므로 한 방향은 증명되었습니다.
반대로 오른쪽이 모든 \(v\)에서 0이라고 합시다. 정규직교기저에서 \(D=(d_{ij})\)라 쓰면 \(d_{ji}=\bar d_{ij}\)입니다. \(v=e_i\)를 대입하면 \(d_{ii}=0\)입니다. \(v=e_i+e_j\)를 대입하면
실수에서는 이것으로 모든 성분이 0입니다. 복소수에서는 \(v=e_i+ie_j\)를 추가로 대입합니다. \(\langle v,Dv\rangle=v^HDv\)인 이유는 \(D=D^H\)이기 때문입니다. 따라서
실수부와 허수부가 모두 0이므로 \(D=0\)입니다. \(\square\)
따름결과. 정규 \(T\)에 대해 다음 세 사실이 성립합니다.
첫째, \(\ker T=\ker T^*\)입니다. \(Tv=0\)이면 길이 등식으로 \(\|T^*v\|=0\)이고 역방향도 같습니다.
둘째, \(Tv=\lambda v\)이면 \(T^*v=\bar\lambda v\)입니다. 이를 위해 \(T-\lambda I\)가 정규임을 먼저 확인합니다.
정규성이 두 식을 같게 만듭니다. 첫째 결과를 \(T-\lambda I\)에 적용하면 원하는 결론이 나옵니다.
같은 핵의 등식은 역방향도 줍니다. 따라서 정확하게는 \(Tv=\lambda v\)와 \(T^*v=\bar\lambda v\)가 동치입니다.
셋째, 서로 다른 고윳값의 고유공간은 직교합니다. \(Tv=\lambda v\), \(Tw=\mu w\)라 하면
따라서 \((\lambda-\mu)\langle v,w\rangle=0\)이고 \(\lambda\ne\mu\)이면 내적이 0입니다. 마지막 등호에서 둘째 인수의 켤레선형성을 사용했습니다.
10.3. 복소 Schur 분해: 먼저 상삼각까지#
정리. 복소 유한차원 내적공간의 모든 연산자 \(T\)는 어떤 정규직교기저에서 상삼각행렬 \(R\)로 표현됩니다. 표준 좌표에서는 \(A=URU^*\)이고 \(U\)는 유니터리입니다.
증명. 차원 \(n\)에 대해 귀납합니다. \(n=0,1\)이면 성립합니다. \(n>1\)일 때 A5의 결과로 고유벡터가 있습니다. 길이를 1로 만들어 \(v_1\)이라 하고 고윳값을 \(\lambda\)라 합시다. H1의 Gram–Schmidt로 이를 정규직교기저로 확장합니다.
첫 열은 \(Tv_1=\lambda v_1\)의 좌표이므로 행렬은
입니다. \(a\)는 \(1\times(n-1)\) 행이고 \(B\)는 \((n-1)\times(n-1)\) 행렬입니다. 여기서 \(v_1^\perp\)가 \(T\)의 불변공간이라고 주장하지 않습니다. \(B\)는 \(v_1^\perp\)로 다시 사영한 연산의 행렬입니다. \(a\)가 0이 아니면 실제로 그 여공간 밖으로 나가는 성분이 있습니다.
귀납가정으로 \(V^*BV=R_1\)인 유니터리 \(V\)와 상삼각 \(R_1\)이 있습니다. 나머지 기저만 \(V\)로 바꾸면
이는 상삼각입니다. 정규직교기저 변경의 합성도 유니터리이므로 귀납이 끝납니다. 상삼각행렬의 특성다항식은 \(\prod_j(t-r_{jj})\)이므로 대각은 중복도를 포함한 고윳값입니다. \(\square\)
10.4. 복소 스펙트럼 정리#
정리. 복소 유한차원 내적공간에서 \(T\)가 정규인 것과 정규직교 고유기저가 존재하는 것은 동치입니다.
증명. Schur 분해로 \(A=URU^*\)라 합시다. \(U^*U=I\)를 곱에 넣으면
따라서 \(A\)가 정규이면 \(R\)도 정규입니다. 상삼각 \(R\)의 첫 열에는 \(r_{11}\)만 있을 수 있습니다. 정규성의 \((1,1)\) 성분을 비교하면
두 식을 빼면 \(\sum_{j=2}^n|r_{1j}|^2=0\)입니다. 각 항이 음수가 아니므로 첫 행의 대각 밖 성분은 모두 0입니다. 따라서 \(R=r_{11}\oplus R_1\)이고 곱의 오른쪽 아래 블록을 비교하면 \(R_1^*R_1=R_1R_1^*\)입니다. 같은 논리를 차례로 반복하여 \(R\)이 대각임을 얻습니다.
반대로 \(A=UDU^*\)이고 \(D\)가 대각이면 \(D^*D=DD^*\)입니다. 위의 곱 계산으로 \(A^*A=AA^*\)입니다. \(U\)의 열은 정규직교 고유기저입니다. \(\square\)
자기수반의 고윳값은 실수입니다. \(Tv=\lambda v\), \(v\ne0\)이면
이기 때문입니다. 반자기수반에서는 같은 계산에 음수가 붙어 \(\lambda=-\bar\lambda\)이므로 고윳값의 실수부가 0입니다. 유니터리에서는 \(\|Tv\|^2=\|v\|^2\)이므로 \(|\lambda|=1\)입니다.
역방향에는 정규성을 포함해야 합니다. 정규 \(T\)를 정규직교 고유기저에서 보면 \(T^*\)의 대각은 \(\bar\lambda_j\)입니다. 따라서 모든 고윳값이 실수이면 자기수반, 모두 순허수이면 반자기수반, 모두 절댓값 1이면 유니터리입니다. 비정규 행렬은 실수 고윳값만 있어도 자기수반이 아닐 수 있습니다. §5의 \(A\)가 그 반례입니다.
10.5. 실수 대칭행렬의 두 증명#
정리. 실수 유한차원 내적공간의 자기수반 연산자는 실수 정규직교 고유기저를 가집니다.
첫 증명: 복소 고유벡터에서 실수 벡터를 얻기. 실수 정규직교기저를 골라 행렬 \(A=A^\top\)를 복소 벡터에도 작용시킵니다. 이 복소 행렬은 \(A=A^*\)이므로 위 결과에 의해 실수 고윳값 \(\lambda\)와 복소 고유벡터 \(z=x+iy\ne0\)가 있습니다.
이므로 실수부와 허수부를 비교하면 \(Ax=\lambda x\), \(Ay=\lambda y\)입니다. \(x,y\) 중 적어도 하나는 0이 아니므로 실수 단위 고유벡터 \(u\)가 있습니다.
\(w\perp u\)이면 \(\langle Aw,u\rangle=\langle w,Au\rangle=\lambda\langle w,u\rangle=0\)입니다. 따라서 \(u^\perp\)는 불변입니다. 그 공간에 제한한 연산자도 자기수반입니다. 실제로 그 안의 \(w,z\)에 대해 \(\langle Aw,z\rangle=\langle w,Az\rangle\)가 그대로 성립합니다. 차원을 하나 줄여 귀납하고 \(u\)를 앞에 붙이면 실수 정규직교 고유기저를 얻습니다. \(\square\)
둘째 증명: 분산처럼 이차식을 최대화하기. \(n>0\)이라 합시다. 단위구면은 유한차원에서 콤팩트이고 \(x\mapsto x^\top Ax\)는 연속이므로 H0의 결과에 따라 최댓값을 취하는 단위벡터 \(u\)가 있습니다. \(\lambda=u^\top Au\)라고 놓습니다.
임의의 \(w\perp u\)에 대해 길이를 다시 1로 맞춘 벡터
를 사용합니다. 분모는 \(\|u+tw\|\)입니다. 분자의 길이 제곱이 \(1+2t\,u^\top w+t^2\|w\|^2=1+t^2\|w\|^2\)이기 때문입니다. \(t=0\)에서 최대이므로 다음 실함수의 도함수는 0입니다.
분자의 일차항은 대칭성으로 \(u^\top Aw+w^\top Au=2w^\top Au\)가 되었고 분모의 도함수는 0에서 0입니다. 따라서 \(2w^\top Au=0\)입니다. 이제 \(r=Au-\lambda u\)를 놓으면 \(u^\top r=\lambda-\lambda=0\)이므로 \(w=r\)을 선택할 수 있습니다.
따라서 \(Au=\lambda u\)입니다. 첫 증명과 같은 계산으로 \(u^\perp\)가 불변이고 제한 연산자는 자기수반입니다. 귀납하면 결론을 얻습니다. 이 증명은 대수학의 기본정리를 쓰지 않고, 첫 방향을 이차식의 최대 방향으로 함께 찾아 줍니다. \(\square\)
10.6. 실 정규행렬에서는 왜 이차원 블록이 남을까?#
정리. 실 정규행렬은 어떤 실 직교기저에서 실수 \(1\times1\) 블록과
꼴의 \(2\times2\) 블록의 직합이 됩니다.
증명. 실 행렬을 복소수로 확대해 복소 스펙트럼 정리를 적용합니다. 비실수 고윳값 \(\lambda=a+ib\)에서 \(b>0\)인 쪽을 택하고 단위 고유벡터 \(z=x+iy\)를 잡습니다. 행렬이 실수이므로 \(\bar z=x-iy\)는 \(\bar\lambda\)의 고유벡터입니다. 두 고윳값은 다르므로 \(\langle z,\bar z\rangle=0\)입니다.
또한 \(\|z\|^2=\|x\|^2+\|y\|^2=1\)입니다. 따라서 \(\|x\|^2=\|y\|^2=1/2\), \(x^\top y=0\)입니다. \(u=\sqrt2x\), \(w=-\sqrt2y\)는 실 정규직교 벡터입니다.
\(T(x+iy)=(a+ib)(x+iy)\)의 실수부와 허수부를 비교하면
그러므로 \(Tu=au+bw\), \(Tw=-bu+aw\)이고, \((u,w)\)에서 요구한 블록이 나옵니다.
여러 복소 고유벡터를 처리할 때 실수 부분들이 서로 직교하는지도 확인해야 합니다. 양의 허수부를 갖는 고윳값들의 공간에서 정규직교 벡터 \(z_j=x_j+iy_j\)를 고르면
두 식의 실수부와 허수부는 각각
더하고 빼면 \(x_j^\top x_k=y_j^\top y_k=\delta_{jk}/2\)이고 모든 교차 내적은 0입니다. 따라서 위에서 만든 실수 쌍들이 서로도 직교합니다.
실수 고윳값 \(\lambda\)의 경우 \(Tz=\lambda z\)는 실수부와 허수부 각각이 같은 실수 고유공간에 속한다는 뜻입니다. 그 실수 공간의 기저는 복소 고유공간도 생성하고, 실수 일차독립은 복소 일차독립을 뜻합니다. 복소 계수 관계를 실수부·허수부로 나누면 확인됩니다. 그러므로 실수 차원은 해당 복소 고유공간의 복소 차원과 같습니다. 그 안에서 실 Gram–Schmidt를 적용합니다. 다른 고유공간과의 복소 직교성을 실수부·허수부로 나누면 앞의 실수 쌍들과도 직교합니다.
실 고윳값의 차원과 비실 고윳값 쌍의 두 배 차원을 합하면 \(n\)입니다. 따라서 얻은 벡터들은 전체 실 정규직교기저입니다. \(\square\)
이 블록은 \(\rho=\sqrt{a^2+b^2}\)배의 회전입니다. \(\cos\theta=a/\rho\), \(\sin\theta=b/\rho\)로 쓰면 블록이 \(\rho R_\theta\)입니다. 실수 대각화가 안 된다는 사실은 이 정규직교 블록 분해가 안 된다는 뜻이 아닙니다.
보충: 일반 실 Schur 형식. 실 정규가 아닌 행렬도 실 직교기저에서 \(1\times1\), \(2\times2\) 대각 블록을 가진 블록 상삼각행렬이 됩니다. 다음 귀납이 이를 증명합니다.
실 고윳값이 있으면 실 고유벡터의 직선을 택합니다. 없으면 비실수 고유벡터 \(z=x+iy\)를 택합니다. 이때 \(x,y\)는 실수 일차독립입니다. 종속이면 \(z=cv\)인 실수 \(v\ne0\)와 복소수 \(c\ne0\)가 있어 \(Tv=\lambda v\)가 되고, 왼쪽이 실수이므로 \(\lambda\)가 실수여야 하는 모순이 생깁니다. 앞의 실수부·허수부 식은 \(\operatorname{span}_{\mathbb R}(x,y)\)가 불변임을 보여 줍니다.
이 일차원 또는 이차원 불변공간에서 정규직교기저를 골라 전체로 확장하면 행렬은 \(\begin{pmatrix}B&C\\0&D\end{pmatrix}\)가 됩니다. \(D\)에 같은 절차를 귀납 적용하면 블록 상삼각형이 완성됩니다. 정규성이 없으면 \(x,y\)의 직교성이나 같은 길이는 보장되지 않습니다. 따라서 일반 실 Schur의 \(2\times2\) 블록을 모두 \(\rho R_\theta\)라고 부르면 안 됩니다.
10.7. 사영값 분해와 유한 스펙트럼에서의 함수#
정리. 복소 정규 \(T\)의 서로 다른 고윳값 집합을 \(\Lambda\)라 하고 \(E_\lambda=\ker(T-\lambda I)\)라 합시다. 각 \(E_\lambda\) 위 직교사영 \(P_\lambda\)에 대해
이 사영들은 고유기저 선택과 무관하게 유일합니다.
증명. 스펙트럼 정리의 정규직교 고유기저를 고윳값별로 묶으면 모든 \(v\)가 유일하게 \(v=\sum_\lambda v_\lambda\), \(v_\lambda\in E_\lambda\)로 분해됩니다. H1의 직교사영에 의해 \(P_\lambda v=v_\lambda\)입니다. 두 번 적용해도 같고 다른 공간에 적용하면 0이므로 곱 공식이 나옵니다. 또한
이므로 자기수반입니다. \(Tv=\sum_\lambda\lambda v_\lambda\)이므로 마지막 항등식도 모든 벡터에서 성립합니다. 직교분해의 유일성 때문에 사영도 유일합니다. \(\square\)
역으로, 서로 곱하면 0이고 합이 \(I\)인 직교사영들로 \(T=\sum_\lambda\lambda P_\lambda\)를 표현할 수 있다면 \(T^*=\sum_\lambda\bar\lambda P_\lambda\)입니다. 사영의 곱 법칙을 넣으면 \(T^*T=\sum_\lambda|\lambda|^2P_\lambda=TT^*\)입니다. 따라서 이런 분해의 존재 자체가 정규성과 동치입니다.
사영은 \(T\)의 다항식으로도 나타납니다.
오른쪽을 \(E_\nu\)의 벡터에 적용하면 \(\nu=\lambda\)일 때 모든 인수가 1이고, \(\nu\ne\lambda\)일 때 \(\mu=\nu\)인 인수가 0입니다. 이것이 \(P_\lambda\)의 작용과 같고 고유공간들이 전체를 생성하므로 식이 성립합니다. 고윳값이 하나뿐이면 빈 곱은 \(I\)입니다.
유한 집합 \(\Lambda\) 위의 임의의 함수 \(f:\Lambda\to\mathbb C\)에 대해서는
로 정의할 수 있습니다. 이는 무한급수의 수렴을 요구하는 정의가 아닙니다. 위 보간식으로 언제나 다항식으로도 표현됩니다. 사영의 곱 공식을 적용하면
\(f(t)=t^k\)이면 익숙한 행렬 거듭제곱과 일치하고, 고윳값에 0이 없으면 \(f(t)=1/t\)가 역행렬을 줍니다. 이 절의 결론은 유한차원 정규 연산자에 대한 것입니다. 일반 비정규 행렬의 함수까지 이 정의로 해결한 것은 아닙니다.
10.8. 가환하는 정규 연산자족의 동시 대각화#
정리. 복소 유한차원 내적공간의 정규 연산자족은 쌍마다 가환할 때, 그리고 그때에만 공통 정규직교 고유기저를 가집니다. 연산자족은 유한 집합일 필요가 없습니다.
증명. 공통 기저에서 모두 대각이면 대각행렬끼리 가환하므로 필요성은 성립합니다.
충분성은 공간 차원에 대해 귀납합니다. 차원 0, 1에서는 성립합니다. 연산자가 하나도 없거나 모두 스칼라배 항등연산자라면 임의의 정규직교기저를 고르면 됩니다. 아니면 비스칼라 정규 연산자 \(T\) 하나를 택합니다. 스펙트럼 정리에 의해 고유공간 직교분해가 있고, 비스칼라이므로 서로 다른 고윳값이 적어도 둘입니다. 따라서 각 고유공간의 차원은 원래보다 작습니다.
족의 임의의 \(S\)는 \(T\)와 가환하므로 \(T\)의 다항식인 각 \(P_\lambda\)와 가환합니다. 수반을 취하면
따라서 \(S\)와 \(S^*\) 모두 \(E_\lambda\)를 보존합니다. 제한 연산자의 수반은 \(S^*|_{E_\lambda}\)입니다. 이는 그 공간의 두 벡터에 수반 정의를 적용하면 확인됩니다. 그러므로 제한 연산자도
를 만족하여 정규입니다. 제한들끼리의 가환성도 원래 등식을 그 공간에 적용하면 유지됩니다. 각 작은 공간에 귀납가정을 적용해 공통 정규직교기저를 얻고, 서로 직교하는 공간들의 기저를 합칩니다. 연산자를 하나씩 끝없이 처리하지 않고 차원에 귀납했으므로 무한한 족에도 적용됩니다. \(\square\)
실수 자기수반 연산자족에는 실수 스펙트럼 정리와 같은 귀납을 써서 실수 공통 정규직교기저를 얻습니다. 실수 정규 연산자족이 모두 실수 대각화된다는 주장은 틀립니다. 회전 한 개만 있는 족이 이미 반례입니다.
10.9. Schur의 비대각 성분과 Frobenius 노름#
보조정리. 유니터리 \(U,V\)에 대해 \(\|UAV\|_F=\|A\|_F\)입니다.
증명. Frobenius 노름 제곱은 열벡터 길이 제곱의 합입니다. \(A\)의 열을 \(a_j\)라 하면 유니터리가 길이를 보존하므로
또한 켤레전치는 성분의 위치를 바꾸고 켤레만 취하므로 \(\|B^*\|_F=\|B\|_F\)입니다. 따라서
두 결과를 합치면 충분합니다. \(\square\)
이제 복소 Schur 형식 \(R\)의 대각을 \(D\), 엄격한 상삼각 부분을 \(N\)이라 쓰면 \(R=D+N\)입니다. 두 부분은 0이 아닌 성분의 위치가 겹치지 않으므로
따라서 §6의 \(d(A)^2\) 공식이 성립합니다. 어떤 Schur 기저를 골랐는지와 무관하게 오른쪽 합은 같은 수입니다. \(d(A)=0\)이면 \(R\)이 대각이므로 \(A\)가 정규이고, 정규이면 스펙트럼 정리로 \(d(A)=0\)입니다.
마지막으로 정규 연산자에서는 고유기저로 \(v=\sum_jc_jq_j\)를 쓰면
최대 절댓값의 고유벡터를 단위벡터로 선택하면 등호가 성립합니다. 따라서 0차원을 제외하면
이것이 정규 연산자에서 방향별 배율이 실제 길이 증폭까지 설명하는 정확한 이유입니다. 비정규 \(F\)에 같은 결론을 옮기지 않아야 하는 이유는 §6의 \(\|Fe_1\|=\sqrt2\) 계산으로 이미 확인했습니다.
자기수반 연산자는 서로 직교하는 방향의 실수 배율로 분해됩니다. 다음 장에서는 배율이 음수가 아닌 경우에서 출발해, 일반 행렬의 길이 변화와 방향 변화를 분리합니다. H4로 이어 읽기.