지난 강의(Lecture 8, and etc...)에서 우리는 Rank에 대해서 배웠다. Rank라는 것은 어떤 행렬을 소거했을 때 만들어지는 pivot의 개수를 의미하며, 행렬이 표현할 수 있는 차원(dimension)을 의미하기도 한다. 또한 rank는 m by n 크기의 행렬에서 반드시 m보다 작거나 같고, n보다 작거나 같다. Rank는 행렬을 설명하는데에 있어서 굉장히 중요한 숫자이다. 

 

이번 강의에서는 이러한 rank와 관려하여 rank가 1인 행렬에대해 공부해보도록 하겠다. 

 

 

1. Rank 1 행렬(rank 1 matrices)

 

Rank가 1인 행렬을 하나 예를 들어보자. 아래의 행렬 A는 rank가 1인 행렬이다. 

 

 

row1이 [1 4 5]이고, row2가 row1의 두 배인 [2 8 10]이다. 이렇게 되면 row1과 row2는 서로 종속(dependent)이며 같은 선상에 위치한다. col1, col2, col3도 마찬가지이다. col2와 col3는 col1에 상수 4, 5를 곱한 것과 같기 때문에 col1과 일직선상에 위치해있다. 따라서 rank 1인 행렬이 표현할 수 있는 공간은 1차원이며 직선이다. (이전에 배운 내용을 토대로 직접 row echelon form을 만들어보자)

 

A의 row space의 기저(basis)는 무엇일까? 오직 row1이다. column space의 기저 역시 col1이다. 따라서 A의 row space와 column space의 차원(dimension)은 1로 같다. 

 

 

 

여기서 재밌는 사실 한 가지를 배워보자. 식 (2)에서 A의 column space와 row space의 기저를 각각 나열하였다. 이 기저들의 곱으로 원래의 rank 1 행렬 A를 만들어낼 수 있다. 아래 식은 굉장히 중요하다. 잘 살펴 보자. 

 

 

column space의 기저와 row space의 기저 순으로 곱하였더니 원래의 rank 1행렬 A가 만들어졌다. 여기서 중요한 포인트는 어떤 column vector와 어떤 row vector를 column x row순으로 곱하면 반드시 rank 1행렬 A가 만들어진다는 것이다. 

 

식 (3)에서 u는 column vector 이고 v도 역시 column vector이지만 전치(transpose)를 시켜서 row vector로 만든 것이다. 이것이 rank 1행렬의 큰 그림이다. 이후에 행렬식(determinant)이나 고유값(eigenvalue)등도 알아보겠지만, rank 1행렬은 벽돌 건물로 치자면 집짓기블록(building block)과 같은 것이다. 즉 모든 행렬에 있어서 가장 작은 기본 단위의 요소와 같다는 것이다. 빌딩 블록이란 말을 들으니 왠지 이러한 생각을 할 수도 있겠다. 

 

만약 어떤 임의의 크기의 행렬, 예를 들면 5 x 14크기의 행렬을 얻었다고 했을 때, 이 행렬의 rank가 4라면 4개의 rank 1 행렬의 조합으로 이를 표현할 수 있다. 즉 원래의 행렬을 5 x 14크기의 A라고 했을 때, A의 rank는 4이기 때문에 5 x 14크기의 rank 1행렬 4개의 조합으로 A를 표현할 수 있는 것이다. 이렇게 원래의 행렬을 rank 1행렬들로 분해하여 표현할 수 있기때문에 rank 1행렬들을 building block이라 표현하는 것이다. 

 

 

 

 

2. Rank 1행렬에 대한 부분 공간(subspaces for rank 1 matrices)

 

Section 1에서 예를 들었던 5 x 14크기의 행렬 A를 다시 생각해보자. 이번에 살펴볼것은 이 행렬 A의 부분 공간이다. 5 x 14크기의 rank 4인 행렬 A는 부분 공간을 가지는가? 5 x 14크기의 모든 행렬을 M이라고 가정해보자. 

 

 

전체집합 M중에서 rank가 4인 행렬들을 생각해봤을 때, 이들은 M의 부분 집합일까? 정답은 부분 공간이 아니다

M과 같은 크기(5 x 14)를 가지며 rank가 4인 행렬들을 더했을 때, 이들은 rank가 4가 안될 수 있다. 부분 공간이 되려면 스칼라곱(scalar multiplication)과 행렬 끼리의 덧셈 연산에 닫혀있어야(closed) 하며 영벡터를 포함해야한다

 

이 말은 어떤 rank 4 행렬 U와 또 다른 rank 4행렬 K를 선형 조합(Linear combination)연산을 했을 때 그 결과가 같은 공간에 있지 않을 수 있다는 말이다. 예를 한 번 들어보자. 아래의 3x3 크기의 행렬 A와 B를 보자. 

 

 

A와 B행렬의 rank는 각각 2다. 그러나 A+B의 rank는 3이 되어 원래의 rank2의 차원에서 벗어나게 되는 것이다. 3x3행렬로 예를 들었지만 5x14크기의 행렬도 마찬가지이다. 따라서 부분 공간이 아니다. 

 

 

- In R4 cases:

 

4차원 공간인 R4의 경우를 생각해보자. R4 공간상의 모든 벡터는 아래와 같이 4개의 component를 가지는 벡터로 표현할 수 있다. 

 

 

이때 R4의 부분 공간을 식(7)과 연관지어 다음과 같이 정의해보자.

 

 

식 (8)의 S는 R4의 부분 공간이다. 스칼라곱(scalar multiplication)과 덧셈 연산(addition)에 닫혀(closed)있기 때문이다. 즉 벡터 v에 어떤 상수를 곱해도 0이 되고, 혹은 같은 공간에 존재하는 vw에 임의의 상수를 곱하여 더해도 여전히 같은 공간에 존재한다. 잘 이해가 가지 않을 수도 있는데, 다시 말하면 이때의 v는 어떤 행렬 A의 null space이다. 처음부터 R4의 예를 들었지만 시각적으로 보여주기 편하게 하기 위해 같은 내용을 일단 R2의 경우로 예를 들어보자.

 

 

