코딩 더 매트릭스 - 7장 차원 (1)

차원과 랭크, 직합

2018년 12월 27일

필립 클라인의 저서 코딩 더 매트릭스 7장 차원


  1. Morphing 정리와 응용을 통해 벡터공간의 기저에 대한 성질을 이해합니다.
  2. 차원과 랭크를 이해하고 차원이 기하학적으로 어떤 의미를 가지는지 알아봅니다.
  3. Superset-basis 와 차원 원리의 두 성질을 이해합니다.
  4. 행열의 행랭크와 열랭크가 동일함을 증명을 통해 이해합니다.
  5. 직합에 대해 알아봅니다.





기저의 크기 |B|

벡터 공간 V에 대해 SSVV의 생성자들의 집합이라 하고 BBVV에 속하는 벡터들로 구성된 일차독립인 집합이라 하면 SB|S| \ge |B|입니다. 이를 Morphing 정리라 하고 교환정리를 이용해 증명할 수 있습니다.

B={b1,...,bn}B = \{b_1, ..., b_n\}, k=Bk = |B|라 하겠습니다. k=0k = 0일 때, 즉 BB가 영벡터로만 이루어진 집합일때 SB|S| \ge |B|가 성립합니다. 귀납적으로 k=1,...,nk = 1, ..., n에 대해 Sk1S_{k-1}로부터 SkS_k를 얻음으로써 SB|S| \ge |B|임을 증명해보겠습니다. Ak={b1,...,bk1}A_k = \{b_1, ..., b_{k-1}\}이라하면 AkbkA_k \cup b_k는 일차독립이므로 교환정리를 AkA_kSk1S_{k-1}에 적용할 수 있습니다. Span ({bk}Sk1{w})Span\text{ }(\{b_k\} \cup S_{k-1} - \{w\})VV를 생성하는 벡터 wSk1Akw \in S_{k-1} - A_k가 존재합니다. Sk={bk}Sk1{w}S_k = \{b_k\} \cup S_{k-1} - \{w\}라 정의하면 S1={b1}S0{w}S_1 = \{b_1\} \cup S_0 - \{w\}, S2={b2}S1{w}S_2 = \{b_2\} \cup S_1 - \{w\}, S3={b3}S2{w}S_3 = \{b_3\} \cup S_2 - \{w\} 처럼 SkS_kS|S|를 일정하게 유지한 채 bkb_k를 추가합니다. SkS_k{b1,...,bk}\{b_1, ..., b_k\}를 포함하면서 VV를 생성합니다. 따라서 SB|S| \ge |B|입니다.

Morphing 정리를 이용해 벡터공간의 기저에 대한 성질을 몇가지 얻을 수 있습니다. B1B_1B2B_2를 벡터공간 VV의 기저라 할 때, B1B_1B2B_2는 일차독립인 집합이면서 생성자들의 집합이므로 Morphing 정리의 SB|S| \ge |B|식에 대입할 수 있습니다. S=B1S = B_1, B=B2B = B_2일때 B1B2|B_1| \ge |B_2|입니다. 반대로 S=B2S = B_2, B=B1B = B_1일때 B2B1|B_2| \ge |B_1|입니다. 따라서 B2=B1|B_2| = |B_1|이고 이는 벡터공간 VV의 기저의 크기는 모두 같음을 의미합니다.

벡터공간 VV의 생성자들의 집합이 VV의 생성자들의 집합 중 가장 작은 집합이 될 필요충분조건은 이 집합이 VV의 기저일 경우입니다. TTVV의 기저라 할때 TT가 생성자들의 집합 중 가장 작은 집합인지 알아보겠습니다. TT는 기저이므로 일차독립입니다. SSVV의 생성자들의 집합 중 가장 작은 집합이라고 할 때 SSTT를 Morphing 정리에 대입하면 ST|S| \ge |T|입니다. 따라서 TT도 생성자들의 집합 중 가장 작은 집합입니다. TT가 생성자들의 집합이지만 기저가 아니라고 할 때, 즉 일차종속일 때 Superfluous-vector 정리에 의해 TT에서 하나의 벡터를 제거해도 생성자의 집합이 됩니다. 따라서 TT는 생성자들의 집합 중 가장 작은 집합이 아닙니다.





차원

