Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Lecture 10. 네 개의 기본 부분공간

The Four Fundamental Subspaces — 서술

이번 강의는 지금까지 배운 것이 그림 한 장으로 모이는 자리이다.

L6에서 행렬 하나에 부분공간이 둘 딸려 온다고 하였다. 열공간과 영공간이다. 그런데 AA 가 있으면 ATA^{\mathsf{T}} 도 있다. 그렇다면 ATA^{\mathsf{T}} 의 열공간과 영공간도 있을 것이다.

부분공간은 둘이 아니라 이다. 그리고 이 넷은 흩어져 있지 않고 둘씩 짝을 지어 정의역과 공역을 각각 완전히 나눈다.

계속 쓸 예제는 L7과 L8에서 다룬 행렬이다.

A=[1222246836810],m=3,n=4,r=2A = \begin{bmatrix} 1 & 2 & 2 & 2 \\ 2 & 4 & 6 & 8 \\ 3 & 6 & 8 & 10 \end{bmatrix}, \qquad m = 3, \quad n = 4, \quad r = 2

1. 네 개의 부분공간

이미 둘은 안다. 나머지 둘은 ATA^{\mathsf{T}} 에 같은 정의를 적용한 것이다.

행공간이 ATA^{\mathsf{T}} 의 열공간인 이유는 전치의 정의에서 바로 나온다. AA 의 행을 세로로 세우면 ATA^{\mathsf{T}} 의 열이 되기 때문이다.

좌영공간이라는 이름은 어디서 왔는가. ATy=0A^{\mathsf{T}}\vv{y} = \vv{0} 의 양변을 전치하고 L5의 (8)의 성질을 쓰면

(ATy)T=yT(AT)T=yTA=0T(A^{\mathsf{T}}\vv{y})^{\mathsf{T}} = \vv{y}^{\mathsf{T}}(A^{\mathsf{T}})^{\mathsf{T}} = \vv{y}^{\mathsf{T}}A = \vv{0}^{\mathsf{T}}

가 된다. 즉 y\vv{y}AA왼쪽에 곱해져 0을 만든다. 그래서 좌영공간이다. L8에서 해가 존재할 조건을 따질 때 쓴 yTA=0\vv{y}^{\mathsf{T}}A = \vv{0}y\vv{y} 가 바로 여기에 산다.

어디에 사는가

가장 헷갈리는 지점이다. 표로 정리해 둔다.

부분공간사는 곳차원
행공간 C(AT)C(A^{\mathsf{T}})Rn\R^nrr
영공간 N(A)N(A)Rn\R^nnrn - r
열공간 C(A)C(A)Rm\R^mrr
좌영공간 N(AT)N(A^{\mathsf{T}})Rm\R^mmrm - r

AAm×nm \times n 이면 행은 성분이 nn 개이므로 행공간은 Rn\R^n 에 있고, 열은 성분이 mm 개이므로 열공간은 Rm\R^m 에 있다. 행공간과 영공간은 정의역 쪽에, 열공간과 좌영공간은 공역 쪽에 있다.

(1)의 예제로 확인하면 행공간과 영공간은 R4\R^4 에, 열공간과 좌영공간은 R3\R^3 에 있다.

차원 중 셋은 이미 아는 것이다. dimC(A)=r\dim C(A) = r 은 L9에서 증명했고, dimN(A)=nr\dim N(A) = n - r 은 L7에서 얻었다. 좌영공간의 차원은 ATA^{\mathsf{T}} 에 L7의 공식을 적용하면 된다. ATA^{\mathsf{T}}n×mn \times m 이므로 열이 mm 개이고, 랭크가 rr 이라면

dimN(AT)=mr\dim N(A^{\mathsf{T}}) = m - r

이다. 남은 것은 행공간의 차원이 정말 rr 인지, 즉 ATA^{\mathsf{T}} 의 랭크도 rr 인지이다.


2. 행랭크와 열랭크는 같다

이것은 자명한 사실이 아니다. 행공간은 Rn\R^n 에 있고 열공간은 Rm\R^m 에 있어서 아예 다른 공간에 사는데, 두 공간의 차원이 같다고 주장하는 것이기 때문이다.

증명은 세 단계이다.

첫째, 행 연산은 행공간을 바꾸지 않는다

소거의 각 단계는 어떤 행에 다른 행의 배수를 더하는 것이다. 새 행은 옛 행들의 선형결합이므로 새 행공간은 옛 행공간에 포함된다.

