Chapter 06

기저·차원·계수

행렬에 숫자가 백 개 적혀 있어도 그 안에 든 "진짜 정보"는 훨씬 적을 수 있습니다. 어떤 열이 다른 열들의 합이라면 그 열은 새로운 것을 말해 주지 않습니다. 이 장은 그 "진짜 정보의 양"을 재는 세 개념을 세웁니다. 공간을 빠짐없이, 군더더기 없이 재는 자인 기저, 그 자의 눈금 수인 차원, 그리고 행렬이 실제로 품은 독립 방향의 수인 계수입니다. 계수 하나만 알면 행렬이 만드는 네 개의 부분공간 크기가 모두 정해지고, Ax=bA\mathbf{x} = \mathbf{b}에 해가 있는지, 몇 개나 있는지도 정해집니다. 마지막에는 이 숫자들이 전기 회로에서 "독립인 루프가 몇 개인가"라는 오래된 질문에 답하는 것을 봅니다.

이 수식이 없었다면전기 회로의 방정식 세우기

가지(branch)가 수십 개인 회로를 풀려고 키르히호프 법칙을 세우면 곧 문제가 생깁니다. 마디마다 "들어온 전류 = 나간 전류"를 쓰고, 눈에 보이는 고리마다 "전압 강하의 합 = 0"을 쓰면 식이 미지수보다 훨씬 많아집니다. 그중 어느 것이 새로운 정보이고 어느 것이 이미 쓴 식의 조합일까요? 몇 개를 골라야 충분하고, 몇 개를 넘기면 군더더기일까요?

1847년 구스타프 키르히호프는 바로 이 문제를 다룬 논문에서, 연결된 회로의 독립인 고리 방정식은 정확히 가지 수 − 마디 수 + 1개이고 이를 고르는 체계적인 방법이 있음을 보였습니다. 오늘날의 언어로 말하면 이것은 회로의 연결 행렬이 가진 계수와 영공간의 차원에 관한 정리입니다. 회로 시뮬레이터가 방정식을 빠짐없이, 그러나 중복 없이 세우는 원리가 이 장의 내용입니다.

식이 미지수보다 많다→어느 식이 군더더기?→계수와 차원→독립 루프 = E − N + 1

선형 독립, Ax = 0으로 다시 보기

세 센서가 주는 정보는 정말 세 가지일까

공장의 한 공정에서 세 센서가 매번 세 성분짜리 측정 벡터를 기록한다고 합시다. 그런데 세 번째 센서의 값이 언제나 첫 번째의 두 배와 두 번째의 합이라면, 세 번째 센서는 아무 새 정보도 주지 않습니다. 벡터가 둘일 때는 "한 직선 위에 있나"를 눈으로 보면 되지만, 벡터가 열 개, 성분이 백 개라면 어떻게 판정할까요?

1장에서 선형 독립(linear independence)을 "어느 벡터도 나머지의 선형 결합이 아니다"로 정의했습니다(1장 5절). 벡터들을 행렬의 열로 세우면 이 정의는 연립방정식 하나로 바뀝니다. 선형 결합 c1v1+⋯+cnvnc_1\mathbf{v}_1 + \cdots + c_n\mathbf{v}_n은 바로 AcA\mathbf{c}이기 때문입니다.

정의 6.1 (선형 독립, 행렬로) 열벡터 v1,…,vn∈Rm\mathbf{v}_1, \dots, \mathbf{v}_n \in \mathbb{R}^m을 열로 갖는 m×nm \times n 행렬을 AA라 하자. 이 벡터들이 선형 독립이라는 것은 Ax=0 의 해가 x=0 하나뿐이다A\mathbf{x} = \mathbf{0} \ \text{의 해가}\ \mathbf{x} = \mathbf{0}\ \text{하나뿐이다} 라는 뜻이다. 0이 아닌 해 x\mathbf{x}가 있으면 x1v1+⋯+xnvn=0x_1\mathbf{v}_1 + \cdots + x_n\mathbf{v}_n = \mathbf{0}이 곧 종속 관계식이다.

판정은 3장의 소거 그대로입니다. 소거 뒤 모든 열에 피벗이 있으면 자유 변수가 없어 해는 0뿐이고(독립), 피벗이 없는 열이 하나라도 있으면 그 열의 변수를 1로 두고 거꾸로 풀어 0이 아닌 해를 만들 수 있습니다(종속). 여기서 바로 강력한 결론이 나옵니다.

정리 6.1 (너무 많은 벡터는 종속이다) Rm\mathbb{R}^m의 벡터 nn개에서 n>mn > m이면 반드시 선형 종속이다.

증명. 피벗은 행마다 최대 하나이므로 피벗 수는 mm 이하다. 열이 n>mn > m개이므로 피벗이 없는 열, 즉 자유 변수가 적어도 n−mn - m개 있다. 자유 변수 하나를 1로 두면 Ax=0A\mathbf{x} = \mathbf{0}의 0이 아닌 해가 생긴다. ∎

v1v2v3독립: 계수 3생성 = ℝ³ 전체v1v2v3평면에 눕다: 계수 2v₃ = v₁ + v₂ → 생성 = 평면v1v2v3한 직선 위: 계수 1모두 v₁의 배수 → 생성 = 직선
그림 6-1. ℝ³의 세 벡터가 만드는 생성. 왼쪽: 독립이면 세 벡터가 평행육면체를 이루며 공간 전체를 채운다. 가운데: v₃가 v₁, v₂의 결합이면 세 벡터가 한 평면에 눕는다. 오른쪽: 모두 한 직선 위에 있으면 생성은 직선뿐이다. 괄호 안의 수가 곧 이 장의 주인공인 계수다.
예제 6.1 · 종속 관계식 찾기

v1=(1,2,0), v2=(0,1,1), v3=(2,5,1)\mathbf{v}_1 = (1, 2, 0),\ \mathbf{v}_2 = (0, 1, 1),\ \mathbf{v}_3 = (2, 5, 1)은 독립인가?

  1. 열로 세워 소거한다. 행 2 − 2·행 1, 그다음 행 3 − 행 2: [102215011]→[102011011]→[102011000]\begin{bmatrix}1&0&2\\2&1&5\\0&1&1\end{bmatrix} \to \begin{bmatrix}1&0&2\\0&1&1\\0&1&1\end{bmatrix} \to \begin{bmatrix}1&0&2\\0&1&1\\0&0&0\end{bmatrix}
  2. 3열에 피벗이 없다. 자유 변수 x3=1x_3 = 1로 두고 거꾸로 풀면 x2=−1x_2 = -1, x1=−2x_1 = -2.
  3. 따라서 −2v1−v2+v3=0-2\mathbf{v}_1 - \mathbf{v}_2 + \mathbf{v}_3 = \mathbf{0}, 즉 v3=2v1+v2\mathbf{v}_3 = 2\mathbf{v}_1 + \mathbf{v}_2. 세 벡터는 종속이고 한 평면 위에 있다.