벡터공간의 기저의 크기를 차원이라 하고 벡터공간 VV의 차원을 dim Vdim\text{ }V라 씁니다. 벡터들의 집합 SS가 있을 때 Span SSpan\text{ }S의 차원을 SS의 랭크라 하고 rank Srank\text{ }S라 씁니다. rank Srank\text{ }SSpan SSpan\text{ }S의 기저의 크기이므로 rank SSrank\text{ }S \le |S|입니다.

행렬의 열벡터 집합의 랭크를 열랭크라 하고 행벡터 집합의 랭크를 행랭크라 합니다. 행렬 MM이 있을때 열랭크는 dim Col Mdim\text{ }Col\text{ }M와 같고 행랭크는 dim Row Mdim\text{ }Row\text{ }M와 같습니다.





차원과 기하학적 구조

좌표의 수는 기저의 크기이고 기저의 크기는 주어진 벡터들로 구성된 집합의 랭크입니다.

예를 들어 Span{[1,2,2]}Span\{[1,2,-2]\} 는 3개의 좌표로 구성된 1차원 기하객체 직선입니다. 기저의 개수가 하나이므로 차원은 1입니다. Span{[0,0,0]}Span\{[0,0,0]\} 는 점입니다. 영벡터만이 기저를 형성하므로 차원은 0입니다.

Span{[1,2],[3,4]}Span\{[1,2], [3,4]\}R2\Bbb{R}^2의 모든 것, 즉 2차원 객체를 구성합니다. 반면에 Span{[1,3],[2,6]}Span\{[1,3],[2,6]\}은 기저의 크기가 하나이므로 차원이 1입니다.

Span{[1,0,0],[0,1,0],[0,0,1]}Span\{[1,0,0], [0,1,0], [0,0,1]\}R3\Bbb{R}^3의 모든 것, 즉 3차원 객체를 구성합니다. 반면에 Span{[1,0,0],[0,1,0],[1,1,0]}Span\{[1,0,0], [0,1,0], [1,1,0]\} 은 2차원 객체 평면을 구성합니다.





Superset-Basis

임의의 벡터공간 VV와 벡터들로 구성된 일차독립 집합 TT에 대해, VVTT의 모든 원소를 포함하는 기저를 가집니다. 이를 Superset-Basis라 하고 Grow 알고리즘으로 증명할 수 있습니다.

아래와 같은 Grow 알고리즘의 한 버젼이 있습니다.

def superset_basis(T, V):
	initialize B to be equal to T
	repeat while possible
		find a vector v in V that is not in Span B, and put it in B

두번째 줄에서 TT는 일차독립 집합이므로 BB는 일차독립 집합으로서 초기화됩니다. Grow 알고리즘은 생성자 집합을 찾아내고 Span B=VSpan\text{ }B = V 입니다. 따라서 BBVV의 기저이면서 TT의 모든 원소를 포함합니다.





차원 원리

만약 VVWW의 부분공간이면 다음 성질을 얻습니다.

  • dim Vdim Wdim\text{ }V \le dim\text{ }W
  • dim V=dim Wdim\text{ }V = dim\text{ }W이면 V=WV = W

Superset-Basis를 이용해 위 성질들을 증명할 수 있습니다. VV의 기저를 v1,...,vkv_1, ..., v_k라 하면 dim V=kdim\text{ }V = k이고 WW는 일차독립인 VV의 기저 v1,...,vkv_1, ..., v_k를 포함하는 기저를 가지므로 dim Vdim Wdim\text{ }V \le dim\text{ }W입니다. 만약 dim V=dim Wdim\text{ }V = dim\text{ }W이면 WW의 기저가 v1,...,vkv_1, ..., v_k 이외의 다른 벡터는 포함하지 않으므로 VV의 기저는 또한 WW의 기저임을 뜻합니다. 따라서 V=WV = W입니다.

첫번째 성질을 이용하면 RD\Bbb{R}^D상의 벡터들로 구성된 집합의 랭크는 D|D|보다 작거나 같습니다. D-벡터들로 구성된 집합이 RD\Bbb{R}^D상의 벡터공간의 부분공간이므로 참입니다. 예를 들어 Span{[1,0,0],[0,1,0]}Span\{[1,0,0], [0,1,0]\}의 차원 2는 3-벡터들의 집합의 랭크이고 이는 3보다 작은 값입니다.