C(RT)C(AT)C(R^{\mathsf{T}}) \subseteq C(A^{\mathsf{T}})

그런데 L2의 (29)에서 본 것처럼 소거는 되돌릴 수 있다. 되돌리는 연산도 행에 행의 배수를 더하는 것이므로 같은 논리가 반대 방향으로도 성립한다. 양쪽이 서로를 포함하므로 두 공간은 같다.

C(RT)=C(AT)C(R^{\mathsf{T}}) = C(A^{\mathsf{T}})

둘째, RR 의 0이 아닌 행들은 독립이다

RR 을 기약 사다리꼴이라 하자. 0이 아닌 행은 정확히 rr 개이고, 각 행은 자기 피벗 자리에 1을 갖는다. 그리고 기약 사다리꼴에서는 피벗이 있는 열의 다른 성분이 모두 0이다.

이제 이 행들의 결합이 0이라 하자.

c1(1행)+c2(2행)++cr(r)=0c_1(\text{1행}) + c_2(\text{2행}) + \cdots + c_r(r\text{행}) = \vv{0}

ii 번째 행의 피벗이 있는 열을 보면, 그 자리에서 ii 번째 행만 1이고 나머지 행은 0이다. 따라서 그 자리의 값은 cic_i 이고, 전체가 0이므로 ci=0c_i = 0 이다. 모든 ii 에 대해 성립하므로 rr 개의 행은 독립이다.

셋째, 그 행들이 행공간을 생성한다

0인 행은 결합에 아무것도 보태지 않으므로, RR 의 행공간은 0이 아닌 행들이 생성하는 공간과 같다. (5)에 의해 그것이 곧 AA 의 행공간이다.

둘째와 셋째를 합치면 RR 의 0이 아닌 행들이 행공간의 기저이고, 그 개수가 rr 이므로

dimC(AT)=r\dim C(A^{\mathsf{T}}) = r

이다. 열공간의 차원도 rr 이었으므로 두 값이 같다.

같은 행렬에서 피벗 열의 개수와 R 의 0이 아닌 행의 개수가 둘 다 r 이다.
왼쪽은 \R^3 안의 차원을, 오른쪽은 \R^4 안의 차원을 세고 있는데 값이 같다.

Figure 1:같은 행렬에서 피벗 열의 개수와 RR 의 0이 아닌 행의 개수가 둘 다 rr 이다. 왼쪽은 R3\R^3 안의 차원을, 오른쪽은 R4\R^4 안의 차원을 세고 있는데 값이 같다.

행렬을 가로로 읽든 세로로 읽든 독립적인 정보의 양은 같다. 그래서 랭크라는 하나의 숫자를 쓸 수 있다.


3. 각 공간의 기저 구하기

네 공간의 기저를 (1)의 예제로 실제로 구해 보자. L7에서 구한 기약 사다리꼴은 다음과 같았다.

R=[120200120000]R = \begin{bmatrix} 1 & 2 & 0 & -2 \\ 0 & 0 & 1 & 2 \\ 0 & 0 & 0 & 0 \end{bmatrix}

행공간 — RR 의 0이 아닌 행

2절에서 증명한 대로이다.

(1,2,0,2),(0,0,1,2)(1,\, 2,\, 0,\, -2), \qquad (0,\, 0,\, 1,\, 2)

열공간 — 원래 AA 의 피벗 열

L9에서 피벗 열이 C(A)C(A) 의 기저임을 보였다. 피벗은 1열과 3열에 있으므로

[123],[268]\begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix}, \qquad \begin{bmatrix} 2 \\ 6 \\ 8 \end{bmatrix}

이다. 여기서 반드시 주의할 것이 있다.

왜 그런지 작은 예로 보자.

A=[1236]    R=[1200]A = \begin{bmatrix} 1 & 2 \\ 3 & 6 \end{bmatrix} \;\longrightarrow\; R = \begin{bmatrix} 1 & 2 \\ 0 & 0 \end{bmatrix}

C(A)C(A)(1,3)(1,3) 이 만드는 직선이고 C(R)C(R)(1,0)(1,0) 이 만드는 직선이다. 완전히 다른 직선이다.

피벗이 1열에 있다는 사실은 둘이 같지만, 그 열이 가리키는 방향은 전혀 다르다.

Figure 2:피벗이 1열에 있다는 사실은 둘이 같지만, 그 열이 가리키는 방향은 전혀 다르다.