아래 시뮬레이터에서 세 열벡터를 직접 고쳐 보세요. 소거로 피벗을 세어 생성이 공간 전체인지, 평면인지, 직선인지 보여 주고, 종속이면 관계식을 정수 계수로 찾아 줍니다. 캔버스를 좌우로 끌면 시점이 돌아갑니다.

SIMULATOR

세 벡터는 독립인가: 생성과 종속 관계식

좌우로 끌어 돌려 보기
열 = v₁, v₂, v₃
피벗 수 = 계수—
판정—
생성—
—
해볼 것: ① '예제 6.1'에서 관계식이 −2v₁ − v₂ + v₃ = 0으로 나오는지 확인하세요. ② v₃의 셋째 성분을 1에서 1.5로 바꾸면 평면에서 빠져나와 독립이 됩니다. ③ '영벡터가 섞인 경우'는 항상 종속입니다. 0·v₁ + 0·v₂ + 1·0 = 0이니까요. 모델: 부분 피벗팅 소거, 절댓값 10⁻⁹ 이하는 0으로 봅니다. 관계식은 분모 12 이하의 분수로 나타낼 수 있으면 정수 계수로 바꿉니다.

기저: 공간을 재는 자

좌표는 어디에서 오는가

지도에서 위치를 "동쪽으로 3, 북쪽으로 1"이라고 말할 수 있는 것은 동쪽과 북쪽이라는 두 기준 방향을 정해 두었기 때문입니다. 그런데 도시의 길이 비스듬히 나 있다면 "큰길을 따라 2블록, 골목을 따라 1블록"이 더 편할 수 있습니다. 어떤 기준 방향들이면 모든 위치를 빠짐없이, 그리고 단 한 가지 방법으로 말할 수 있을까요?

정의 6.2 (기저) 벡터 공간(또는 부분공간) VV의 벡터 b1,…,bk\mathbf{b}_1, \dots, \mathbf{b}_k가 다음 두 조건을 만족하면 VV의 기저(basis)라 한다.
  1. 생성: VV의 모든 벡터가 b1,…,bk\mathbf{b}_1, \dots, \mathbf{b}_k의 선형 결합이다. (빠짐이 없다)
  2. 독립: b1,…,bk\mathbf{b}_1, \dots, \mathbf{b}_k가 선형 독립이다. (군더더기가 없다)

두 조건은 서로 반대 방향으로 당깁니다. 생성을 보장하려면 벡터가 많을수록 좋고, 독립을 보장하려면 적을수록 좋습니다. 기저는 그 균형점, 즉 생성하는 가장 작은 집합이자 독립인 가장 큰 집합입니다. 기저가 왜 좋은지는 다음 정리가 말해 줍니다.

정리 6.2 (좌표는 하나뿐이다) b1,…,bk\mathbf{b}_1, \dots, \mathbf{b}_k가 VV의 기저이면, VV의 모든 벡터 x\mathbf{x}는 x=c1b1+⋯+ckbk\mathbf{x} = c_1\mathbf{b}_1 + \cdots + c_k\mathbf{b}_k로 정확히 한 가지 방법으로 쓸 수 있다. 이 계수 (c1,…,ck)(c_1, \dots, c_k)를 기저에 대한 x\mathbf{x}의 좌표(coordinates)라 한다.

증명. 생성 조건 때문에 적어도 한 가지 방법은 있다. 두 가지 ∑cibi=∑dibi\sum c_i\mathbf{b}_i = \sum d_i\mathbf{b}_i가 있다면 빼서 ∑(ci−di)bi=0\sum (c_i - d_i)\mathbf{b}_i = \mathbf{0}. 독립이므로 모든 ci−di=0c_i - d_i = 0이다. ∎

한 공간의 기저는 하나가 아닙니다. ℝ²의 표준 기저 e1=(1,0),e2=(0,1)\mathbf{e}_1 = (1,0), \mathbf{e}_2 = (0,1)에서 좌표는 성분 그 자체이지만, 평행하지 않은 아무 두 벡터도 ℝ²의 기저입니다. 같은 점이 기저마다 다른 좌표를 갖습니다.

e₁e₂x = (3, 1)x = 3e₁ + 1e₂ → 좌표 (3, 1)표준 기저 e₁, e₂b₁b₂x = (3, 1)x = 2b₁ + 1b₂ → 좌표 (2, 1)기저 b₁ = (1, 1), b₂ = (1, −1)
그림 6-2. 같은 점 x = (3, 1)을 두 기저로 재기. 왼쪽: 표준 기저에서는 e₁로 3칸, e₂로 1칸. 오른쪽: 기저 b₁ = (1, 1), b₂ = (1, −1)이 만드는 비스듬한 격자에서는 b₁로 2칸, b₂로 1칸이므로 좌표는 (2, 1)이다. 점은 그대로이고 자만 바뀌었다.
예제 6.2 · 다른 기저에서의 좌표

기저 b1=(1,1), b2=(1,−1)\mathbf{b}_1 = (1, 1),\ \mathbf{b}_2 = (1, -1)에서 x=(3,1)\mathbf{x} = (3, 1)의 좌표를 구하라.

  1. c1b1+c2b2=xc_1\mathbf{b}_1 + c_2\mathbf{b}_2 = \mathbf{x}는 기저를 열로 세운 연립방정식이다: [111−1][c1c2]=[31]\begin{bmatrix}1&1\\1&-1\end{bmatrix}\begin{bmatrix}c_1\\c_2\end{bmatrix} = \begin{bmatrix}3\\1\end{bmatrix}.
  2. 두 식을 더하면 2c1=42c_1 = 4, 빼면 2c2=22c_2 = 2. 따라서 c1=2, c2=1c_1 = 2,\ c_2 = 1.
  3. 검산: 2(1,1)+1(1,−1)=(3,1)2(1,1) + 1(1,-1) = (3, 1). 좌표를 구하는 일은 언제나 "기저 행렬 BB로 Bc=xB\mathbf{c} = \mathbf{x}를 푸는 일"이다. 기저를 바꾸는 체계적인 방법은 7장에서 다룬다.
