필립 클라인의 저서 코딩 더 매트릭스 7장 차원
- Morphing 정리와 응용을 통해 벡터공간의 기저에 대한 성질을 이해합니다.
- 차원과 랭크를 이해하고 차원이 기하학적으로 어떤 의미를 가지는지 알아봅니다.
- Superset-basis 와 차원 원리의 두 성질을 이해합니다.
- 행열의 행랭크와 열랭크가 동일함을 증명을 통해 이해합니다.
- 직합에 대해 알아봅니다.
기저의 크기 |B|
벡터 공간 V에 대해 S는 V의 생성자들의 집합이라 하고 B는 V에 속하는 벡터들로 구성된 일차독립인 집합이라 하면 ∣S∣≥∣B∣입니다. 이를 Morphing 정리라 하고 교환정리를 이용해 증명할 수 있습니다.
B={b1,...,bn}, k=∣B∣라 하겠습니다. k=0일 때, 즉 B가 영벡터로만 이루어진 집합일때 ∣S∣≥∣B∣가 성립합니다. 귀납적으로 k=1,...,n에 대해 Sk−1로부터 Sk를 얻음으로써 ∣S∣≥∣B∣임을 증명해보겠습니다. Ak={b1,...,bk−1}이라하면 Ak∪bk는 일차독립이므로 교환정리를 Ak와 Sk−1에 적용할 수 있습니다. Span ({bk}∪Sk−1−{w})가 V를 생성하는 벡터 w∈Sk−1−Ak가 존재합니다. Sk={bk}∪Sk−1−{w}라 정의하면 S1={b1}∪S0−{w}, S2={b2}∪S1−{w}, S3={b3}∪S2−{w} 처럼 Sk는 ∣S∣를 일정하게 유지한 채 bk를 추가합니다. Sk는 {b1,...,bk}를 포함하면서 V를 생성합니다. 따라서 ∣S∣≥∣B∣입니다.
Morphing 정리를 이용해 벡터공간의 기저에 대한 성질을 몇가지 얻을 수 있습니다. B1과 B2를 벡터공간 V의 기저라 할 때, B1과 B2는 일차독립인 집합이면서 생성자들의 집합이므로 Morphing 정리의 ∣S∣≥∣B∣식에 대입할 수 있습니다. S=B1, B=B2일때 ∣B1∣≥∣B2∣입니다. 반대로 S=B2, B=B1일때 ∣B2∣≥∣B1∣입니다. 따라서 ∣B2∣=∣B1∣이고 이는 벡터공간 V의 기저의 크기는 모두 같음을 의미합니다.
벡터공간 V의 생성자들의 집합이 V의 생성자들의 집합 중 가장 작은 집합이 될 필요충분조건은 이 집합이 V의 기저일 경우입니다. T를 V의 기저라 할때 T가 생성자들의 집합 중 가장 작은 집합인지 알아보겠습니다. T는 기저이므로 일차독립입니다. S를 V의 생성자들의 집합 중 가장 작은 집합이라고 할 때 S와 T를 Morphing 정리에 대입하면 ∣S∣≥∣T∣입니다. 따라서 T도 생성자들의 집합 중 가장 작은 집합입니다. T가 생성자들의 집합이지만 기저가 아니라고 할 때, 즉 일차종속일 때 Superfluous-vector 정리에 의해 T에서 하나의 벡터를 제거해도 생성자의 집합이 됩니다. 따라서 T는 생성자들의 집합 중 가장 작은 집합이 아닙니다.
차원
벡터공간의 기저의 크기를 차원이라 하고 벡터공간 V의 차원을 dim V라 씁니다. 벡터들의 집합 S가 있을 때 Span S의 차원을 S의 랭크라 하고 rank S라 씁니다. rank S는 Span S의 기저의 크기이므로 rank S≤∣S∣입니다.
행렬의 열벡터 집합의 랭크를 열랭크라 하고 행벡터 집합의 랭크를 행랭크라 합니다. 행렬 M이 있을때 열랭크는 dim Col M와 같고 행랭크는 dim Row M와 같습니다.
차원과 기하학적 구조
좌표의 수는 기저의 크기이고 기저의 크기는 주어진 벡터들로 구성된 집합의 랭크입니다.
예를 들어 Span{[1,2,−2]} 는 3개의 좌표로 구성된 1차원 기하객체 직선입니다. 기저의 개수가 하나이므로 차원은 1입니다. Span{[0,0,0]} 는 점입니다. 영벡터만이 기저를 형성하므로 차원은 0입니다.
Span{[1,2],[3,4]} 는 R2의 모든 것, 즉 2차원 객체를 구성합니다. 반면에 Span{[1,3],[2,6]}은 기저의 크기가 하나이므로 차원이 1입니다.
Span{[1,0,0],[0,1,0],[0,0,1]} 은 R3의 모든 것, 즉 3차원 객체를 구성합니다. 반면에 Span{[1,0,0],[0,1,0],[1,1,0]} 은 2차원 객체 평면을 구성합니다.
Superset-Basis
임의의 벡터공간 V와 벡터들로 구성된 일차독립 집합 T에 대해, V는 T의 모든 원소를 포함하는 기저를 가집니다. 이를 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
두번째 줄에서 T는 일차독립 집합이므로 B는 일차독립 집합으로서 초기화됩니다. Grow 알고리즘은 생성자 집합을 찾아내고 Span B=V 입니다. 따라서 B는 V의 기저이면서 T의 모든 원소를 포함합니다.
차원 원리
만약 V가 W의 부분공간이면 다음 성질을 얻습니다.
- dim V≤dim W
- dim V=dim W이면 V=W
Superset-Basis를 이용해 위 성질들을 증명할 수 있습니다. V의 기저를 v1,...,vk라 하면 dim V=k이고 W는 일차독립인 V의 기저 v1,...,vk를 포함하는 기저를 가지므로 dim V≤dim W입니다. 만약 dim V=dim W이면 W의 기저가 v1,...,vk 이외의 다른 벡터는 포함하지 않으므로 V의 기저는 또한 W의 기저임을 뜻합니다. 따라서 V=W입니다.
첫번째 성질을 이용하면 RD상의 벡터들로 구성된 집합의 랭크는 ∣D∣보다 작거나 같습니다. D-벡터들로 구성된 집합이 RD상의 벡터공간의 부분공간이므로 참입니다. 예를 들어 Span{[1,0,0],[0,1,0]}의 차원 2는 3-벡터들의 집합의 랭크이고 이는 3보다 작은 값입니다.
Rank 정리
임의의 행렬 A의 행랭크와 열랭크는 같습니다. 예를 들어 n개의 열벡터로 구성된 행렬 A가 다음과 같습니다.
A=⎣⎢⎡a1...an⎦⎥⎤
A의 열공간의 기저를 b1,...,br이라 하고 A의 열벡터들을 A의 열공간의 기저로 다시 표현하면 다음과 같습니다.
A=⎣⎢⎡a1...an⎦⎥⎤=⎣⎢⎡b1...br⎦⎥⎤⎣⎢⎡u1...un⎦⎥⎤
u1,...,un은 열공간의 기저 b1,...,br에 대한 좌표표현 입니다. 간단히 A=BU로 쓸 수 있고 이때 U는 r×n행렬입니다.
이제 행렬 곱셈을 행벡터들로 구성된 행렬 곱셈으로 바꾸어 보겠습니다.
A=⎣⎢⎡a1ˉ...amˉ⎦⎥⎤=⎣⎢⎡b1ˉ...bmˉ⎦⎥⎤U
A를 B와 U의 벡터-행렬 곱셈으로 바라보면 A의 행공간은 U의 행벡터들에 대해 b1ˉ,...,bmˉ를 좌표표현으로 갖습니다. 즉 A의 행공간은 U의 행공간의 부분공간입니다. U의 행공간의 차원은 U의 행벡터들의 개수 r보다 작거나 같으므로 부분공간인 A의 행공간의 차원도 r보다 작거나 같습니다. r은 A의 열공간의 차원이므로 행공간의 차원은 열공간의 차원보다 작거나 같습니다.
똑같은 증명과정을 AT에 대해 적용하면 AT의 행공간의 차원은 열공간의 차원보다 작거나 같고, 이는 A의 열공간의 차원이 행공간의 차원보다 작거나 같음을 의미합니다. 따라서 A의 열공간과 행공간의 차원은 같습니다.
직합 Direct sum
벡터공간 U와 V가 영벡터만을 공유할 때, 즉 교집합이 영벡터뿐일 때 두 벡터공간의 직합 U⊕V을 아래와 같이 정의합니다.
{u+v,u∈U,v∈V}
U⊕V는 U와 V의 벡터의 모든 합으로 구성된 집합입니다. 직합의 의미를 기하학적으로 이해해 보겠습니다.
U=Span {[4,−1,1]}, V=Span {[0,1,1]}이라 하면 U와 V는 각각 벡터의 생성이고 직선을 형성합니다. 유일한 교점은 원점이므로 직합을 정의할 수 있습니다. 직합은 Span {[4,−1,1],[0,1,1]}이며 두 개의 직선을 포함하는 평면입니다.
평면의 방정식은 두 벡터의 외적으로 법선벡터를 찾아 구할 수 있습니다.
∣∣∣∣∣∣∣i40j−11k11∣∣∣∣∣∣∣=−2i−4j+4k
법선벡터의 [−2,−4,4]와 원점을 이용해 평면방정식 z=0.5x+y를 구할 수 있습니다. matplotlib
를 이용해 직접 두 직선과 평면을 그려보겠습니다.
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
ax = plt.subplot(projection='3d')
ax.plot3D([4,-4], [-1, 1], [1, -1], linewidth=3)
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()
직합에 대한 몇가지 성질을 알아보겠습니다. U와 V가 영벡터만을 공유할때 U의 생성자들의 집합과 V의 생성자들의 집합의 합집합은 U⊕V의 생성자들의 집합입니다. U=Span {u1,...,un}이고 V=Span {v1,...,vm} 이라 할 때 U의 내의 모든 벡터는 α1u1+...+αnun으로 표현할 수 있고 V의 내의 모든 벡터는 β1v1+...+βmvm으로 표현할 수 있습니다. 그래서 U⊕V 내의 모든 벡터는 α1u1+...+αnun+β1v1+...+βmvm 으로 표현할 수 있습니다. 이는 U와 V의 생성자들의 합집합이 U⊕V의 생성자 집합임을 의미합니다.
U의 기저와 V의 기저의 합집합은 U⊕V의 기저입니다. U의 기저를 {u1,...,un}라 하고 V의 기저를 {v1,...,vm}라 하겠습니다. 기저는 생성자들의 집합이므로 {u1,...,un}와 {v1,...,vm}의 합집합은 U⊕V의 생성자들의 집합입니다. 또 U⊕V내의 임의의 벡터 α1u1+...+αnun+β1v1+...+βmvm 는 공유벡터가 영벡터인 U와 V의 기저들의 선형결합, 즉 일차독립인 벡터들의 선형결합이므로 α1u1+...+αnun+β1v1+...+βmvm=0은 오직 자명한 선형결합일 경우 성립합니다. 따라서 U와 V의 기저들의 합집합 {u1,...,un,v1,...,vm}은 일차독립이고 앞서 U⊕V의 생성자들의 집합임을 증명했으므로 U⊕V의 기저입니다.
{u1,...,un,v1,...,vm}의 개수는 {u1,...,un}의 개수와 {v1,...,vm}의 개수의 합이므로 다음이 성립합니다.
dim U+dim V=dim U⊕V
벡터공간 U와 V에 대해 u∈U, v∈V이고 U⊕V가 정의될 때 U⊕V의 임의의 벡터 u+v는 유일하게 표현됩니다. U와 V의 기저를 각각 {u1,...,un}, {v1,...,vm}이라 하면 U⊕V의 임의의 벡터 u+v는 다음과 같이 표현할 수 있습니다.
u+v=α1u1+...+αnun+β1v1+...+βmvm
U와 V가 영벡터만을 공유하고 {u1,...,un}, {v1,...,vm}는 일차독립이므로 u+v는 유일하게 표현됩니다.