행공간은 왜 보존되고 열공간은 왜 바뀌는가. 소거는 R=EAR = EA 로 쓸 수 있고 EE 는 가역이다. 행 관점으로 보면 RR 의 각 행이 AA 의 행들의 결합이므로 행공간이 유지된다. 반면 열 관점으로 보면 RR 의 각 열은 AA 의 해당 열에 EE 를 곱한 것이라 방향이 달라진다.

C(R)={Ev:vC(A)}C(R) = \{\, E\vv{v} : \vv{v} \in C(A) \,\}

다만 열들 사이의 종속 관계는 그대로이다. EE 가 가역이므로

Ax=0    EAx=0    Rx=0A\vv{x} = \vv{0} \;\Longleftrightarrow\; EA\vv{x} = \vv{0} \;\Longleftrightarrow\; R\vv{x} = \vv{0}

이고, 따라서 N(A)=N(R)N(A) = N(R) 이다. 어느 열이 다른 열들로 만들어지는지가 두 행렬에서 같다는 뜻이고, 그래서 피벗 열의 번호RR 에서 읽어도 된다.

영공간 — 특수해

L7에서 구한 것이다.

[2100],[2021]\begin{bmatrix} -2 \\ 1 \\ 0 \\ 0 \end{bmatrix}, \qquad \begin{bmatrix} 2 \\ 0 \\ -2 \\ 1 \end{bmatrix}

좌영공간 — 0이 된 행이 알려 준다

ATA^{\mathsf{T}} 에 같은 절차를 적용해도 되지만, 이미 한 소거에서 읽을 수도 있다. R=EAR = EA 에서 RRii 번째 행이 0이라 하자. 그 행은 EEii 번째 행과 AA 의 곱이므로

(E의 i)A=0(E\text{의 } i \text{행}) \, A = \vv{0}

이고, 이는 EE 의 그 행이 좌영공간에 있다는 뜻이다. 0인 행은 mrm - r 개이고 EE 가 가역이라 그 행들은 독립이므로, 이것이 좌영공간의 기저가 된다.

이 예제에서 0이 된 행은 하나이고, L8의 (4)에서 그 결합을 이미 구했다.

y=[111],yTA=0\vv{y} = \begin{bmatrix} -1 \\ -1 \\ 1 \end{bmatrix}, \qquad \vv{y}^{\mathsf{T}}A = \vv{0}

차원이 mr=32=1m - r = 3 - 2 = 1 이므로 이 하나가 기저이다.


4. 차원의 기본정리

네 차원을 두 줄로 묶으면 다음과 같다.

정의역 Rn\R^n 은 행공간과 영공간으로, 공역 Rm\R^m 은 열공간과 좌영공간으로 나뉜다. 차원의 합이 정확히 맞아떨어지므로 남는 것도 없고 모자라는 것도 없다.

예제로 확인하면 2+2=4=n2 + 2 = 4 = n 이고 2+1=3=m2 + 1 = 3 = m 이다.


5. 행렬이 하는 일

이제 네 공간을 한 그림에 놓는다.

네 부분공간의 지도. 왼쪽이 정의역, 오른쪽이 공역이다.

Figure 3:네 부분공간의 지도. 왼쪽이 정의역, 오른쪽이 공역이다.

AA 가 무엇을 하는지 이 그림으로 읽어 보자.

영공간은 0으로 간다

정의상 xN(A)\vv{x} \in N(A) 이면 Ax=0A\vv{x} = \vv{0} 이다. 영공간 전체가 원점 하나로 뭉개진다.

행공간은 열공간으로 일대일 대응된다

먼저 행공간과 영공간이 원점만 공유한다는 것을 보이자. x\vv{x} 가 둘 다에 속한다고 하면, 행공간은 C(AT)C(A^{\mathsf{T}}) 이므로 어떤 z\vv{z} 에 대해 x=ATz\vv{x} = A^{\mathsf{T}}\vv{z} 이고, 동시에 Ax=0A\vv{x} = \vv{0} 이다. 그러면 다음을 계산할 수 있다.

xTx=(ATz)Tx=zTAx=zT0=0\vv{x}^{\mathsf{T}}\vv{x} = (A^{\mathsf{T}}\vv{z})^{\mathsf{T}}\vv{x} = \vv{z}^{\mathsf{T}}A\,\vv{x} = \vv{z}^{\mathsf{T}}\vv{0} = 0