SIMULATOR

내 기저로 좌표 재기

b₁, b₂, x를 끌어 보세요
표준 좌표 x—
기저 좌표 (c₁, c₂)—
det [b₁ b₂]—
기저인가—
해볼 것: ① x를 끌며 비스듬한 격자의 눈금을 세어 좌표를 읽고 숫자와 비교하세요. ② '거의 평행한 두 벡터'에서 x를 조금만 움직여도 좌표가 크게 출렁입니다. 기저는 맞지만 나쁜 자입니다. ③ b₂를 b₁과 한 직선 위에 놓으면 격자가 사라지고 좌표가 정해지지 않습니다. 모델: 2×2 연립방정식 Bc = x를 크라메르 공식으로 풉니다. 끈 점은 0.1 단위로 맞춰집니다.

차원: 모든 기저는 크기가 같다

평면은 왜 "2"차원인가

원점을 지나는 평면의 기저는 무수히 많습니다. 어떤 사람은 두 벡터를, 어떤 사람은 다른 두 벡터를 고릅니다. 그런데 누군가 같은 평면의 기저를 세 벡터로 만들었다고 주장한다면 그 사람이 틀렸다고 확신할 수 있을까요? "차원"이라는 단어가 의미를 가지려면 이것이 보장되어야 합니다.

정리 6.3 (기저의 크기는 일정하다) v1,…,vm\mathbf{v}_1, \dots, \mathbf{v}_m과 w1,…,wn\mathbf{w}_1, \dots, \mathbf{w}_n이 모두 같은 공간 VV의 기저이면 m=nm = n이다.

증명. n>mn > m이라 가정하자. 각 wj\mathbf{w}_j는 VV에 있으므로 v\mathbf{v}들의 결합이다: wj=∑iaijvi\mathbf{w}_j = \sum_i a_{ij}\mathbf{v}_i. 행렬로 쓰면 W=VAW = VA이고, AA는 m×nm \times n이다. n>mn > m이므로 정리 6.1에 의해 Ax=0A\mathbf{x} = \mathbf{0}의 0이 아닌 해 x\mathbf{x}가 있다. 그러면 Wx=VAx=0W\mathbf{x} = VA\mathbf{x} = \mathbf{0}이 되어 w\mathbf{w}들이 종속이라는 모순이 생긴다. m>nm > n도 같은 논리로 불가능하다. ∎

정의 6.3 (차원) 공간 VV의 기저가 가진 벡터의 수를 VV의 차원(dimension)이라 하고 dim⁡V\dim V로 쓴다. 영공간 {0}\{\mathbf{0}\}의 차원은 0으로 정한다(기저는 빈 집합).

증명의 핵심은 "독립인 벡터는 생성하는 벡터보다 많을 수 없다"는 것입니다. 이 한 줄에서 기저를 다루는 실용적인 규칙들이 모두 나옵니다.

정리 6.4 (차원을 알 때의 지름길) dim⁡V=k\dim V = k라 하자.
  1. VV의 독립인 벡터는 kk개를 넘을 수 없고, VV를 생성하는 벡터는 kk개보다 적을 수 없다.
  2. VV의 벡터 정확히 kk개가 독립이면 자동으로 생성하고, 생성하면 자동으로 독립이다. 둘 중 하나만 확인하면 기저다.
  3. 독립인 집합은 벡터를 더해 기저로 늘릴 수 있고, 생성하는 집합은 군더더기를 빼서 기저로 줄일 수 있다.
공간기저의 예차원
Rn\mathbb{R}^n표준 기저 e1,…,en\mathbf{e}_1, \dots, \mathbf{e}_nn
ℝ³에서 원점을 지나는 평면 x+y+z=0x + y + z = 0(1,−1,0), (1,0,−1)(1, -1, 0),\ (1, 0, -1)2
차수 2 이하 다항식 a+bt+ct2a + bt + ct^21, t, t21,\ t,\ t^23
2×2 행렬 전체칸 하나만 1인 행렬 4개4
2×2 대칭 행렬[1000],[0110],[0001]\begin{bmatrix}1&0\\0&0\end{bmatrix}, \begin{bmatrix}0&1\\1&0\end{bmatrix}, \begin{bmatrix}0&0\\0&1\end{bmatrix}3
8×8 화소 블록(흑백 사진의 한 조각)화소 하나씩, 또는 JPEG의 DCT 무늬 64개64
같은 공간, 다른 자 마지막 줄이 기저를 바꾸는 이유를 보여 줍니다. 8×8 블록은 화소 64개로 재도 되고, JPEG처럼 천천히 변하는 무늬부터 빠르게 변하는 무늬까지 64개의 코사인 무늬(DCT 기저)로 재도 됩니다. 차원은 둘 다 64지만, 두 번째 자로 재면 대부분의 좌표가 0에 가까워 버리기 쉽습니다. 차원은 공간의 성질이고, 어떤 기저를 고르는가는 문제를 쉽게 만드는 선택입니다.

계수: 피벗의 개수가 말해 주는 것

표 속에 든 진짜 정보의 양

3×4 행렬에는 숫자가 12개 있습니다. 그런데 셋째 행이 첫째와 둘째 행의 합이고, 둘째 열이 첫째 열의 두 배라면 실제로 독립인 방향은 몇 개일까요? 행으로 세면 몇이고, 열로 세면 몇일까요? 둘이 다를 수도 있을까요?

정의 6.4 (계수) 행렬 AA를 소거했을 때 나오는 피벗의 수를 AA의 계수(rank)라 하고 rr 또는 rank⁡A\operatorname{rank} A로 쓴다.

소거를 끝까지 밀어 피벗을 1로, 피벗 위아래를 모두 0으로 만든 것을 기약 행 사다리꼴(reduced row echelon form, RREF) RR이라 합니다. RR을 보면 피벗 열과 자유 열이 한눈에 드러납니다. 행 연산이 무엇을 바꾸고 무엇을 지키는지 정확히 알면 계수의 뜻이 보입니다.