식 (9)는 2차원 공간인 R2에서의 예를 든 것이다. v, w, z의 각 벡터의 원소들의 합은 0이다. 이들을 좌표평면위에 표현한다면 어떤 그림이 나올까? 아래와 같을 것이다. 

 

 

 

R2의 경우에서 각 벡터들의 원소들의 합이 0인 경우를 그래프로 표현한 것이다. v, w, z의 벡터들이 하나의 라인을 형성하는 것을 볼 수 있다. 이 벡터들이 이와 같이 하나의 라인을 형성하는 것은 이들이 행렬 A=[1 1]의 null space이기 때문이다. 즉 위 그림의 v, w, z는 A=[1 1]행렬의 null space의 해(solution)인 것이다. 이때의 A는 rank 1인 행렬이고 따라서 1차원 행렬이다. 주요 부분공간에 대한 차원과 기저(basis)는 다음과 같다. 

 

차원(dimension) in R2

  • row space:      r=1
  • null space:      n-r = 2-1 = 1
  • column space: r=1
  • left null space: m-r = 1-1 = 0
 

기저(basis) in R2

  • row space:      [1 1]
  • null space:      [1 -1], [-1 1], ...
  • column space: R1
  • left null space: [0], empty

 

위의 R2의 경우를 잘 이해한 뒤 다시 R4의 경우를 보자. R4의 경우도 마찬가지다. 식 (7)과 (8)에서 얘기하는 벡터들은 R4에서 어떤 행렬 A의 null space이고 그 A는 아래와 같다. R2의 경우와 유사하다. 

 

 

이를 통해 우리는 R2에서와 같이 R4에서의 rank 1인 행렬과 Ax=0의 null space를 연결시킬 수 있다. R4일때의 차원은 rank와 밀접한 관련이 있다. row space와 column space는 rank의 수인 1과 같고, null space와 left null space의 경우엔 각각 n-r, m-r과 같다. (※lecture 10참고)

 

기저는 어떨까? 일단 row space의 기저는 첫 번째 row인 [1 1 1 1]그대로이다. 이제 null space의 기저를 알아보자. 무수히 많은 null space에 대한 기저가 존재하겠지만 lecture 7에서 다뤘던 special solution을 구할 수 있다. 간단히 말하자면 행렬의 소거 과정에서 드러나는 free variable을 각각 1과 0으로 설정해가며 나머지 해를 구하는 방법이다. (자세한 사항은 lecture 7참고). R4에서 null space의 special solution은 아래와 같다. 

 

 

식 (11)에서 pivot을 제외한 나머지 column의 component들이 free variable이다. 이 free variable들을 하나씩 1로 설정하고 나머지 component들을 0으로 설정한 뒤, Ax=0에 대해서 풀면 null space의 special solution을 구할 수 있다. 

 

column space의 기저는 어떨까? 그저 R1이다. [1] [1] [1] [1]의 선형 조합으로 정의되는데, 어떤 상수들을 곱하고 이들을 더해도 단지 상수값이 나올뿐이다. 즉 c1[1]+c2[1]+c3[1]+c4[1]=c 결국 R1의 값으로 정의할 수 있다. 

마지막으로 Left null space의 경우엔 어떨까? A의 전치 행렬에 대한 null space이므로 그 형태는 아래와 같을 것이다. 

 

 

 

위의 식 (12)를 만족시키는 x는 0밖에 없다. 따라서 Left null space는 0밖에 존재하지않는 0차원의 공간이다. 지금까지의 내용을 정리해보면 아래와 같다. 

 

 

차원(dimension) in R4

  • row space:      r=1
  • null space:      n-r = 4-1 = 3
  • column space: r=1
  • left null space: m-r = 1-1 = 0
 

기저(basis) in R4

  • row space:      [1 1 1 1]
  • null space:      [-1 1 0 0], [-1 0 1 0], [-1 0 0 1]...
  • column space: R1
  • left null space: [0], empty

 

결론적으로 R4에서의 주요 부분공간들의 차원을 살펴보면 row space의 차원은 rank 인 1이고 null space의 차원은 column의 수 n에서 rank를 뺀 n-r=3이 된다. 따라서 row space와 null space의 차원의 합은 1+3=4이다. 

 

column space의 차원도 역시 rank인 1이고, left null space의 경우엔 row의 수 m에서 rank를 뺀 m-r=1-1=0이다. 따라서 column space와 left null space의 차원의 합은 1+0=1이다. 이렇게 부분 공간의 각 차원들은 결과적으로 원래의 행렬 A의 차원을 나타낸다. 

 

 

 

 

3. 마치며

 

이번 포스팅에서는 Rank 1행렬과 이와 관련된 부분 공간들에 대해서 알아보았다. Rank 1은 모든 행렬들의 기본적인 행렬 단위가 되는, 즉 building block이라 할 수 있으며 이후 행렬식(determinant), 고유값(eigenvalue)등을 배울 때 이해해야 하는 부분이다. 또한 중요한 사실 중 하나인 column x row를 할 경우 항상 rank 1행렬이 만들어진다는 것을 배웠다. 

 

우리는 또한 Rank 1행렬에 대한 부분 공간들에 대해서 공부하였다. Rank 1행렬에 대한 각 부분 공간들인 row space, column space, null space, left null space들에 대하여 알아보고 각 공간들에 대한 차원과 기저에 대해서도 알아보았다. 또한 이들의 차원이 원래의 행렬 A의 크기와 어떠한 관계를 갖는가를 알아보았다. 

 

이번 강의에선 새로운 벡터 공간인 행렬 공간(Matrix spaces)에 대해 배워보도록 하겠다. 

 

 

1. 행렬 공간(Matrix spaces)

 

