상세 컨텐츠

본문 제목

선형대수학 — 피벗 위치로 벡터들이 R^n을 생성하는지(Span) 판단하기

학습·과제

by 코드스키 2026. 7. 25. 13:56

본문

 피벗 위치로 Span과 Rank를 판단하는 글 대표 이미지
피벗 위치로 Span과 Rank를 판단하는 글 대표 이미지

선형대수 과제를 풀다 보면 "이 벡터들이 공간 전체를 채울 수 있냐"는 질문이 계속 나온다. 처음엔 이게 왜 중요한지 잘 몰랐는데, 알고 보니 머신러닝에서 특징 벡터가 충분한지 따질 때도, 그래픽스에서 기저 벡터로 모든 점을 표현할 수 있는지 볼 때도 결국 같은 질문이더라. David Lay 교재 1.4절 Theorem 4가 이 질문에 대한 답을 정리해주는데, 학교 시험에 거의 매 학기 나온다고 한다.

Span이 뭔지부터 다시 짚고 가면, 벡터 집합 {v₁, v₂, ..., vₙ}의 span은 그 벡터들의 모든 가능한 선형 결합으로 만들어지는 집합이다.

Span{v₁, ..., vₙ} = { c₁v₁ + c₂v₂ + ... + cₙvₙ | cᵢ ∈ ℝ }

을 span한다는 건 이 벡터들을 적당히 더하고 빼고 곱해서 의 어떤 점이든 만들 수 있다는 뜻이다.

Theorem 4가 말하는 건, Am × n 행렬일 때 다음 네 문장이 모두 같은 말이라는 거다. 하나가 참이면 나머지도 다 참이고, 하나가 거짓이면 다 거짓이다.

(a) 모든 b ∈ ℝᵐ에 대해 Ax = b는 해를 가진다
(b) 모든 b ∈ ℝᵐA의 열들의 선형 결합이다
(c) A의 열들이 ℝᵐ을 생성(span)한다
(d) A는 모든 행에 피벗 위치를 가진다

(a)~(c)는 사실 같은 말을 다르게 표현한 것뿐이고, 진짜 쓸모 있는 건 (d)다. 계산으로 직접 확인할 수 있는 조건이 이거 하나이기 때문이다.

왜 "모든 행에 피벗"이 핵심 조건인지는 이렇게 생각하면 이해가 됐다. A를 사다리꼴로 만들었을 때 어떤 행이 전부 0이라면, 그 행은 0x₁ + 0x₂ + ... = ? 꼴이 된다. 첨가행렬 [A | b]로 같이 처리했다면 그 행은 0 = (b의 변형된 값) 형태가 되고, 우변이 0이 아니면 모순이라 해가 없어진다. 반대로 A의 모든 행에 피벗이 박혀 있으면 어떤 행 연산을 해도 b 쪽에 모순적인 값이 만들어질 자리가 없다.

여기서 자연스럽게 따라오는 게 있는데, m × n 행렬에서 피벗은 행에도 열에도 한 개씩만 있을 수 있어서 피벗 개수의 최대값은 min(m, n)이다. 그래서 열보다 행이 많은(세로로 긴) 행렬은 모든 행에 피벗을 박는 게 애초에 불가능하고, Rᵐ을 생성할 수 없다. 에 있는 벡터 2개로는 절대 을 생성할 수 없다는 게 바로 이 케이스인데, 평면에 있는 두 화살표로 3차원 공간을 채울 수 없다고 생각하면 직관적으로 와닿는다.

과제 1.3절 22번으로 확인

다음 벡터들이 ℝ³을 생성하는지 보는 문제였다.

v₁ = ( 0,  0, -2)
v₂ = ( 0, -3,  8)
v₃ = ( 4, -1, -5)

벡터를 열로 가지는 행렬을 만들면

A = [  0   0   4 ]
    [  0  -3  -1 ]
    [ -2   8  -5 ]

1행이 0 0 4로 시작해서 피벗 잡기가 애매하길래 행 교환부터 했다. R₁ ↔ R₃:

[ -2   8  -5 ]
[  0  -3  -1 ]
[  0   0   4 ]

이러면 이미 사다리꼴이고, 1행에 -2, 2행에 -3, 3행에 4로 모든 행에 피벗이 박혀 있다. 그러니 Theorem 4의 (d)가 참이고 (c)도 참, 이 벡터들은 ℝ³을 생성한다.

3×3 행렬이면 행렬식 한 번 계산해도 되는데, det(A) ≠ 0이면 모든 행에 피벗이 있다는 뜻과 같다. 행렬식 단원 끝나고 나면 이 방법이 더 빠르더라.

계속 헷갈렸던 부분들

"열에 피벗"과 "행에 피벗"을 자꾸 헷갈렸다. 이 둘은 서로 다른 정리와 연결된다. 행에 피벗이 있으면 열들이 Rᵐ을 span하는 거고(Theorem 4), 열에 피벗이 있으면 열들이 선형 독립이라는 거다(Theorem 1.7). m × n 행렬에서 m > n인 좁고 긴 행렬은 모든 열엔 피벗을 박을 수 있어도 모든 행은 못 하니까 독립일 수는 있어도 span은 못 한다. m < n인 넓고 짧은 행렬은 반대로 span은 가능해도 독립은 아닐 수 있다. m = n이면 둘 다 되거나 둘 다 안 된다.

첨가행렬 [A | b]에서 "마지막 열에 피벗"이라는 표현도 처음엔 헷갈렸는데, 이건 b 쪽에 피벗이 생긴다는 뜻이고 그러면 0 = nonzero 모순이라 해가 없다는 얘기다. Theorem 4의 (d)는 이게 절대 일어나지 않게 보장하는 조건인 셈이다.

그리고 Span{v₁, v₂}가 v₁과 v₂ 딱 두 벡터만 들어있는 집합이 아니라는 것도 은근 헷갈렸다. 두 벡터의 가능한 모든 선형 결합, 즉 무수히 많은 벡터의 집합이다. 두 벡터가 에 있고 서로 평행하지 않다면 그 span은 원점을 지나는 평면이 된다. 참고로 선형 결합에서 모든 계수를 0으로 두면 항상 0벡터가 나오니까, 모든 span은 0벡터를 포함한다. 어떤 집합이 부분공간인지 확인할 때 제일 먼저 체크하는 게 이 부분이다.

참고

  • David C. Lay, Linear Algebra and Its Applications, 1.4절 Theorem 4
  • Mathematics LibreTexts — Spanning Sets and Pivot Columns
  • Northwestern University 강의노트 — Theorem 6 (열공간의 기저로서의 피벗 열)

Span 판정은 모든 b에 대해 풀리는지 묻는 것

열벡터들이 R^n을 생성한다는 말은 임의의 b∈R^n에 대해 Ax=b가 풀린다는 뜻이다. 행 소거 후 모든 행에 피벗이 있으면 각 출력 좌표 방향을 빠짐없이 만들 수 있다. 열의 개수보다 피벗이 어느 행에 놓이는지가 핵심이다.

MIT 18.06 Column Space and Nullspace 강의
MIT 18.06 Column Space and Nullspace 강의
Khan Academy Vectors and Spaces 과정
Khan Academy Vectors and Spaces 과정
LibreTexts Spanning Sets and Linear Independence
LibreTexts Spanning Sets and Linear Independence
NumPy matrix_rank 공식 문서
NumPy matrix_rank 공식 문서

수치 행렬의 rank는 부동소수점 허용오차에 따라 달라질 수 있다. 정수·유리수 과제는 정확한 행 연산으로 판단하고, NumPy 결과는 피벗 개수 검산으로 사용했다.

판단 순서

  1. 벡터를 행이 아니라 열로 세워 A를 만든다.
  2. A를 행 사다리꼴로 만든다.
  3. 모든 행에 피벗이 있는지 본다.
  4. 그렇다면 열들이 R^n을 span한다.

참고 자료

관련글 더보기