정리 6.5 (행 계수 = 열 계수)
  1. A의 피벗 열이 열공간 C(A)C(A)의 기저다. 행 연산은 열들 사이의 선형 관계(Ax=0A\mathbf{x} = \mathbf{0}의 해)를 바꾸지 않으므로, RR에서 독립인 열의 위치가 AA에서도 독립인 열의 위치다. 단, 기저로 쓰는 것은 RR이 아니라 원래 AA의 열이다.
  2. R의 0이 아닌 행이 행공간 C(AT)C(A^{\mathsf T})의 기저다. 행 연산은 행들의 결합만 만들므로 행공간을 바꾸지 않고, 0이 아닌 행들은 피벗 위치 때문에 독립이다.
  3. 따라서 dim⁡C(A)=dim⁡C(AT)=r\dim C(A) = \dim C(A^{\mathsf T}) = r. 독립인 열의 수와 독립인 행의 수는 언제나 같다.
예제 6.3 · 3×4 행렬의 계수 A=[120124143615]  →  [120100120012]  →  R=[120100120000]A = \begin{bmatrix}1&2&0&1\\2&4&1&4\\3&6&1&5\end{bmatrix} \;\to\; \begin{bmatrix}1&2&0&1\\0&0&1&2\\0&0&1&2\end{bmatrix} \;\to\; R = \begin{bmatrix}1&2&0&1\\0&0&1&2\\0&0&0&0\end{bmatrix}
  1. 행 2 − 2·행 1, 행 3 − 3·행 1, 그다음 행 3 − 행 2. 피벗은 1열과 3열에 있으므로 r=2r = 2.
  2. 열공간의 기저: A의 1열과 3열 (1,2,3), (0,1,1)(1, 2, 3),\ (0, 1, 1). 실제로 2열 = 2·(1열), 4열 = 1열 + 2·(3열)이다.
  3. 행공간의 기저: R의 두 행 (1,2,0,1), (0,0,1,2)(1, 2, 0, 1),\ (0, 0, 1, 2). 실제로 A의 3행 = 1행 + 2행이다.
  4. 열 4개 중 독립은 2개, 행 3개 중 독립도 2개. 숫자 12개에 든 정보는 "벡터 2개 + 섞는 법"이다.

아래 계산기는 행렬을 RREF까지 소거하고 피벗 열, 행공간의 기저, 그리고 다음 절에서 다룰 두 영공간의 기저까지 모두 보여 줍니다. 칸을 고치면 바로 다시 계산합니다.

SIMULATOR

RREF와 네 부분공간 계산기

A 직접 고치기
무작위 정수 행렬
크기 m × n—
계수 r—
r + dim N(A) = n—
r + dim N(Aᵀ) = m—
해볼 것: ① 예제 6.3에서 N(A)의 두 벡터가 (−2, 1, 0, 0), (−1, 0, −2, 1)인지, N(Aᵀ)가 (1, 1, −1)인지 확인하세요. ② 아무 칸이나 바꿔 계수가 바뀌는 순간 네 차원이 함께 바뀌는 것을 보세요. 합은 언제나 n과 m입니다. ③ '세로로 긴 4×3'에서 피벗 열은 A의 열을 그대로 가져온 것입니다(R의 열이 아님). 모델: 부분 피벗팅 RREF, 절댓값 10⁻⁹ 이하는 0. 표시는 분모 12 이하의 분수로 나타낼 수 있으면 분수로 보여 줍니다.

네 부분공간과 큰 그림

행렬 하나가 만드는 네 개의 세계

m×nm \times n 행렬 AA는 ℝⁿ의 벡터를 받아 ℝᵐ의 벡터를 내놓습니다. 입력 쪽에서는 "무엇이 0으로 사라지는가", 출력 쪽에서는 "무엇에 닿을 수 있는가"가 궁금합니다. 그리고 ATA^{\mathsf T}는 반대 방향으로 같은 질문을 합니다. 이 네 질문의 답은 서로 어떻게 엮여 있을까요?

C(A)열공간 ⊂ ℝᵐA의 열들의 결합. Ax가 닿을 수 있는 곳. 차원 r.
N(A)영공간 ⊂ ℝⁿAx = 0의 해 전체. A가 지워 버리는 입력. 차원 n − r.
C(Aᵀ)행공간 ⊂ ℝⁿA의 행들의 결합. 차원 r.
N(Aᵀ)왼쪽 영공간 ⊂ ℝᵐAᵀy = 0, 곧 yᵀA = 0ᵀ의 해. 행들의 종속 관계. 차원 m − r.
정리 6.6 (선형대수의 기본 정리, 1부: 차원) 계수가 rr인 m×nm \times n 행렬에서 dim⁡C(A)=r,dim⁡N(A)=n−r,dim⁡C(AT)=r,dim⁡N(AT)=m−r.\dim C(A) = r, \quad \dim N(A) = n - r, \quad \dim C(A^{\mathsf T}) = r, \quad \dim N(A^{\mathsf T}) = m - r.

증명. 첫째와 셋째는 정리 6.5다. 영공간은 자유 변수마다 하나씩 나오는 특수해(그 자유 변수만 1, 나머지 자유 변수는 0)가 기저다. 특수해들은 자유 변수 자리에서 서로 다른 칸에 1을 가지므로 독립이고, 모든 해는 자유 변수 값을 계수로 한 특수해들의 결합이다. 자유 변수는 n−rn - r개다. 넷째는 ATA^{\mathsf T}(크기 n×mn \times m, 계수 rr)에 같은 논리를 쓰면 m−rm - r이다. ∎

정리 6.7 (계수–퇴화차수 정리) m×nm \times n 행렬 AA에 대해 rank⁡A+dim⁡N(A)=n.\operatorname{rank} A + \dim N(A) = n.

영공간의 차원을 퇴화차수(nullity)라 한다. 말로 하면 "입력의 차원 = 살아남는 차원 + 사라지는 차원"이다. 피벗 변수 rr개와 자유 변수 n−rn - r개를 합하면 변수 nn개라는 사실을 다르게 쓴 것이지만, 기저나 소거를 언급하지 않는 형태라 어떤 선형 사상에도 그대로 쓸 수 있다.

차원만이 아닙니다. 네 공간은 둘씩 짝지어 직교합니다. Ax=0A\mathbf{x} = \mathbf{0}은 "AA의 모든 행과 x\mathbf{x}의 내적이 0"이라는 뜻이므로, 영공간의 모든 벡터는 행공간의 모든 벡터와 수직입니다.