이번 강의에서 배울 행렬 공간(Matrix spaces)은 어떤 의미에선 새로운 벡터 공간(vector space)이라고 할 수 있다. 여기서 말하는 행렬 공간이라고 하는 것은 3x3크기의 모든 정방행렬(square matrix)을 의미한다. 이를 M이라 칭하자.

 

 

그런데 한 가지 이상한 생각이 들 것이다. 분명 행렬 공간이라고 했는데, 이것을 왜 벡터 공간이라고 하는가? 행렬과 벡터는 엄연히 다른데도 말이다. 

이들은 벡터 공간(vector space)이라고 할 수 있는 이유는 벡터공간에 대한 조건을 만족하기 때문이다. 이 행렬들 끼리 선형 결합(Linear combination)을 해도 같은 공간에 위치한다. 즉 행렬 M1, M2가 있다고 가정했을 때, 임의의 스케일(scale) 상수 c1, c2를 각각 곱하여 그들끼리 더해도 그 결과 행렬은 여전히 원래의 M과 같은 차원의 공간에 위치하게 된다. 

 

 

 

만약 M1과 M2를 곱한다면 어떻게 될까? 여전히 같은 행렬 공간에 위치하게 될까? 행렬끼리 곱하게 되면 공간은 달라진다. 따라서 아래와 같이 행렬끼리의 곱셈은 다른 공간을 만들게 된다. 

 

 

 

그런데 행렬끼리 선형 결합(Linear combination)이라는 연산을 했을 때 여전히 같은 공간에 위치하는 것은 어찌보면 당연하다. 이는 역 연산이 가능한 것이기 때문이다. 임의의 상수를 곱하고 다른 행렬과 덧셈 연산을 한 것은 반대로 그 행렬을 빼고 곱한 상수만큼 나눠주면 간단히 원래의 행렬로 돌아올 수 있기 때문이다. 벡터의 선형 결합 연산과 지난 강의에서 이를 시각화 한 것들을 살펴본다면 머리속으로 쉽게 그릴 수 있을 것이다. 따라서 식 (2)와 같이 선형 결합을 했을 때 그 결과는 여전히 원래의 행렬과 같은 차원에 위치하게 된다. 

 

 

 

2. 행렬 공간의 기저(basis)와 차원(dimension) 그리고 부분 공간(subspace)

 

3x3크기의 행렬 M은 마찬가지로 부분 공간(subspace)을 가진다. M의 부분 공간은 아래와 같은 행렬들을 가질 수 있다. 

 

 

3x3행렬의 부분 공간들

  • 3x3 대칭 행렬(Symmetric Matrix)
  • 3x3 상삼각행렬(Upper triangular Matrix)
  • 3x3 대각 행렬(Diagonal Matrix)

 

여기서 우리가 알고싶은 것은 위의 부분 공간 행렬들의 기저(basis)는 어떤 것인지, 차원(dimension)은 무엇 인지, 또한 원래의 행렬 M의 차원은 무엇인지 등이다. 하나씩 알아보자. 

 

 

- Basis of M:

 

우리는 3x3크기의 모든 행렬을 M으로 표현하기로 했다. 이들의 기저(basis)는 무엇일까? 먼저 기저에 대한 정의를 다시 한번 알아보자. 

 

  1. 기저 벡터들은 선형 독립(Linearly independent)이어야 한다. 
  2. 기저 벡터들의 조합을 통해 해당 공간내에 어떠한 벡터라도 만들 수 있어야 한다. 

 

기저를 알기 위해선 먼저 차원을 알아야 한다. 이전 강의에서 우리는 차원은 행렬의 rank와 같다고 배웠다. 그러나 rank는 행렬 안의 벡터들이 정의할 수 있는 차원을 의미하는 것이다. 즉 M이 3x3일 때 rank가 3이라면 M의 row나 column vector들 끼리의 조합으로 표현할 수 있는 공간의 차원을 의미하는 것이다. 

그러나 여기서 말하는 행렬 공간의 차원은 이와는 약간 다르다. 3x3크기로 한정된 행렬 M을 하나의 벡터로 간주하고 그 행렬이 표현할 수 있는 공간을 알고자 하는 것이다. 따라서 3x3크기의 M에 대한 차원은 M을 구성하고 있는 원소의 개수가 될 것이다. 그러므로 M의 차원은 9가 된다

 

M의 차원이 9이므로 M의 기저 역시 9개가 될 것이다. M의 기저는 아래와 같다. 

 

 

총 9개의 기저 행렬이 식 (4)에 나와있다. 특히 이렇게 1과 0으로만 구성된 기저를 Standard basis라 한다. 위의 기저 벡터의 선형 조합을 통해 우리는 3x3크기 행렬의 어떠한 형태라도 만들 수 있다. 결국 행렬 M은 실질적으로 9차원의 공간이라고 할 수 있다. 9차원의 숫자들을 column vector 대신 행렬로 표현했다고 생각하면 편할 것 같다. 

 

 

- Symmetric matrix as a subspace of M:

 

대칭 행렬(Symmetric matrix)은 M의 부분 공간이며 Symmetric의 앞 글자를 따서 S라고 하자. 아래와 같이 대각선 원소들을 기준으로 아래와 위의 원소들이 같은 값을 가지는 형태를 띈다. 

 

 

우리는 앞서 (4)와 같이 모든 3x3행렬에 대한 기저를 나열했었다. 그렇다면 과연 대칭 행렬 S에 M의 standard basis중 몇 개가 포함될까? 정답은 3개이다. 3개의 대각 행렬에 대한 요소들, 즉 식 (4)에서 M1, M5, M9의 기저 행렬들이 S의 basis에 포함된다. 그렇다면 나머지 기저 행렬들은 어떤 것이 있을까? 아래의 식 (6)은 대칭 행렬의 기저들을 나열한 것이다. 

 

 

식 (5)에서 b, c, e는 각각 같은 값을 가지고 있기 때문에 S4, S5, S6과 같은 기저가 존재한다. 기저가 6개라는 말은 결국 대칭행렬 S의 차원은 6이라는 뜻이다. 위의 기저들의 조합을 통해 대칭 행렬 공간에 존재하는 어떠한 행렬도 만들 수 있다. 

 

 