Rank 정리

임의의 행렬 AA의 행랭크와 열랭크는 같습니다. 예를 들어 nn개의 열벡터로 구성된 행렬 AA가 다음과 같습니다.

A=[a1...an]A = \left[\begin{array}{c|c|c} && \\ a_1 & ... & a_n \\ && \end{array}\right]

AA의 열공간의 기저를 b1,...,brb_1, ..., b_r이라 하고 AA의 열벡터들을 AA의 열공간의 기저로 다시 표현하면 다음과 같습니다.

A=[a1...an]=[b1...br][u1...un]A = \left[\begin{array}{c|c|c} && \\ a_1 & ... & a_n \\ && \end{array}\right] = \left[\begin{array}{c|c|c} && \\ b_1 & ... & b_r \\ && \end{array}\right] \left[\begin{array}{c|c|c} && \\ u_1 & ... & u_n \\ && \end{array}\right]

u1,...,unu_1, ..., u_n은 열공간의 기저 b1,...,brb_1, ..., b_r에 대한 좌표표현 입니다. 간단히 A=BUA = BU로 쓸 수 있고 이때 UUr×nr \times n행렬입니다.

이제 행렬 곱셈을 행벡터들로 구성된 행렬 곱셈으로 바꾸어 보겠습니다.

A=[a1ˉ...amˉ]=[b1ˉ...bmˉ]UA = \begin{bmatrix}{} & \bar{a_1} & \\ \hline & ... & \\ \hline & \bar{a_m} & \end{bmatrix} = \begin{bmatrix}{} & \bar{b_1} & \\ \hline & ... & \\ \hline & \bar{b_m} & \end{bmatrix} U

AABBUU의 벡터-행렬 곱셈으로 바라보면 AA의 행공간은 UU의 행벡터들에 대해 b1ˉ,...,bmˉ\bar{b_1}, ..., \bar{b_m}를 좌표표현으로 갖습니다. 즉 AA의 행공간은 UU의 행공간의 부분공간입니다. UU의 행공간의 차원은 UU의 행벡터들의 개수 rr보다 작거나 같으므로 부분공간인 AA의 행공간의 차원도 rr보다 작거나 같습니다. rrAA의 열공간의 차원이므로 행공간의 차원은 열공간의 차원보다 작거나 같습니다.

똑같은 증명과정을 ATA^T에 대해 적용하면 ATA^T의 행공간의 차원은 열공간의 차원보다 작거나 같고, 이는 AA의 열공간의 차원이 행공간의 차원보다 작거나 같음을 의미합니다. 따라서 AA의 열공간과 행공간의 차원은 같습니다.





직합 Direct sum

벡터공간 UUVV가 영벡터만을 공유할 때, 즉 교집합이 영벡터뿐일 때 두 벡터공간의 직합 UVU \oplus V을 아래와 같이 정의합니다.

{u+v,uU,vV}\{u + v, u \in U, v \in V\}

UVU \oplus VUUVV의 벡터의 모든 합으로 구성된 집합입니다. 직합의 의미를 기하학적으로 이해해 보겠습니다.

U=Span {[4,1,1]}U = Span\text{ }\{[4,-1,1]\}, V=Span {[0,1,1]}V = Span\text{ }\{[0,1,1]\}이라 하면 UUVV는 각각 벡터의 생성이고 직선을 형성합니다. 유일한 교점은 원점이므로 직합을 정의할 수 있습니다. 직합은 Span {[4,1,1],[0,1,1]}Span\text{ }\{[4,-1,1], [0,1,1]\}이며 두 개의 직선을 포함하는 평면입니다.

평면의 방정식은 두 벡터의 외적으로 법선벡터를 찾아 구할 수 있습니다.

ijk411011=2i4j+4k\begin{vmatrix} i & j & k \\ 4 & -1 & 1 \\ 0 & 1 & 1 \end{vmatrix} = -2i -4j + 4k

법선벡터의 [2,4,4][-2,-4,4]와 원점을 이용해 평면방정식 z=0.5x+yz = 0.5x + y를 구할 수 있습니다. matplotlib를 이용해 직접 두 직선과 평면을 그려보겠습니다.

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

ax = plt.subplot(projection='3d')