정리 6.8 (선형대수의 기본 정리, 2부: 직교) ℝⁿ 안에서 N(A)⊥C(AT)N(A) \perp C(A^{\mathsf T})이고, ℝᵐ 안에서 N(AT)⊥C(A)N(A^{\mathsf T}) \perp C(A)이다. 차원이 r+(n−r)=nr + (n - r) = n으로 꼭 맞으므로 두 공간은 ℝⁿ을 빈틈없이 나눈다. 모든 x∈Rn\mathbf{x} \in \mathbb{R}^n은 x=xr+xn\mathbf{x} = \mathbf{x}_r + \mathbf{x}_n (xr∈C(AT), xn∈N(A)\mathbf{x}_r \in C(A^{\mathsf T}),\ \mathbf{x}_n \in N(A))으로 하나뿐인 방법으로 쪼개진다.
입력 공간 ℝⁿ출력 공간 ℝᵐ행공간 C(Aᵀ) · 차원 r영공간 N(A)차원 n − rxᵣxₙx = xᵣ + xₙ열공간 C(A) · 차원 r왼쪽 영공간 N(Aᵀ)차원 m − rAx = AxᵣA가 xᵣ을 Axᵣ으로 (행공간 ↔ 열공간은 일대일)A가 xₙ을 0으로
그림 6-3. 선형대수의 큰 그림. 입력 공간 ℝⁿ은 행공간(차원 r)과 영공간(차원 n − r)이 직각으로 나누고, 출력 공간 ℝᵐ은 열공간(차원 r)과 왼쪽 영공간(차원 m − r)이 나눈다. A는 영공간 성분 xₙ을 0으로 보내고, 행공간 성분 xᵣ을 열공간의 Ax로 보낸다. 그래서 Ax = Axᵣ이다. 행공간에서 열공간으로 가는 이 부분만 보면 A는 차원 r끼리의 일대일 대응이다.

아래 시뮬레이터는 2×3 행렬로 이 그림을 실제로 보여 줍니다. 왼쪽은 입력 공간 ℝ³, 오른쪽은 출력 공간 ℝ²입니다. x\mathbf{x}를 움직이면 행공간 성분과 영공간 성분으로 쪼개지고, 영공간 방향으로 아무리 밀어도 출력 AxA\mathbf{x}는 꿈쩍하지 않습니다.

SIMULATOR

큰 그림: 행공간 ⟂ 영공간, 그리고 Ax = Axᵣ

입력 ℝ³ · 좌우로 끌어 돌리기
출력 ℝ²
A (2×3)
행공간 C(Aᵀ)와 xᵣ영공간 N(A)와 xₙxAx
xᵣ (행공간 성분)—
xₙ (영공간 성분)—
xᵣ · xₙ—
Ax 와 Axᵣ—
해볼 것: ① '영공간 방향으로 밀기'를 누르면 x가 영공간을 따라 움직이는데 오른쪽의 Ax는 그대로입니다. ② xᵣ · xₙ이 언제나 0인지 보세요. 두 공간은 수직입니다. ③ 계수 1 프리셋에서는 영공간이 평면이 되고, 출력은 직선(열공간) 위에서만 움직입니다. 모델: 행공간 성분은 행들을 그람–슈미트로 정규직교화해 정사영으로 구합니다(8장의 사영). 3차원 그림은 고정된 앙각의 정사영입니다.

Ax = b의 네 가지 경우

풀어 보기 전에 답의 개수를 안다

미지수 1,000개, 식 1,200개인 연립방정식을 받았습니다. 해가 있을까요? 있다면 하나일까요, 무수히 많을까요? 식이 더 많으니 해가 없다고 단정해도 될까요? 계수 rr과 크기 m,nm, n만으로 상당 부분을 미리 말할 수 있습니다.

정리 6.9 (해가 있을 조건) 다음은 모두 같은 말이다.
  1. Ax=bA\mathbf{x} = \mathbf{b}에 해가 있다.
  2. b∈C(A)\mathbf{b} \in C(A), 즉 b\mathbf{b}는 AA의 열들의 결합이다.
  3. rank⁡[A∣b]=rank⁡A\operatorname{rank}[A \mid \mathbf{b}] = \operatorname{rank} A. (b\mathbf{b}를 덧붙여도 피벗이 늘지 않는다)
  4. 왼쪽 영공간의 모든 y\mathbf{y}에 대해 yTb=0\mathbf{y}^{\mathsf T}\mathbf{b} = 0. (행들 사이의 관계를 b\mathbf{b}도 지킨다)

해가 있으면 모든 해는 x=xp+xn\mathbf{x} = \mathbf{x}_p + \mathbf{x}_n이다. xp\mathbf{x}_p는 해 하나(자유 변수를 0으로 둔 특수해가 편하다), xn\mathbf{x}_n은 영공간의 아무 벡터다. 해의 "개수"는 영공간의 차원 n−rn - r이 정한다.

경우모양R의 모양Ax = b의 해대표적인 상황
r=m=nr = m = n정사각, 가역II언제나 정확히 하나회로·구조 해석의 잘 세운 방정식
r=n<mr = n \lt m세로로 긺, 열 완전 계수[I0]\begin{bmatrix}I\\0\end{bmatrix}0개 또는 1개측정이 미지수보다 많은 데이터 적합 → 최소제곱(8장)
r=m<nr = m \lt n가로로 긺, 행 완전 계수[IF]\begin{bmatrix}I & F\end{bmatrix}언제나 무수히 (자유 변수 n − m개)여유 자유도가 있는 로봇 팔, 제약이 적은 설계
r<m, r<nr \lt m,\ r \lt n계수 부족[IF00]\begin{bmatrix}I & F\\0&0\end{bmatrix}0개 또는 무수히중복 센서, 연결 행렬, 특이 시스템

열 완전 계수(r=nr = n)는 "영공간이 {0}\{\mathbf{0}\}", 즉 해가 있다면 유일하다는 뜻이고, 행 완전 계수(r=mr = m)는 "열공간이 ℝᵐ 전체", 즉 어떤 b\mathbf{b}든 해가 있다는 뜻입니다. 둘 다이면 정사각 가역 행렬입니다.

예제 6.4 · 완전한 해