- Upper triangular matrix as a subspace of M:

 

상삼각행렬(Upper triangular matrix)역시 M의 부분 공간이며 Upper의 앞 글자를 따서 U라고 하자. 아래와 같이 대각 원소들을 기준으로 위쪽에만 원소들이 존재하는 형태를 띈다. 

 

 

식 (4)의 원래 M의 기저들 중 어떤 것들이 U의 기저에 포함될까? 간단하다. 아래와 같이 각 원소에 대응되는 기저들만 나열하면 된다. 식 (4)에의 M1, M2, M3, M5, M6, M9들이 U의 기저에 포함된다. 

 

 

마찬가지로 6개의 기저를 가지고 있다는 것은 상삼각행렬의 차원이 6임을 의미한다. 식 (7)의 기저들의 조합을 통해 상삼각행렬 공간에 존재하는 어떠한 행렬도 만들 수 있다. 

 

 

- Diagonal matrix as a subspace of M:

 

마지막으로 살펴볼 M의 부분 공간(subspace)은 대각 행렬(Diagonal matrix)이다. 대각 행렬은 위에서 살펴봤던 두 개의 부분 공간 행렬들로 정의할 수 있다. 즉 이들의 교집합을 보는 것이다. 이들의 교집합은 결국 아래와 같이 대각행렬의 원소인 a, d, f만 남게 된다. 

 

 

대각행렬은 3개의 원소만 있기 때문에 차원이 3이다

 

대각행렬은 대칭 행렬 S와 상삼각행렬 U의 교집합(Intersection), 즉 S에도 있고 U에도 있는 원소들로 정의할 수 있었다. 그렇다면 합집합(Union)은 어떨까? S에 있거나 혹은 U에 있는 원소들로 정의하는 합집합 말이다. 

 

 

위의 식 (10)과 같이 두 행렬(혹은 벡터)의 합집합은 성립이 될까? 정답은 성립이 되지 않는다. 이는 9차원의 공간에 존재하는 6차원의 Line(column이 아닌 row vector로 간주)으로 생각해 볼 수 있는데, 이 둘은 다른 방향으로 존재한다. 따라서 애초에 이 둘을 함께 놓을 수가 없다. 따라서 이 합집합은 부분 공간이 아니다. 

 

그렇다면 S와 U를 이용하여 부분 공간을 정의하려면 어떻게 해야할까? 둘을 더하면 된다. 

 

 

식 (11)은 S와 U의 조합이다. 즉 S의 원소들과 U의 원소들을 더하여 조합을 한 것이다. 이렇게 대칭행렬과 상삼각행렬의 조합을 통해 모든 3x3 크기의 모든 행렬 M을 만들 수 있다. 따라서 두 행렬의 조합은 M의 부분 공간이 되며 S와 U의 조합의 차원은 9가 된다

 

3x3크기의 행렬 M에 대한 부분 공간(subspace)을 차원(Dimension)의 측면에서 정리해보면 다음과 같다. 

  • dim(S) = 6
  • dim(U) = 6
  • dim(S  U) = 3
  • dim(S + U) = 9
  • dim(S)+dim(U) = dim(S  U) + dim(S + U)

대칭 행렬의 차원은 6, 상삼각행렬의 차원은 6이다. S와 U의 교집합, 즉 대각 행렬의 차원은 3이고 S와 U의 조합에 대한 차원은 9다. 여기서 대칭 행렬S와 상삼각행렬 U의 차원의 합은 6+6=12이다. 그런데 S와 U의 교집합인 대각행렬과 S와 U의 조합 행렬에 대한 차원의 합도 역시 3+9=12로 같다. 이것이 의미하는 것이 무엇일까? 바로 지금까지 했던 부분 공간을 가지고 정의하는 차원이나 기저 등에 대한 연산이 자연스럽다는 증거이다. 

 

 

 

 

3. 벡터 공간의 예시(선형대수와 미분방정식의 관계)

 

벡터 공간(행렬 공간)에 대한 예를 한 가지 더 들어볼까 한다. 벡터 공간이지만 벡터를 가지지 않는 형태인데, 미분방정식(Differential Equation)에 관한 내용이다. 아래의 미분방정식을 보자. 

 

 

식 (12)의 미분방정식의 해는 다음과 같은 것들이 될 수 있다. 

 

 

 

해를 대입하여 풀어보면.. 

 

 

식 (13)은 식 (12)의 해 공간(solution space)를 나타낸다. 이는 다시말하면 식 (13)의 해들은 식 (12)의 미분방정식(Differential equation)의 영공간(Null space)을 나타내는 것이다. 식 (13)의 각 해들(cos, sin, e, ...)은 null space의 각각의 해에 해당한다.  

 

그렇다면 위의 미분방정식의 null space의 완전해(complete solution)은 어떻게 정의할 수 있을까? e는 잠시 잊어두고 sin과 cos만 가지고 아래와 같이 완전해를 정의할 수 있다. 

 

 

식 (15)를 우리는 벡터 공간(vector space)이라고 할 수 있다. 이를 벡터공간이라고 할 수 있는 이유는 미분방정식 (12)의 해에 대한 solution space를 cos과 sin에 각각 상수를 곱하고 더한 선형 결합(Linear combination)으로 표현할 수 있기 때문이다. 여기서 cos과 sin은 기저(basis)이다. 식 (15)의 cos과 sin의 선형 조합은 미분방정식 (12)의 해공간(solution space)인 null space를 형성(span)하며 이들은 독립(independent)이다. 

 

결과적으로 우리는 미분방정식 (12)를 Ax=0의 식으로 볼 수 있으며, 식 (15)를 null space를 정의하기위한 special solution이라고 할 수 있다. Special solution은 두 개이다. 따라서 차원(dimension)도 역시 2이다. 사실 차원이 2일 수밖에 없는 이유는 미분방정식이 2차(second order)이기 때문이다. 