그런데 xTx=x12++xn2\vv{x}^{\mathsf{T}}\vv{x} = x_1^2 + \cdots + x_n^2 이므로 이 값이 0이려면 모든 성분이 0이어야 한다. 따라서 x=0\vv{x} = \vv{0} 이다.

C(AT)N(A)={0}C(A^{\mathsf{T}}) \cap N(A) = \{\vv{0}\}

이제 행공간의 두 벡터 x,x\vv{x}, \vv{x}' 이 같은 곳으로 간다고 하자. Ax=AxA\vv{x} = A\vv{x}' 이면 A(xx)=0A(\vv{x} - \vv{x}') = \vv{0} 이므로 xx\vv{x} - \vv{x}' 은 영공간에 있다. 동시에 행공간은 부분공간이므로 두 원소의 차도 행공간에 있다. (20)에 의해 그 차는 영벡터이고, 따라서 x=x\vv{x} = \vv{x}' 이다. 서로 다른 곳에서 출발하면 서로 다른 곳에 도착한다.

상이 C(A)C(A) 전체인 것도 따라온다. 행공간의 기저 rr 개를 AA 로 보내면, 일대일이므로 그 상들도 독립이다. L9의 Theorem 1 증명에서 실제로 쓴 것은 한쪽이 생성하고 다른 쪽이 독립이라는 것뿐이었으므로, rr 차원 공간 안의 독립인 벡터는 많아야 rr 개이다. 지금 C(A)C(A) 안에 독립인 벡터가 정확히 rr 개 있고 dimC(A)=r\dim C(A) = r 이므로, 이들이 더 늘어날 수 없다. 즉 이들이 C(A)C(A) 의 기저이고 상은 C(A)C(A) 전체이다.

L6에서 "영공간의 크기가 잃어버린 정보의 양"이라고 한 것이 이 그림에서 분명해진다. 정의역 중 행공간에 해당하는 부분은 하나도 잃지 않고 그대로 살아 건너가고, 영공간에 해당하는 부분은 통째로 사라진다.

왜 직각으로 그렸는가

Figure 3에서 각 공간을 위아래로 나누어 그렸다. 실제로 이 두 쌍은 서로 직각을 이룬다. (19)의 계산이 그 실마리이다. 거기서 우리는 xTx\vv{x}^{\mathsf{T}}\vv{x} 라는 양을 썼는데, 이것은 벡터의 길이와 관련된 값이다.

그런데 지금까지 열 강의를 오면서 길이나 각도라는 개념을 정의한 적이 없다. 두 쌍이 직각이라는 것을 제대로 말하려면 먼저 그 개념을 세워야 한다. 뒤에서 다시 다룬다.


마치며...

이번 강의에서 얻은 것을 정리하면 다음과 같다.

부분공간기저를 구하는 법사는 곳차원
행공간 C(AT)C(A^{\mathsf{T}})RR 의 0이 아닌 행Rn\R^nrr
영공간 N(A)N(A)특수해Rn\R^nnrn - r
열공간 C(A)C(A)AA 피벗 열Rm\R^mrr
좌영공간 N(AT)N(A^{\mathsf{T}})0이 된 행에 대응하는 EE 의 행Rm\R^mmrm - r

행렬 하나에 부분공간이 넷 딸려 오고, 정의역은 행공간과 영공간으로, 공역은 열공간과 좌영공간으로 나뉜다. 차원의 합이 각각 nnmm 이 되어 남거나 겹치는 부분이 없다.

그리고 행랭크와 열랭크가 같다는, 전혀 자명하지 않은 사실을 증명했다. 행공간과 열공간은 아예 다른 공간에 사는데도 차원이 같다.

AA 가 하는 일은 행공간을 열공간으로 옮기고 영공간을 0으로 뭉개는 것, 그것이 전부이다. 이 그림은 앞으로 여러 번 다시 꺼내게 된다.

다음 강의에서는 이 지도에서 가장 단순한 지형을 살펴본다. 랭크가 1인 행렬이다. L3에서 열 하나와 행 하나의 곱으로 만들어지는 행렬을 잠깐 보았는데, 그것이 모든 행렬을 쌓아 올리는 벽돌이 된다.


이번 강의의 내용을 파이썬으로 확인해 보려면 L10 실습 노트북으로 넘어가면 된다. 네 부분공간의 기저를 모두 구해 차원의 합을 확인하고, 열공간의 기저를 RR 에서 잘못 가져오면 어떤 일이 생기는지 직접 볼 수 있다.