예제 6.3의 AA와 b=(1,4,5)\mathbf{b} = (1, 4, 5)에 대해 Ax=bA\mathbf{x} = \mathbf{b}를 풀어라.

  1. 왼쪽 영공간 y=(1,1,−1)\mathbf{y} = (1, 1, -1)로 검사: yTb=1+4−5=0\mathbf{y}^{\mathsf T}\mathbf{b} = 1 + 4 - 5 = 0. 해가 있다. (b=(1,4,6)\mathbf{b} = (1, 4, 6)이었다면 −1≠0-1 \ne 0으로 해가 없다.)
  2. [A∣b][A \mid \mathbf{b}]를 소거하면 [120110012200000]\left[\begin{array}{rrrr|r}1&2&0&1&1\\0&0&1&2&2\\0&0&0&0&0\end{array}\right]. 자유 변수 x2=x4=0x_2 = x_4 = 0으로 두면 xp=(1,0,2,0)\mathbf{x}_p = (1, 0, 2, 0).
  3. 완전한 해: x=(1,0,2,0)+s(−2,1,0,0)+t(−1,0,−2,1)\mathbf{x} = (1, 0, 2, 0) + s(-2, 1, 0, 0) + t(-1, 0, -2, 1). 해 집합은 ℝ⁴ 안에서 원점을 지나지 않는 평면(차원 n−r=2n - r = 2)이다.
SIMULATOR

해의 개수 판정기: rank A와 rank [A | b]

[A | b] 직접 고치기 (마지막 열 = b)
r = m = n언제나 해 하나
r = n < m해 0개 또는 1개
r = m < n언제나 해가 무수히
r < m, r < n해 0개 또는 무수히
—
rank A—
rank [A | b]—
해—
해볼 것: ① 예제 6.4에서 b의 마지막 칸을 5에서 6으로 바꾸면 rank [A | b]가 3으로 늘며 해가 사라집니다. ② '세로로 긴 3×2'에서 '바깥으로'를 누르면 해가 없어지고, '안으로'를 누르면 정확히 하나가 됩니다. 무수히 많아지는 일은 없습니다. ③ '가로로 긴 2×3'에서는 b를 어떻게 바꿔도 해가 있습니다. 모델: [A | b]의 부분 피벗팅 RREF. '안으로'는 b = A·(무작위 정수 벡터), '바깥으로'는 b에 왼쪽 영공간 벡터를 더합니다.

계수 1 행렬과 수치 계수

백만 개의 숫자를 이천 개로

1,000×1,000 행렬의 모든 행이 한 행벡터의 배수라면, 숫자 백만 개를 저장할 필요가 있을까요? 행벡터 하나(1,000개)와 각 행의 배수(1,000개)만 있으면 됩니다. 계수가 작은 행렬은 겉보기보다 훨씬 작습니다. 그런데 실제 측정값에는 잡음이 섞여 "정확히 배수"인 경우가 없습니다. 그럴 때 계수는 몇이라고 말해야 할까요?

계수 1인 행렬은 모든 열이 한 벡터 u\mathbf{u}의 배수이고, 그 배수들을 모으면 행벡터 vT\mathbf{v}^{\mathsf T}가 됩니다. 곧 열벡터와 행벡터의 곱, 외적(outer product)입니다(2장 3절).

정리 6.10 (계수 1 행렬) A≠0A \ne 0의 계수가 1인 것은 A=uvTA = \mathbf{u}\mathbf{v}^{\mathsf T} (u∈Rm,v∈Rn\mathbf{u} \in \mathbb{R}^m, \mathbf{v} \in \mathbb{R}^n, 둘 다 0이 아님)로 쓸 수 있는 것과 같다. 이때 C(A)C(A)는 u\mathbf{u}가 놓인 직선, C(AT)C(A^{\mathsf T})는 v\mathbf{v}가 놓인 직선이고, Ax=u(vTx)A\mathbf{x} = \mathbf{u}(\mathbf{v}^{\mathsf T}\mathbf{x})는 "v\mathbf{v} 방향 성분을 재서 u\mathbf{u} 방향으로 내보내기"다. 저장에는 mnmn개 대신 m+nm + n개면 된다.
uvᵀ = (2, 1, 0, 1, 3)21013121013242026363039242026uvᵀ (4 × 5): 숫자 20개모든 행 = uᵢ · vᵀ모든 열 = vⱼ · u계수 = 1저장: u 4개 + v 5개 = 9개가운데 열은 v₃ = 0이라 전부 0
그림 6-4. 계수 1 행렬 uvᵀ의 모습. 칸 (i, j)의 값은 uᵢvⱼ이다. 모든 행은 vᵀ = (2, 1, 0, 1, 3)의 배수이고 모든 열은 u = (1, 2, 3, 2)의 배수라서, 색의 무늬가 가로·세로로 같은 모양을 되풀이한다. 숫자 20개를 9개로 저장할 수 있다.

계수 rr인 행렬은 계수 1 행렬 rr개의 합입니다. 사실 소거가 이미 그 분해를 줍니다. 예제 6.3의 피벗 열을 모은 CC와 RREF의 0이 아닌 행을 모은 RR을 곱하면 AA가 그대로 나옵니다.

A=CR=[102131][12010012]=[123][1201]+[011][0012]A = CR = \begin{bmatrix}1&0\\2&1\\3&1\end{bmatrix}\begin{bmatrix}1&2&0&1\\0&0&1&2\end{bmatrix} = \begin{bmatrix}1\\2\\3\end{bmatrix}\begin{bmatrix}1&2&0&1\end{bmatrix} + \begin{bmatrix}0\\1\\1\end{bmatrix}\begin{bmatrix}0&0&1&2\end{bmatrix}
CC는 열공간의 기저(m×rm \times r), RR은 행공간의 기저(r×nr \times n). RR의 각 열은 "A의 그 열을 피벗 열로 어떻게 만드는가"를 적은 좌표다. 숫자 12개가 6 + 8 = 14개로 늘어 보이지만, 큰 행렬에서 rr이 작으면 r(m+n)≪mnr(m + n) \ll mn이다.

수치 계수: 잡음 속에서 계수 세기