그렇다면 기저는 이들 뿐일까? 

 

$e^{ix}$, $e^{-ix}$ 도 기저가 될 수 있다. 기저는 무수히 많이 존재한다. 여기서 우리는 선형미분방정식(Linear differential equation)과 선형대수(Linear algebra)사이의 연결점을 찾을 수 있다. 

 



※ 선형미분방정식(Linear differential equation)을 푼다는 것은 방정식의 해공간(solution space)에 대한 기저(basis)를 찾는 것이다. 


한 가지 중요한 것은 미분방정식의 sin, cos과 같은 기저들을 벡터라고 부를 수 있다는 것이다. 이것이 가능한 것은 이 기저들 각각에 상수를 곱하고 더한 선형 조합(Linear combination)이 가능하기 때문이다. 


결국 선형 대수(Linear algebra)의 기저(basis), 차원(dimension), span 등과 같은 개념들이 m by n 행렬들에서 쓰이는 것 보다 더 넓은 역할을 하는 것이다. 

 

 

 

4. 마치며

 

이번 포스팅에선 3x3 크기의 행렬 공간에 대해 알아보고 이들의 부분 공간에 대해 알아보았다. 또한 각 행렬 공간 및 부분 공간들의 기저와 차원에 대해서 알아보았다. 이러한 행렬 공간과 기저, 차원 등에 대한 개념들을 미분방정식과 연결시켜 보다 폭넓은 이해를 할 수 있었다. 이어지는 다음 포스팅에서는 Rank 1행렬에 대해 알아보도록 하자. 

 

1. 네 개의 주요 부분 공간(Four fundamental subspaces)

 

이번 포스팅에선 행렬 A에 대한 네 개의 주요 부분 공간(Fundamental subspaces)에 대해 다뤄보겠다. 이들 주요부분공간 각각에 대해 알아보고 이들이 서로 어떻게 연결되는지 살펴보도록 하자. 부분 공간(subspace)에 대한 개념은 Lecture 5-(2)를 참고하길 바란다. 

임의의 행렬 A에 대한 네 개의 주요부분공간은 아래와 같다. 

  • Column space 
  • Null space 
  • Row space 
  • Left null space

 

- Column space and Null space:

 

맨 처음 언급된 column space는 임의의 행렬 A에 대해 C(A)로 표기하며 지금까지 많이 다뤄왔기 때문에 익숙할 것이다. 행렬 A의 column vector들의 선형 조합(Linear combination)을 통해 형성하는 공간을 의미한다. 

두 번째인 Null space역시 많이 다뤄왔다. 이는 Ax=0를 만족시키는 해(x)들의 선형 조합으로 형성되는 공간을 의미한다. 자세한 내용은 Lecture 6를 참고하기 바란다. 

 

 

- Row space:

 

세 번째 부분 공간인 row space는 처음 언급되는 것이다. 이름에서 알 수 있듯이 행렬 A의 row vector들의 선형 조합을 통해 형성하는 공간이다. 따라서 row vector들은 row space를 "span"한다. 만약 행렬 A의 row vector들이 독립(Independent)이면 row space의 기저(basis)가 되고, 종속(Dependent)일 경우, 기저가 아니다.

 

결국 row space는 row vector들의 가능한 모든 선형 조합(Linear combination)으로 정의할 수 있다. 하지만 row vector는 뭔가 익숙하지가 않다. 일반적으로 벡터라 함은 column vector가 더 자연스럽다. 그렇다면 row space를 column vector로 표현하려면 어떻게 해야 할까? 바로 A의 전치(Transpose)행렬에 대한 column space를 구하면 된다. 즉

 

 

행렬 A를 전치를 하게 되면 가로로 누워있던 row vector들이 세로로 서있게 되고, 이 상태에서 column vector들의 선형 조합을 통해 column space를 정의하게되면 결국 원래의 row space들에 대한 공간이 정의되는 것이다. 식 (1)의 표기법을 통해 Row space를 식으로 간단하게 정의할 수 있다. 

 

 

- Left null space:

 

마지막 네 번째에 정의된 Left null space는 행렬 A의 전치에 대한 Null space를 의미한다. 사실 이 공간을 행렬 A와 연결 짓는 정확한 이름은 없지만 종종 Left null space of A라 부르는데, 이렇게 부르는 이유를 추후에 설명하도록 하겠다. 식은 아래와 같이 표기한다. 

 

 

 

 

2. 주요 부분 공간들의 예시(Examples of 4 fundamental subspaces)

 

위에서 정리한 4개의 주요부분공간은 임의의 행렬 A에 관한 부분 공간들이다. 행렬 A가 m x n의 크기(m=row수, n=column 수)라고 했을 때, 각 공간들이 이루는 공간은 몇 개의 component를 가질까? 즉 각 부분공간들은 어떠한 전체 공간에 놓여있을 까?(이것은 차원(Dimension)과는 다르다)

 

Column space의 경우 $\boldsymbol{R}^m$의 공간에 존재한다. 여기서 m은 A의 row의 수이다. 

Null space는 $\boldsymbol{R}^n$에 존재하며 n은 column의 수이다. Ax=0를 만족시키는 해(=x)들의 집합이므로 column vector 형태인 x의 component의 수와 같다. 

Row space는 A의 전치(Transpose) 행렬에 대한 column space이므로 $\boldsymbol{R}^m$에 존재하게 된다. C(A)의 경우와 반대라고 생각하면 된다. 

Left null space역시 A의 전치에 대한 Null space이므로 N(A)의 경우와 반대이고 $\boldsymbol{R}^m$에 존재하게 된다. 

 

 

이들을 다시 한 번에 정리하면 아래와 같다. 식(3)에 나타낸 행렬식을 보고 각 부분공간이 놓여 있는 공간에 대해서 잘 생각해보자. 

 

 

 

 

 

 

위에서 나타낸 주요부분공간들을 그림으로 표현해보자. 정리해서 일반적으로 표현하면 아래 그림과 같다. 

 

 

 

 