# 직선1
ax.plot3D([4,-4], [-1, 1], [1, -1], linewidth=3)

# 직선2
ax.plot3D([0,0], [4, -4], [4, -4], linewidth=3)

# 평면
x, y = np.meshgrid(range(-4, 4), range(-4,4))
z = 0.5 * x + y
ax.plot_surface(x, y, z, alpha=0.5)
plt.show()

직합에 대한 몇가지 성질을 알아보겠습니다. UUVV가 영벡터만을 공유할때 UU의 생성자들의 집합과 VV의 생성자들의 집합의 합집합은 UVU \oplus V의 생성자들의 집합입니다. U=Span {u1,...,un}U = Span\text{ }\{u_1, ..., u_n\}이고 V=Span {v1,...,vm}V = Span\text{ }\{v_1, ..., v_m\} 이라 할 때 UU의 내의 모든 벡터는 α1u1+...+αnun\alpha_1 u_1 + ... + \alpha_n u_n으로 표현할 수 있고 VV의 내의 모든 벡터는 β1v1+...+βmvm\beta_1 v_1 + ... + \beta_m v_m으로 표현할 수 있습니다. 그래서 UVU \oplus V 내의 모든 벡터는 α1u1+...+αnun+β1v1+...+βmvm\alpha_1 u_1 + ... + \alpha_n u_n + \beta_1 v_1 + ... + \beta_m v_m 으로 표현할 수 있습니다. 이는 UUVV의 생성자들의 합집합이 UVU \oplus V의 생성자 집합임을 의미합니다.



UU의 기저와 VV의 기저의 합집합은 UVU \oplus V의 기저입니다. UU의 기저를 {u1,...,un}\{u_1, ..., u_n\}라 하고 VV의 기저를 {v1,...,vm}\{v_1, ..., v_m\}라 하겠습니다. 기저는 생성자들의 집합이므로 {u1,...,un}\{u_1, ..., u_n\}{v1,...,vm}\{v_1, ..., v_m\}의 합집합은 UVU \oplus V의 생성자들의 집합입니다. 또 UVU \oplus V내의 임의의 벡터 α1u1+...+αnun+β1v1+...+βmvm\alpha_1 u_1 + ... + \alpha_n u_n + \beta_1 v_1 + ... + \beta_m v_m 는 공유벡터가 영벡터인 UUVV의 기저들의 선형결합, 즉 일차독립인 벡터들의 선형결합이므로 α1u1+...+αnun+β1v1+...+βmvm=0\alpha_1 u_1 + ... + \alpha_n u_n + \beta_1 v_1 + ... + \beta_m v_m = 0은 오직 자명한 선형결합일 경우 성립합니다. 따라서 UUVV의 기저들의 합집합 {u1,...,un,v1,...,vm}\{u_1, ..., u_n, v_1, ..., v_m\}은 일차독립이고 앞서 UVU \oplus V의 생성자들의 집합임을 증명했으므로 UVU \oplus V의 기저입니다. {u1,...,un,v1,...,vm}\{u_1, ..., u_n, v_1, ..., v_m\}의 개수는 {u1,...,un}\{u_1, ..., u_n\}의 개수와 {v1,...,vm}\{v_1, ..., v_m\}의 개수의 합이므로 다음이 성립합니다.

dim U+dim V=dim UVdim\text{ }U + dim\text{ }V = dim\text{ }U \oplus V



벡터공간 UUVV에 대해 uUu \in U, vVv \in V이고 UVU \oplus V가 정의될 때 UVU \oplus V의 임의의 벡터 u+vu + v는 유일하게 표현됩니다. UUVV의 기저를 각각 {u1,...,un}\{u_1, ..., u_n\}, {v1,...,vm}\{v_1, ..., v_m\}이라 하면 UVU \oplus V의 임의의 벡터 u+vu + v는 다음과 같이 표현할 수 있습니다.

u+v=α1u1+...+αnun+β1v1+...+βmvmu + v = \alpha_1 u_1 + ... + \alpha_n u_n + \beta_1 v_1 + ... + \beta_m v_m

UUVV가 영벡터만을 공유하고 {u1,...,un}\{u_1, ..., u_n\}, {v1,...,vm}\{v_1, ..., v_m\}는 일차독립이므로 u+vu + v는 유일하게 표현됩니다.