정확한 산수에서 계수는 정수이고 명확합니다. 하지만 부동소수점에서는 정확히 0인 피벗이 거의 나오지 않습니다. 세 번째 센서가 "거의" 앞 두 센서의 합이라면, 피벗은 0이 아니라 10−1510^{-15}이나 10−610^{-6} 같은 작은 수가 됩니다. 이것을 0으로 볼지는 허용 오차를 정해야 판단할 수 있습니다. 실무에서는 피벗보다 믿을 만한 지표로 특이값 σ1≥σ2≥⋯≥0\sigma_1 \ge \sigma_2 \ge \cdots \ge 0을 씁니다. 행렬이 공간을 각 방향으로 늘이는 배율이며, 0에 가까운 특이값의 개수가 "거의 사라지는 방향"의 수입니다(14장).

정의 6.5 (수치 계수) 허용 오차 τ\tau에 대해 σi>τ σ1\sigma_i > \tau\,\sigma_1인 특이값의 개수를 수치 계수(numerical rank)라 한다. 배정밀도 계산에서 흔히 τ≈max⁡(m,n)⋅2.2×10−16\tau \approx \max(m, n)\cdot 2.2\times 10^{-16}를 쓰고, 측정 데이터에서는 잡음 수준에 맞춰 더 크게 잡는다.
SIMULATOR

거의 종속인 센서: 수치 계수는 허용 오차가 정한다

소거의 피벗 |u₁₁|, |u₂₂|, |u₃₃|—
특이값 σ₁, σ₂, σ₃—
수치 계수—
해볼 것: ① ε = 0이어도 σ₃가 정확히 0이 아니라 10⁻¹⁶ 근처입니다. 부동소수점의 반올림입니다. τ를 10⁻¹⁴ 아래로 내리면 계수가 3으로 잘못 세어집니다. ② ε를 10⁻⁶으로 두고 τ를 10⁻⁸과 10⁻⁴ 사이에서 움직이면 계수가 3과 2 사이를 오갑니다. "센서 3은 새 정보인가"는 허용 오차를 정해야 답할 수 있습니다. ③ 잡음을 켜면 σ₃가 잡음 수준(약 10⁻³)까지 올라옵니다. 이 밑의 차이는 측정으로 구별할 수 없습니다. 모델: 6회 측정 × 센서 3개 행렬. 센서 3 = 센서 1 + 센서 2 + ε·(고정된 무늬). 특이값은 단측 야코비 SVD, 피벗은 부분 피벗팅 소거.

응용: 회로의 독립 루프 세기

키르히호프의 질문

마디 N개, 가지 E개인 회로에서 전류 법칙(KCL)과 전압 법칙(KVL)을 세우면 식이 몇 개 필요할까요? 고리는 셀 수 없이 많이 그릴 수 있지만, 그중 독립인 것은 몇 개일까요? 이 장의 도구로 답이 한 줄에 나옵니다.

회로를 그래프로 보고, 가지마다 임의로 방향을 정합니다. 가지 k가 마디 i에서 j로 가면 행렬의 k행에 i열은 −1, j열은 +1을 적습니다. 이것이 E×N 연결 행렬(incidence matrix) AA입니다. 네 부분공간이 모두 물리적인 뜻을 가집니다.

고리 ①고리 ②e1e2e3e4e51234연결 행렬 A (5 × 4)마디 1마디 2마디 3마디 4e1−1100e20−110e300−11e4−1001e50−101행 = 가지 (출발 −1, 도착 +1), 계수 r = N − 1 = 3독립 루프 = E − r = 5 − 3 = 2
그림 6-5. 마디 4개, 가지 5개인 회로(사각형과 대각선)와 그 연결 행렬. 대각선 e₅가 사각형을 두 고리로 나눈다. 독립 루프는 E − N + 1 = 5 − 4 + 1 = 2개이고, 바깥 큰 고리는 두 작은 고리의 합이라 새 식을 주지 않는다.
부분공간회로에서의 뜻차원 (연결 그래프)
N(A)N(A): Ax=0A\mathbf{x} = \mathbf{0}AxA\mathbf{x}는 각 가지의 전위차. 전위차가 모두 0이면 모든 마디의 전위가 같다. 영공간 = 상수 벡터 (1,…,1)(1, \dots, 1)1
C(AT)C(A^{\mathsf T})나머지 차원. 접지 하나를 정하면 남는 독립 전위의 수N − 1
N(AT)N(A^{\mathsf T}): ATy=0A^{\mathsf T}\mathbf{y} = \mathbf{0}ATyA^{\mathsf T}\mathbf{y}는 각 마디로 들어온 알짜 전류. 0이면 KCL을 만족하는 가지 전류 = 루프 전류E − N + 1
C(A)C(A)실현 가능한 전위차 패턴. 루프 전류와 수직 = 고리를 한 바퀴 돌면 전위차의 합이 0 (KVL)N − 1
정리 6.11 (독립 루프의 수) 마디 N개, 가지 E개, 연결 성분 c개인 그래프의 연결 행렬은 계수가 r=N−cr = N - c이고, 독립인 루프의 수는 dim⁡N(AT)=E−r=E−N+c\dim N(A^{\mathsf T}) = E - r = E - N + c 이다. 연결된 회로(c=1c = 1)면 E−N+1E - N + 1이다.

증명의 핵심. Ax=0A\mathbf{x} = \mathbf{0}이면 가지로 이어진 두 마디의 전위가 같으므로, 연결 성분마다 전위가 상수다. 따라서 dim⁡N(A)=c\dim N(A) = c이고, 계수–퇴화차수 정리로 r=N−cr = N - c. 왼쪽 영공간의 차원은 E−rE - r이다. ∎

그래프에서 고리를 하나도 만들지 않으면서 모든 마디를 잇는 가지 집합을 생성 나무(spanning tree)라 합니다. 나무에 들지 않은 가지 하나를 더할 때마다 정확히 하나의 고리가 생기고, 그렇게 얻은 E−N+1E - N + 1개의 기본 고리가 루프 공간의 기저가 됩니다. 이것이 키르히호프가 1847년에 쓴 방법이고, 회로 시뮬레이터가 KVL 식을 고르는 방법입니다. 아래에서 가지를 눌러 켜고 끄며 확인해 보세요.

SIMULATOR

가지를 켜고 끄며 독립 루프 세기