이번 강의에서 우리의 목적은 위 그림을 이해하는 것이다. 위 그림의 내용을 이해하는 것은 선형대수의 절반을 이해한 것과 같다고 표현할 정도로(by Gilbert strang) 굉장히 중요하다. 예제를 들어서 차근차근 알아보도록 하자. 

 

위의 부분 공간들은 모두 어떤 임의의 행렬 A에 관한 부분 공간을 이야기 한다. 여기서 행렬 A를 아래와 같다고 생각해보자. 

 

 

행렬 A는 2개의 row와 3개의 column으로 구성되어 있다. 즉 2개의 방정식(equation)과 3개의 미지수(unknown)가 존재하는 것이다. 먼저 A의 row space를 보자. row space는 A의 row vector들의 선형조합으로 형성하는 공간이다. n=3이므로 3차원 공간상에 존재한다. A의 두 개의 row vector들이 3차원 공간에 아래와 같이 표현되었다고 가정해보자. 

 

 

 

 

실제 각도나 모양이 위와 같지 않더라도 가정을 해보자. 보라색 점은 원점을 나타낸다. 위 두 개의 row vector들은 선형 조합(Linear combination)을 통해 3차원 공간상에서 무한대로 2차원 평면을 채울 수 있다. 하지만 2차원 평면을 채울 수는 있지만 3차원 공간을 채울 수는 없다. 두 벡터를 직교하는 또 하나의 벡터가 존재하지 않기 때문이다. 이때 두 row vector를 직교하여 3차원 공간을 형성할 수 있도록 하는 것이 바로 Null space다 즉 row space와 null space는 직교(orthogonal)한다. 과연 그럴까? 실제로 A의 Null space를 계산해보자. 

 

 

첫 번째와 세 번째 column vector를 더한 값을 두 번째 벡터에 2를 곱해서 빼주면 0이 된다. 따라서 A의 null space는 x=[-1 2 -1]T이 된다. 이 null space가 정말로 두 벡터(row space)를 직교(orthogonal)하는지는 어떻게 확인할까? 바로 내적(dot product)를 통해 알 수 있다. 내적했을 때 0이 되면 두 벡터사이의 각도는 90도가 되기 때문에 직교하게 된다. 식 (6)이 사실상 두 벡터 row1, row2와 null space vector와 각각 내적을 한 것과 같다. 내적했을 때 둘 다 0이 되므로 null space vector는 row1, row2에 동시에 직교하는 벡터가 된다. 이를 그림으로 나타내면 아래와 같다. 

 

 

 

파란색과 빨간색 벡터가 row space를 정의하는 두 개의 벡터이고 평면을 정의한다. 이 두 벡터를 동시에 직교(orthogonal)하는 것이 바로 하늘색 벡터인 null space이다. 이 null space vector [-1 2 -1]에 어떠한 상수를 곱해도 성립하기 때문에 식 (6)의 행렬 A에 대한 Null space는 Line이다. 물론 row space와 null space는 보라색 점으로 표시된 원점에서 만난다. 이것이 식(6)의 행렬 A에 대한 Rn공간에서 정의되는 row space와 null space이다.

 

여기서 A의 row space의 차원(dimension)은 어떻게 알 수 있을까? 바로 A의 rank=r가 row space의 차원이다. A의 rank는 2이고 따라서 A가 정의할 수 있는 차원은 2차원 평면인 것이다. 비록 3차원 공간상에 존재하지만 말이다. 

그렇다면 null space의 차원은 어떻게 정의될 까? 일단 위 그림상으론 line이기 때문에 1차원인 것을 알 수 있는데 행렬만 가지고 어떻게 판단을 할 수 있을까? null space의 차원은 n-r, 즉 column의 수에서 rank를 뺀 것이 null space의 차원이 된다. 위 그림은 null space가 1차원일때의 그림을 나타낸 것이다. 

정리하자면 row space의 차원은 pivot variable의 개수인 rank가 되고, null space의 차원은 free variable의 개수인 n-r이 된다. 만약 A가 3x3 행렬에 full rank인 경우(r=3)위 그림은 어떻게 표현될까? 그때는 Null space가 단지 보라색 점으로만 표현이 되고 row space는 3차원 cubic으로 표현될 것이다. 즉 위 그림에서 row space의 사각형이 화면 방향으로 튀어나온다고 생각하면 된다. 

 

 

이제 처음 그림에서 우측에 있는 column space를 살펴보자. A의 column space는 $\boldsymbol{R}^m$에 존재한다. 이때 A에 대한 m은 2이고 결국 column space가 존재하고 있는 전체 공간이 2차원이라는 뜻이다. 여기서 column vector들을 살펴보면 component가 2개로 이루어져 있으므로(col1=[1 4]T, col2=[2 5]T, col3=[3 6]T) column space는 자연스럽게 2차원 공간에 존재함을 알 수 있다. A의 row space가 3차원 공간에 존재했지만 2차원 공간밖에 정의할 수 없었던 것과는 달리 column space는 2차원 공간에 존재하고 그 공간 전체를 채울 수 있다. 

 

그렇다면 column space의 차원을 판가름하는 rank는 어떨까? row space와 마찬가지로 2이다. 여기서 중요한 사실 한가지를 알 수 있다. 바로 row space와 column space의 차원은 항상 같다이다. 즉 rank가 같다는 이야기이다. 따라서 column space의 차원이자 rank는 2가 된다. 

마지막 Left null space는 어떨까? 일단 식을 세워보면 아래와 같다. 

 

 

식 (7)을 성립하도록 만드는 x값은 무엇이 있을까? 오직 영벡터(x1=0, x2=0)만이 위의 식을 성립시킬 수 있다. 따라서 Left null space는 오직 영벡터(zero vector)로 정의 된다. 즉

 

 

이를 그림으로 표현하면 아래와 같이 나타낼 수 있다. 

 

 

 

column space는 Rm의 공간에 존재하는데, A의 m은 2다. 즉 R2공간에 존재하며 rank=2이기 때문에 R2공간 전체를 표현할 수 있는 것이다. 또한 행렬 A의 Left null space의 경우 오직 영벡터(zero vector)로 정의 되기 때문에 그림상에서 보라색 점으로 표현된다. Left null space의 차원은 m-r로 계산하는데, 2-2이므로 결과적으로 0차원이 된다. 

 

 

 

 

3. 주요 부분 공간들의 기저와 차원(Basis and Dimension of 4 fundamental subspaces)

 

- Column space and Null space:

 

네 개의 주요부분공간(fundamental subspaces)을 이해하기 위해선 각 부분공간의 기저(basis)차원(dimension)을 알아야 한다. 

Column space경우 기저를 알기 위해선 각 공간을 형성하기 위한 최소한의 필수 벡터가 몇 개인지를 알아야한다. 이 개수가 바로 차원(dimension)이 되고, 차원은 곧 rank를 의미한다. Rank는 행렬 A의 소거 과정에서 드러나는 pivot들의 개수를 의미하고 pivot들이 존재하는 column이 바로 pivot column이 된다. 이 pivot column들이 결국 행렬 A의 기저(basis)가 되는 것이다.  (소거에 관해서는 Lecture 2 참고)

 

Null space의 경우엔 이와 반대인데 pivot이 없는 column들, 즉 free column들과 관계가 있다. 즉 행렬 A의 각각의 free variable에 0과 1을 번갈아 설정하여 Ax=0의 해 x를 구한 special solution이 null space의 기저(basis)가 된다. 또한 이들의 차원은 free column의 개수이므로 column의 수에서 rank를 뺀 n-r차원이 된다. 이들을 표로 정리하면 아래와 같다. 

 

C(A): Column space  N(A): Null space
 basis: pivot columns
 dimension: r
 basis: special solutions 
 dimension: n-r 

 

 

- Row space:

 

Row space의 기저(basis)는 어떻게 구할 수 있을까? A를 전치(Transpose)시킨 후 소거(elimination)를 통해 reduced row echelon form의 형태로 만든다. 여기서 pivot이 있는 column을 기저로 생각할수도 있다. 그러나 보다 정확한 row space의 기저를 구하는 방법은 원시 행렬 A에서 소거를 통해 row reduction(소거를 통해 row를 줄여나가는 행위)을 통해 pivot row를 취하는 방법이다. 지난 강의(Lecture 9)에서 다루었던 행렬을 다시 예를 들어보자. 

 

 

 

 

위의 식 (9)의 행렬 A를 소거해서 reduced row echelon form을 만들어보자. 아래와 같은 순서로 만들어질 것이다. 

 

 

행렬 A에서 첫 번째 pivot을 기준으로 아래의 원소들을  소거해준다. 두 번째 pivot이 음수인데 이 row에 -1을 곱해서 양수로 만들어준다. 두 번째 pivot을 기준으로 위쪽 원소를 제거하여 reduced row echelon form을 만들어준다. 식 (10)의 마지막 행렬이 R행렬이다. 

여기서 한 가지 중요한 사실이 있다. 바로 원시 행렬 A의 column space와 (Reduced row echelon form)R의 column space는 같지 않다는 것이다. 즉 아래 식과 같다. 

 

 

왜냐하면 행렬 A에는 벡터 [1 1 1]T이 존재하지만, R에는 [1 1 1]T이 존재할 수 없기 때문이다. row3이 영벡터이기 때문에 R의 column vector들로 어떠한 선형조합을 해도 [1 1 1]T을 만들 수 없다. 여기서 알 수 있는 중요한 사실은 다음과 같다. 

 

  • 소거와 row operation:
어떤 행렬 A에 대해 소거(Elimination)를 통해 우리가 한 연산은 row에 관한 연산, 즉 row reduction을 한 것이다. row reduction은 row에 대해 일정한 상수를 곱하고 row끼리 더하고 빼는 선형 조합(Linear combination) 연산을 했으므로 row space는 변하지 않는다. 
즉 row끼리 선형조합을 했기 때문에 결과적으로 소거된 행렬인 R의 row들은 여전히 row space상에 존재하게 된다. 
반면 column space는 원시행렬 A에 대해서 row operation을 통해 변하게 된다. 


  • 행렬 A를 소거하여 Reduced row reduction form인 R을 만들었을 때 A와 R은:
- A와 R의 Column space는 다르다. 
- A와 R의 Row space는 같다.

 

결론적으로 행렬 A의 row space의 기저(basis)는 R행렬의 처음 r개의 row vector들이다. 즉 pivot의 개수인 rank만큼의 기저 벡터가 존재하며, pivot이 위치한 R의 row벡터들이 행렬 A의 기저가 되는 것이다. 식 (11)과 같이 R의 첫 번째와 두 번째 row vector들은 독립(independence)이며 A의 subspace인 2차원 평면을 "span"한다. 따라서 R의 row1과 row2가 행렬 A의 기저(basis)가 된다. 

 

 

 

그렇다면 식 (11)에서 R의 row1과 row2가 A의 기저인지를 어떻게 확인할 수 있을까? R의 row1, row2의 선형 조합으로 A의 row space를 만들어낼 수 있다는 것을 어떻게 알 수 있을까? 이를 확인하기 위해선 바로 A->R을 만드는 순서를 거꾸로 수행해보면 된다. 아래 식 (12)는 식 (10)의 연산을 거꾸로 수행한 것이다. 식 (10)과 비교해보기 바란다.  

 

 

 

- Left null space:

 

마지막으로 Left null space에 대한 기저(basis)를 구하는 법을 알아보자. 그 전에 먼저 왜 "Left null space"라 부르는지 알아보도록 하자. Left null space는 아래와 같이 표기한다. 

 

 

그런데 식(13)에서 x를 왼쪽에 놓고 싶을땐 어떻게 할까? 바로 식의 양변을 전치(Transpose)해주면 된다. 

 

 