가지(선)를 눌러 켜고 끄기
마디 N · 가지 E · 성분 c—
rank A (소거로 계산)—
독립 루프 E − r—
—
해볼 것: ① '생성 나무'에서 가지를 하나 더할 때마다 루프가 정확히 하나씩 늘어납니다. ② 사각형의 대각선을 끄고 켜며 루프 수가 1과 2를 오가는지 보세요. ③ '끊어진 두 조각'에서는 계수가 N − 2가 됩니다. 성분마다 전위를 하나씩 따로 정할 수 있기 때문입니다. 모델: 가지 방향은 번호가 작은 마디에서 큰 마디로. 계수는 연결 행렬을 실제로 소거해 세고, 기본 고리는 너비 우선 탐색으로 만든 생성 나무에서 찾습니다.

이 도구가 쓰이는 곳

계수와 차원은 "얼마나 많은 정보가 있는가"를 묻는 모든 곳에 나옵니다. 이 책의 다음 장들과 시리즈의 다른 책에서 다시 만납니다.

핵심 정리

  1. 열벡터들이 독립 ⟺ Ax=0A\mathbf{x} = \mathbf{0}의 해가 0뿐 ⟺ 모든 열에 피벗. ℝᵐ의 벡터가 m개를 넘으면 반드시 종속이다.
  2. 기저 = 생성 + 독립. 기저가 있으면 좌표는 하나뿐이고, 좌표를 구하는 일은 Bc=xB\mathbf{c} = \mathbf{x}를 푸는 일이다. 한 공간에 기저는 무수히 많다.
  3. 한 공간의 모든 기저는 크기가 같고 그 수가 차원이다. 차원이 k인 공간에서 k개의 벡터는 독립이거나 생성하기만 하면 기저다.
  4. 계수 r = 피벗 수 = dim C(A) = dim C(Aᵀ). A의 피벗 열이 열공간의 기저, R의 0이 아닌 행이 행공간의 기저다. 행 계수 = 열 계수.
  5. 네 부분공간의 차원은 r, n − r, r, m − r. ℝⁿ에서 N(A) ⟂ C(Aᵀ), ℝᵐ에서 N(Aᵀ) ⟂ C(A). 계수–퇴화차수: rank A + dim N(A) = n.
  6. Ax=bA\mathbf{x} = \mathbf{b}는 b∈C(A)\mathbf{b} \in C(A)일 때만 풀리고, 해는 xp+N(A)\mathbf{x}_p + N(A). r = m = n: 하나, r = n < m: 0 또는 1, r = m < n: 무수히, 그 밖: 0 또는 무수히.
  7. 계수 1 행렬은 uvT\mathbf{u}\mathbf{v}^{\mathsf T}이고, 계수 r 행렬은 A = CR로 계수 1 행렬 r개의 합이다. 부동소수점에서는 허용 오차를 정한 수치 계수(특이값으로 센다)를 쓴다.
  8. 연결 행렬의 계수는 N − c, 독립 루프 수는 E − N + c. 키르히호프의 고리 방정식 수가 바로 왼쪽 영공간의 차원이다.

확인 퀴즈

Q1. ℝ⁴의 벡터 5개는?

정리 6.1. 4×5 행렬의 피벗은 최대 4개이므로 자유 변수가 적어도 하나 있어 Ax = 0의 0이 아닌 해가 생긴다. 생성은 보장되지 않는다. 5개가 모두 한 평면 위에 있을 수도 있다.

Q2. b1=(1,1), b2=(1,−1)\mathbf{b}_1 = (1, 1),\ \mathbf{b}_2 = (1, -1)을 기저로 할 때 x=(5,1)\mathbf{x} = (5, 1)의 좌표는?

c₁ + c₂ = 5, c₁ − c₂ = 1을 풀면 c₁ = 3, c₂ = 2. 검산: 3(1, 1) + 2(1, −1) = (5, 1).

Q3. 5×7 행렬의 계수가 3이다. 영공간과 왼쪽 영공간의 차원은?

m = 5, n = 7, r = 3. N(A) ⊂ ℝ⁷이고 차원 n − r = 4. N(Aᵀ) ⊂ ℝ⁵이고 차원 m − r = 2. 행공간과 열공간은 둘 다 3이다.

Q4. 열공간의 기저로 쓸 수 있는 것은?

행 연산은 열들의 선형 관계는 지키지만 열공간 자체는 바꾼다. 예제 6.3에서 R의 열은 모두 셋째 성분이 0이지만 A의 열공간에는 셋째 성분이 0이 아닌 벡터가 있다. 피벗이 어느 열에 있는지는 R로 알고, 기저 벡터는 A에서 가져온다. R의 0이 아닌 행은 행공간의 기저다.

Q5. 10×6 행렬 A의 계수가 6이다. 옳은 것은?

r = n = 6 < m = 10: 열 완전 계수. 영공간이 {0}이라 해가 있다면 유일하지만, 열공간은 ℝ¹⁰ 안의 6차원 부분공간이라 대부분의 b는 닿지 않는다. 그럴 때 가장 가까운 답을 찾는 것이 8장의 최소제곱이다. 정사각이 아니므로 가역이 아니다.

Q6. A=uvTA = \mathbf{u}\mathbf{v}^{\mathsf T}이고 u=(1,2,3)\mathbf{u} = (1, 2, 3), v=(1,0,−1,2)\mathbf{v} = (1, 0, -1, 2)이다. 옳지 않은 것은?

dim N(A) = n − r = 4 − 1 = 3이다. Ax = u(vᵀx)이므로 vᵀx = 0인 x, 즉 v와 수직인 ℝ⁴의 3차원 공간 전체가 영공간이다.

Q7. 마디 6개, 가지 9개인 연결된 회로에서 독립인 KVL(고리) 방정식은 몇 개인가?

E − N + 1 = 9 − 6 + 1 = 4. 연결 행렬(9×6)의 계수는 N − 1 = 5이고, 왼쪽 영공간(루프 전류의 공간)의 차원은 E − r = 4다. 독립인 KCL 방정식은 N − 1 = 5개다. 합하면 미지수(가지 전류) 9개와 꼭 맞는다.

Q8. 측정 행렬의 특이값이 4.1, 0.9, 3×10⁻⁷이고 측정 잡음 수준이 약 10⁻³이다. 이 데이터의 실질적인 계수는?

수치 계수는 허용 오차가 정한다. 3×10⁻⁷은 잡음(10⁻³)보다 수천 배 작으므로 그 방향의 "정보"는 측정으로 확인할 수 없다. 0.9는 잡음보다 훨씬 커서 진짜 방향이다. 피벗도 비슷한 정보를 주지만 특이값이 더 믿을 만한 지표다.