이렇게 하면 null space의 해가 되는 x가 식의 왼쪽에 위치하게 된다. 이러한 식의 형태에 따라서 Left null space라 부르는 것이다. 그러나 이러한 형태의 식은 보통 잘 사용하지 않는다. 일반적으로는 식 (13)에 나타나있는 형태를 많이 사용한다. 

 

이제 Left null space의 기저(basis)를 어떻게 구하는지를 알아보자. 직관적으로 생각해보면 Left null space라는 것은 행렬 A의 row vector들에 대한 null space이다. 즉 식(11)의 A의 row의 선형 조합을 통해 그 결과가 영벡터가 되는 해 x를 찾으면 되는 것이다. 식(11)의 행렬 A의 경우 1*row1 + 0*row2 - 1*row3=0이 된다. 즉 Left null space는 x=[1 0 -1] 인 것이다. 하지만 우리는 항상 이렇게 직관적으로 계산할 수는 없다. 어떻게 systematic하게 계산할 수 있을까?

 

식(11)의 행렬 A는 pivot variable이 2개이고 free variable이 2개이다. 이때의 special solution들은 Null space를 형성한다. 그러나 우리는 Left null space를 구해야 하므로 아래 식(15)와같이 A의 전치 행렬에 대한 null space를 구해야 하는 것이다. 

 

 

기저(basis)를 구하기 전에 Left null space의 차원(dimension)부터 정의해보자. 이는 행렬 A의 row수에서 rank를 뺀 m-r로 정의되는데, m=3, r=2 이므로 Left null space의 차원은 dim=3-2=1이다. 결국 free variable이 한개 라는 것이고 식 (15)에서보면 column3이 free column인 것을 소거를 통해 알 수 있다(직접 소거해보자). 결국 x3에 임의의 값을 설정하여 나머지를 풀면 Left null space를 구할 수 있다. 

 

그러나 왠지 식 (11)의 A에서 R로 만드는 과정을 간소화 시켜서 정의하면 Left null space를 구하는 실마리를 얻을 수 있을 것 같다. 이 간소화 과정을 Gauss-Jordan소거법(Lecture 3참고)을 활용하는 것이다. 간략하게 설명하자면 소거를 할 때 원래 행렬 뒤에 단위 행렬(Identity matrix)를 붙여 소거하여 E행렬(Elementary or Elimination matrix)을 만드는 것이다. 이때 A가 역행렬이 존재하면 E행렬이 A의 역행렬이 된다. 

 

어쨋든 Gauss-Jordan소거법을 이용하여 식(11)의 과정을 만들어보자. 

 

 

식 (16)과 같이 행렬 A의 뒤에 mxm크기의 단위 행렬을 붙여서 증강 행렬(Augmented matrix)을 만든 다음 reduced row echelon form을 만들어준다. 이 과정을 통해 A->R이 되고, I->E가 된다. 이 과정을 하나의 행렬을 곱해서 만들 수 있음을 Lecture 3에서 배웠다. 따라서 식 (16)을 하나의 행렬을 곱하여 rref를 만드는 과정으로 다시 써보면

 

 

식 (17)에서의 E행렬이 바로 rref를 만드는 역할을 하는 것이다. A가 정방행렬이며 역행렬이 존재하면 E가 바로 역행렬이 된다. 

그렇다면 여기서 E는 어떻게 계산할까? 그저 단위 행렬을 붙인 식 (16)을 똑같이 계산해주면 된다. 식 (16)을 좀 더 풀어서 써보면 아래와 같다. 

 

 

위의 식(18)은 증강 행렬(Augmented matrix)에 식 (10)에서 했던 소거 과정을 그대로 적용한 것이다. 이를 통해 A->R이 되고, I->E가 되었다. 이렇게 R과 E행렬을 각각 만들었는데, E행렬이 정말 A를 R로 만들어주는 행렬인지 확인해보도록 하자. A의 앞에 곱한 결과가 R이 되는지를 확인하면 될 것이다. 계산해보면 E를 통해 A를 R로 만들 수 있음을 확인할 수 있다. 

 

 

식 (19)를 통해 우리는 무엇을 읽을 수 있을까? 우선 행렬 A의 rank는 2임을 알고 있다. Left null space의 차원은 m-r=3-2=1이고 1차원임을 알 수 있다. 이때 R행렬을 보니 모든 원소가 0인 row3가 보인다. 이것이 의미하는 것은 무엇일까? 

 

Left null space는 A의 row vector의 선형 조합(Linear combination)으로 영벡터를 만들 수 있어야 한다. 마침 R행렬의 row3가 영벡터이고, 이 영벡터가 존재한다는 것은 A벡터의 선형조합을 통해 영벡터를 만들 수 있다는 의미다. 즉 1차원의 Null space가 존재한다는 의미다. R의 row3에 대응되는 E의 행렬은 E의 row3가 되고 결국 이것이 행렬 A의 Left null space가 된다. 

 

 

 

4. 마치며

 

이번 강의에선 임의의 행렬 A에 대한 4개의 주요부분공간(Four fundamental matrix)에 대해서 알아보았다. 이들은 각각 column space, null space, row space, left null space이다. 이번 강의를 통해 column space와 row space의 관계를 알 수 있었고 둘의 차원은 항상 같음(rank, number of pivots)을 알 수 있었다. 

또한 각 부분공간의 기저(basis)와 차원(Dimension)을 구하는 방법을 공부하였고 서로의 관계에 대해 알 수 있었다. 부분 공간을 이해하는 것은 선형 대수에서 행렬을 이해하는데에 중요한 역할을 하므로 잘 이해해두도록 하자. 

 

C(A): Column space  N(A): Null space C(A^T): Row space  N(A^T): Left Null space 
 basis: pivot columns of A
 dimension: r
 basis: special solutions of Ax=0
 dimension: n-r 
 basis: pivot columns of A^T
 dimension: r
 basis: special solutions of A^Tx=0
 dimension: m-r  

 

+ Recent posts