이번 강의에선 새로운 벡터 공간인 행렬 공간(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  

 

이번 포스팅에서는 크게 세 가지 주제를 다룰 것이다. 매우 중요한 개념들이니 잘 숙지하도록 하자. 

먼저 선형 독립(Linear independence)에 대하여 이야기하고, Span기저(Basis), 그리고 차원(Dimension)에 대하여 다루도록 하겠다. 이 용어들의 정확한 의미를 파악해 보도록 하자. 

 

 

 

1. 선형 독립(Linear independence)

 

- background:

 

선형 독립을 설명하기 위해서 먼저 지난 Lecture 7에서 배웠던 내용을 잠깐 복습해보자. 

 

어떤 행렬 A의 크기가 m by n이라고 가정하자. 이때 column의 수 n이 row의 수 m보다 더 크다고 가정해보자. 즉 m < n이다. 이는 다시 말하면 미지수(unknown)의 개수가 방정식(equation)의 개수보다 더 많다는 이야기이다. 

이 경우 행렬 A에 대해서 Ax=0에 대한 0이 아닌 해가 존재한다. 즉 Null space가 존재한다는 것이다. 어째서 해가 존재할까? 

 

우리는 이를 알아낼 수 있는 확실한 알고리즘을 이미 공부했다. 소거(elimination)를 통해 행렬을 echelon form으로 만드는 과정에서 pivot이 존재하게 되는데, pivot은 row의 개수보다 많을 수 없다. 여기서의 행렬 A는 column의 수 n이 row의 수 m보다 많기 때문에 반드시 pivot이 없는 column이 존재하게 되는데, 이 column이 바로 free column이고 free column에 대응되는 미지수가 바로 free variable이다. 

 

결국 행렬 A가 m < n인 경우, 반드시 1개 이상의 free variable이 존재하기 때문에 Ax=0에 대한 0이 아닌 해, Null space가 존재하게 된다. 정확히는 n-r(rank)개의 free variable이 존재하게 된다. 우리는 이 free variable에 0이 아닌 어떤 임의의 값을 설정한 뒤 pivot variable에 대해서 방정식을 풀게 되면 그 해가 Ax=0을 만족하는 0이 아닌 값들이 되어 Null space를 형성한다. 

(자세한 사항은 lecture 7 참조)

 

 

- linear independence:

 

지금까지 위에서 설명한 내용은 선형 독립을 설명하기 위한 배경 지식이다. 이제 선형 독립(Linear independence)에 대해 알아보도록 하자. 

 

벡터가 독립(Independence)이라는 것은 어떤 의미일까? 함축된 정의를 내리기전에 직접적인 의미를 생각해보자. 

 

 



독립(Independence)의 의미: 


벡터 x1, x2, ... xn이 있을 때, 만약 모든 계수(coefficient)가 0인 경우를 제외하고 어떠한 선형 조합(Linear combination)으로도 0을 만들 수 없다면 이 벡터들은 독립(Independent)이다. 즉



 

 

위의 말을 다시 풀어서 써보자면 어떤 벡터 x1, x2가 있다고 했을 때, 이들의 선형 조합을 c1x1 + c2x2 라고 하자. 이때 c1=0, c2=0인 경우를 제외하고 c1, c2에 어떠한 임의의 값을 넣어서 선형 조합 연산을 했을 때 그 어떠한 값을 넣어도 결과 값이 0이 나오지 않는다면 x1과 x2는 독립이다. 

반대로 임의의 c1, c2값으로 선형 독립 연산을 했을 때 결과 값이 0인 경우가 발생한다면 x1과 x2는 종속(dependent)관계이다. 

 

 

말로만 설명하면 이해가 잘 가지 않을 수 있으니 그림을 예로 들어 이해해보자. 아래 그림의 2차원 평면상의 두 벡터를 보자. 

 

 

 

위 그림에서 두 개의 벡터 v1, v2가 있다. v2는 v1의 두 배에 달하는 길이를 가지고 있고 방향도 같다. 이들은 독립(Independent)일까 종속(dependent)일까? 당연히 종속(dependent)이다. 위의 정의에 따르면 v1의 두배에서 v2를 빼면 0이 되기 때문이다. 즉

 

 

위의 정의에 의해 c1=2, c2=1일때의 선형 조합을 통해 0이 만들어지기 때문에 v1과 v2는 종속관계이다. 

 

이번엔 직관적인 관점으로 보자. v1과 v2는 2차원 평면상에 존재하지만, 방향이 같다. 이는 같은 직선 상에 위치한 것을 의미하며 2차원 평면상에 존재하지만 이 두 벡터로는 1차원밖에 정의할 수 없다는 의미다. 이 말을 위의 독립에 대한 정의와 연결지어 생각해보자.

 

여기에서의 선형 조합(linear combination)이라는 것(일반적인 경우는 아님)은 사실 벡터는 변함없이 그대로이고 상수값 c만 바뀌게 된다. 이것이 의미하는 것은 벡터의 방향은 변함이 없고 크기만 바뀌게 되는데, 선형 조합에 이용되는 벡터들의 크기만을 조절하여 0을 만들기 위해선(모든 c가 0인 경우는 제외함) 반드시 벡터들의 방향이 같아야만 한다. 

 

결국 모든 계수가 0인 경우를 제외하고 선형 조합을 통해 결과가 0이 된다는 것은 두 벡터의 방향이 같아야만 성립되기 때문에 그림으로 판단하는 독립에 대한 우리의 직관과 위의 조건이 일치하는 것을 알 수 있다. 

 

 

이번엔 약간 특이한 경우를 살펴보자. 

 

위 그림처럼 v1벡터가 있고, v2가 0인 경우에 이들은 독립일까? 이들 역시 종속(dependent)이다. 계수 c가 모두 0인 경우를 제외한다고 해보자. v1에 0을 곱하고 v2에 어떠한 수를 곱해도 결과는 0이 될 수밖에 없다. 

 

 

결국 n개의 벡터 중 하나라도 0벡터일 경우엔 종속(dependent)이다.  

 

 

이번엔 독립(Independence)인 경우를 살펴보자. 2차원 평면에서 두 개의 벡터가 아래와 같이 있으면 독립이다. 

 

 

위 그림에서 두 벡터 v1과 v2를 이용하여 어떠한 선형 조합을 한다해도 0을 만들 수는 없다(c1, c2가 모두 0인 경우는 제외). 이를 직관적으로 봤을 때도 v1과 v2를 이용하여 2차원 공간상의 어떤 벡터도 만들어낼 수 있기 때문에 이 둘은 독립이다. 

 

 

그렇다면 아래 그림과 같이 여기에 v3가 추가되면 어떨까? 이 경우에도 이들은 독립일까? 

 

 

 

이들은 독립일까 종속일까? 이들은 종속(dependent)이다. 이를 어떻게 알 수 있을까? 우리가 이번 포스팅의 맨 처음에서 공부했던 background를 통해서 알 수 있다. 즉 background에서 공부했던 m<n인 경우에 관한 내용을 통해 2차원 평면에 3개의 벡터가 있을 경우, 종속임을 확인할 수 있다. 3개의 벡터의 Dependence와 background의 내용을 어떻게 연결지을 수 있을까? 다음을 보자. 

 

3개의 벡터를 아래와 같이 행렬 A의 column으로 표현해보자. 

 

 

 

column picture로 생각해봤을 때 이들은 2차원 공간상에 존재하며 3개의 벡터를 가지고 있다. 따라서 row의 수 m은 2, column의 수 n은 3이다. 이 경우 행렬 A는 2x3의 행렬로써 2개의 방정식(equation)과 3개의 미지수(unknown)을 가지고 있으며 맨 처음 background에서 봤던 m<n의 경우이다. 따라서 free variable이 존재하는 경우이다. 

 

선형 결합을 보이기 위해 x대신 c를 넣어서 Ac=0를 만들어보면 아래와 같다. 

 

 

위 식(4)에서 c벡터가 Null space에 존재할 때, 즉 어떤 c1, c2, c3값을 통해 선형 결합(Linear combination)을 수행한 결과 값이 영벡터가 될 경우 A의 column은 종속(dependent)이다. 같은 말을 다르게 써보자.

 
 
  • 어떤 행렬 A의 column vector가 선형 독립(Linear independence)이기 위해선 A에 대한 Null space가 오직 모든 변수가 0인 경우에 대해서만 존재해야 한다(x1=0, x2=0, ... xn=0).
  • 어떤 행렬 A에 대해서 Ax=0식에 대한 Null space가 x1=0, x2=0, ... xn=0와 같이 모든 x가 0일 때를 제외한 다른 경우가 존재한다면, 그 행렬 A의 column vector는 종속(dependent)이다.  

 

좀 더 쉽게 설명하자면 식 (4)가 만족하기 위해선 c1=0, c2=0, c3=0이면 당연히 결과도 0이 되므로 식이 만족할 것이다. 그런데 이렇게 모든 c값이 0인 경우를 제외하고 c벡터가 어떤 값을 가졌을 때 그에 대한 선형 결합 결과값이 0이 만들어진다면, 그 행렬 A의 column은 종속(dependent)관계가 된다는 것이다. 

 

식 (4)의 경우엔 c1=-0.7428, c2=0.5571, c3=0.3714일 경우 그에 대한 선형 결합 결과 값이 0이 되기 때문에 종속이 된다. 아래 그림은 식 (4)를 MATLAB을 통해 검증을 해본 결과이다. 위의 c값을 통해 세 개의 column vector를 더한 결과가 0이 되는 것을 그래프로 확인할 수 있었다. 

 

 

 

 

정리해보면...

어떤 벡터 v1, v2, ... vn이 있을 때, 이 벡터들이 독립(Independence)인지, 혹은 종속(Dependence)인지 판별하기 위한 기준은 다음과 같다. 

 

  • 독립(Independence)일때
- 벡터들을 행렬 A의 column으로 넣고 행렬 A의 Null space를 체크.
- 만약 이 행렬 A의 Null space(Ax=0)가 오직 zero vector만 존재할 경우, 이 벡터(행렬)들은 독립이다. 
- 이때의 행렬 A의 Rank는 column의 수 n과 같다. (Rank=n)
- 따라서 free variable이 존재하지 않는다
 
  • 종속(Dependence)일때
- 벡터들을 행렬 A의 column으로 넣고 행렬 A의 Null space를 체크.
- 만약 이 행렬 A의 Null space(Ax=0)가 zero vector이외의 다른 값이 존재할 경우, 이 벡터(행렬)들은 종속이다. 
- 이때의 행렬 A의 Rank는 column의 수 n보다 작다. (Rank<n)
- 따라서 free variable이 존재한다. 

 

 

아래는 MATLAB 코드

 

 

 

 

2. Span

 

이번에 알아볼 개념은 Span이다. Span의 사전적 의미는 동사로써 "(많은, 넓은 것을)포괄하다, 걸치다, 가로지르다" 등이 있다. 선형대수에서 span은 어떤 의미일까? 

 

선형대수(Linear algebra)에서 span은 보통 "span a space"라고 표현하곤 한다. 이를 굳이 해석해보면 "어떤 공간을 포괄하다"정도로 해석할 수 있겠다. 한글로 표현하기 약간 난해한 감이 없지 않아 있으나 대충 어떤 의미인지는 감이 올 것이다. 

 

이렇게 한 번 생각해보자. 예를 들어 두 개의 벡터 v1=[2, 3], v2=[3, 2]가 있다고 가정해보자. 이 두 벡터 v1, v2가 어떤 공간을 "span(포괄하다)한다" 라고 했을 때, 이것이 의미하는 것이 무엇일까? 벌써 감이 오는 사람도 있겠지만 정답을 이야기 하자면 span이라는 것은 이 벡터들로 형성할 수 있는 공간이다. 즉 v1과 v2의 선형 조합(Linear combination)을 통해 만들어지는 공간을 의미한다. 

 

사실 이 span에 대해서 우리는 이미 공부한적이 있다. 어떤 행렬 A의 column vector들을 가지고 가능한 모든 선형 조합을 하고 이를 통해 column space를 얻을(형성할) 수 있다. 다시말하면 column vector들이 column space를 "span"한 것이다. 

결국 "span a space"의 의미는 다음과 같이 정리할 수 있다. 

 



 벡터 v1, v2, ... vn이 어떤 공간(space)을 span한다의 의미:
  • 벡터 v1, v2, ... vn들의 가능한 모든 선형 조합(Linear combination)으로 공간을 형성하는 것을 의미한다. 이때 형성되는 공간은 조합되는 벡터에 따라 Rn이 될 수도, 혹은 부분 공간(subspace)이 될 수도 있다. 
  • 결국 "span"이라는 것은 벡터들의 모든 가능한 선형 결합(Linear combination)에 대한 결과벡터들을 하나의 공간에 몰아 넣은 것을 의미한다. 사용하는 벡터에 따라서는 모든 공간을 채울 수도 있고, 혹은 2차원에선 Line, 3차원 공간에선 평면(Plane)과 같이 부분적인 공간(subspace)만을 채울 수도 있는 것이다. 이러한 개념을 "span"이라 한다.



**우리는 이전 강의에서 실제로 MATLAB을 이용해 행렬의 column vector들의 선형 결합으로 부분 공간(subspace)를 만들어 본 적이 있다. 지난 강의 Lecture 5 - (2) 벡터 공간(Vector Spaces), 부분 공간(Sub Spaces)편에서 3. 행렬의 부분 공간편을 보면 "span a space"에 관한 구현 부분이 나온다. 여기서 3차원 공간의 부분 공간인 어떤 평면을 "span"을 통해 구현하였다. 

 

 

 

3. 기저(basis)

 

어떤 행렬 A의 column space를 생각해보자. column vector들을 선형 조합하여 column space를 얻는다.  column vector들이 column space를 "span"한 것이다. 이때의 column vector들은 독립(Independent)인가? 아니면 종속(Dependent)인가? 아마 독립일 수도, 종속일 수도 있을 것이다. 이는 column vector에 달려있다. 

 

이번에 우리가 관심을 가져야하는 벡터들은 바로 어떤 공간을 "span"하면서 그들이 독립(Independent)인 벡터들이다. 이것을 우리는 기저(basis)라 한다. 

 



기저(basis)는 다음의 두 가지 속성을 가지고 있다.  
  • 기저벡터들은 독립(Independent)이다. 
  • 기저벡터들은 공간(space)을 "span"한다.  

 

 

기저(basis)는 굉장히 중요한 개념이다. 기저에 대한 설명을 하기 위해 지금까지 독립과 span에 대해 설명했다고 해도 과언이 아니다. 전체 공간과 그 안에 있는 부분 공간(subspace)을 설명할 때에도 기저를 이해하는 것이 중요하다. 

기저(basis)에 대한 예를 들어 보자. 

 

3차원 공간(space) $R^3$를 생각해보자. R3에 대한 기저는 무엇일까? 독립이면서 3차원 공간 R3를 "span"하는 벡터가 무엇일까? 가장 먼저 떠올릴 수 있는 기저벡터는 아래 식 (5)와 같다. 

 

 

 

이들 벡터는 독립(Independent)이다. v1, v2, v3에 어떤 상수들(c1, c2, c3)을 곱해서 더해도 영벡터를 만들 수 없다(c1=0, c2=0, c3=0인 경우는 제외). 식 (5)를 잘 보면 우리에게 익숙한 행렬이 보인다. 바로 단위 행렬(Identity)인데, v1, v2, v3를 합쳐 행렬로 만들면 바로 단위행렬이 된다. 이 단위 행렬의 Null space는 무엇일까? 오직 [0, 0, 0]T 인 zero vector이다

 

또한 세 벡터 v1, v2, v3를 이용해 3차원 공간 전체를 "span"할 수 있다. 즉 세 벡터의 선형조합을 통해 3차원 공간상의 어떠한 벡터도 만들어낼 수 있다. 

 

따라서 위의 두 가지 사실로부터 식 (5)의 v1, v2, v3는 기저(basis)이다. 이는 실제로 x축, y축, z축을 나타낸다. 특히 이러한 형태를 표준 기저(standard basis)라 한다. 

 

 

여기서 한 가지 중요한 사실은 식 (5)의 벡터가 3차원 공간의 유일한 기저(basis)가 아니라는 것이다. 사실 3차원 공간의 기저는 무수히 많다. 한 가지 예를 더 들어보자. 

 

 

 

 

우리는 3차원 공간 R3의 또 다른 기저를 찾고 있다. 각 사례를 살펴보도록 하자. 

 

만약 식(6)에서 멈췄다고 가정해보자. 식(6)은 독립인가? 두 벡터를 이용해 영벡터를 만드는 상수는 오직 zero vector뿐이므로 독립이다. 그렇다면 식(6)의 벡터가 3차원 공간 전체를 "span"하는가? 그렇지 않다. 이 두 벡터만 가지고는 3차원 공간에서 어떤 평면(plane) 만을 "span"할 수 있다. 따라서 식 (6)은 R3의 기저가 아니다

 

식 (7)의 경우엔 어떨까? 세 번째 벡터가 첫 번째, 두 번째 벡터의 합이다. 따라서 독립이 아니다. 독립이 아니라는 것은 식(7)의 세 번째 벡터 [3 3 7]T는 첫 번째 벡터와 두 번째 벡터가 이루는 평면 상에 존재하는 것이다. 따라서 3차원 공간 전체를 "span"하지도 않는다. 따라서 식 (7)도 R3의 기저가 아니다

 

마지막 식 (8)을 보자. 식 (8)은 세 개의 3차원 column vector로 이루어져 있고, 서로 독립이다. 이는 3차원 공간 전체를 "span"한다. 따라서 식 (8)은 R3의 기저이다

 

 

이해를 돕기 위해 위의 식 중 (7)을 시각화 해보겠다. 아래 그림은 식 (7)이 3차원 공간에서 표현할 수 있는 영역을 표현한 것이다.

 

 

노란색 부분이 식(7)의 column space를 표현한 것이다. 보다 시피 평면이고 세 번째 벡터가 첫 번째와 두 번째 벡터가 이루는 평면위에 놓여있음을 알 수 있다. 따라서 식 (7)은 종속(dependent)임을 알 수 있다. 

 

 

아래는 MATLAB 코드

 

 

 

 

그렇다면 이렇게 우리가 어떤 벡터들을 가지고 있을 때, 이들이 N차원의 기저인지 아닌지를 어떻게 판별할 수 있을까? 

먼저 벡터들을 어떤 행렬의 column vector로 만들어서 하나의 행렬을 만든 다음 가우스 소거(Gauss Elimination)를 통해 echelon form 행렬을 만든다. 그런 뒤 이 행렬이 free variable을 갖는지, 혹은 모든 각 column vector가 pivot을 가지고 있는지를 확인하면 된다. 즉 행렬의 Rank를 가지고 판별하는 것이다. 

 

우리가 만약 N차원의 공간 $R^N$에 대해 n개의 벡터를 가지고 있을 때, 이들이 기저 벡터(basis vector)이기 위해서는 n x n 행렬이 역행렬이 존재(invertible)해야 한다. 즉 3차원 공간 R3의 기저는 3개의 3차원 크기의 벡터가 존재해야 하며, 결국 3x3 크기의 행렬의 역행렬이 존재해야하는 것이다. 식 (8)과 같이 말이다. 

결국 식(8)과 같이 3차원 벡터 세 개로 구성되면서 서로 독립인 어떠한 벡터도 3차원 공간 R3의 기저(basis)가 될 수 있다

 

 

 

4. 차원(dimension)

 

앞에서 언급했듯이 기저(basis)는 유일하지 않다. N차원의 공간(space)에 대해 무수히 많은 기저가 존재한다. 그렇다면 여기서 차원(Dimension)이라는 것은 무엇을 의미할까? 

일반적으로는 선(Line)을 1차원, 면(Plane)을 2차원, 입방체(cubic)를 3차원으로 알고 있을것이다. 하지만 여기에선 N차원에 대해 정의할 수 있도록 선형대수의 관점으로 차원을 보도록하자. 

 

기저를 설명할 때 사용했던 식(6), (7), (8)을 다시 보자. 

 

 

 

식(6)은 기저가 아니다. 하지만 정확히는 R3에 대한 기저가 아니다. 이렇게 얘기할 수 있는 것은 식(6)은 기저에 대한 조건 자체는 충족하기 때문이다. 식 (6)의 벡터는 독립이며, 이 벡터들의 선형 결합을 통해 형성할 수 있는 공간을 "span"하기 때문이다. 즉 3차원 공간의  부분 공간(subspace)인 2차원 평면(plane)에 대한 기저이다. 

 

그러나 어떤 차원의 공간, 즉 3차원 공간에 대한 기저를 이야기 할 때 식(6)은 기저라고 할 수 없다. 왜냐하면 이들은 3차원 공간을 표현하기엔 벡터가 부족하기 때문이다. 

식(7)의 경우엔 벡터의 수는 맞지만 독립이 아니기 때문에 기저가 아니다. 

 

반면 식(8)의 경우엔 독립이면서 벡터의 수가 차원의 수(N=3)와 같기 때문에 기저이다. 2차원의 기저가 되려면 두 개의 벡터가, 4차원의 기저가 되려면 네 개의 벡터가, N차원의 기저가 되려면 N개의 벡터가 있어야한다. column space든, Null space든 어떤 공간이던간에 마찬가지로 다음의 정의가 성립한다. 



차원(Dimension):


주어진 공간(space)들에 대한 모든 기저(basis)들은 같은 수의 벡터를 가진다. 여기서 벡터의 수가 바로 그 공간의 차원(Dimension)을 의미한다. 

 

차원은 그 공간이 얼마나 큰지를 나타내는 지표이다. 차원은 기저가 반드시 가져야 할 벡터의 수를 나타낸다. 4차원 공간의 기저가 되기 위해선 반드시 4개의 벡터가 필요하다. 3개는 적고, 5개가 있어도 많기 때문에 기저가 아니다. 반드시 4개가 필요하다. 

차원에 대한 예를 들어보자. 

 

 

- Column space의 차원:

 

 

식(9)의 행렬 A의 column space C(A)를 생각해보자. A의 column vector들은 column space C(A)를 "span"하는가? 

답은 YES이다. 당연히 column vector들이 column space를 "span"할 수 있다. 

 

그렇다면 A의 column vector들은 독립(Independent)인가? 

답은 No다. col4가 col1과 같고 col3은 col1+col2이기 때문에 종속(Dependent)이다. 

따라서 A의 column vector들은 A의 column space C(A)의 기저(basis)가 아니다

 

그렇다면 A의 column space C(A)의 기저(basis)는 무엇일까? 바로 pivot column인 col1과 col2이다. col1과 col2만 놓고 봤을 때 이들은 독립이면서 column space를 "span"한다. 나머지 col3, col4는 col1과 col2가 이루는 평면에 존재하기 때문에 새로운 차원을 정의하는데 전혀 도움을 주지 못한다. 

결과적으로 행렬 A의 column space의 기저는 pivot column인 col1과 col2 두 개의 column vector이고, pivot column의 개수는 곧 A의 Rank이다. 따라서 A의 rank(=2)는 column space C(A)의 차원(Dimension)과 같다. 

 

어떤 행렬 A의 Rank는 행렬 A의 column space C(A)의 차원(Dimension)이다.

(※ N차원이 아닌 행렬 A의 Column space의 차원임을 유의)

 

 

 

참고로 A의 column space의 기저(basis)는 pivot column을 어떻게 잡느냐에 따라 다양하게 설정할 수 있다. 예를 들면 [col1, col3], [col2, col3], [col3, col4], 혹은 그들의 선형 조합(Linear combination)형태가 될 수 있다. 단 이때의 pivot column들은 독립이어야 한다. ([col1, col4]와 같은 조합은 안됨)

 

 

- Null space의 차원:

 

이번엔 Null space의 차원에 대해 알아보자. A의 Null space의 차원은 어떻게 될까? 

A의 Null space(Ax=0)를 보자. free columns에 대응되는 free variable 두 개를 1과 0으로 번갈아 설정하여 두 개의 special solution을 계산하면 아래와 같다. (Lecture 7의 Null space계산법 참고)

 

 

 

계산해보면 각각 -col1-col2+col3+0=0, -col1+0+0+col4=0이 된다. 

 

위의 두 개의 special solution은 Null space의 기저(basis)일까? Null space가 이 두 개의 벡터의 선형 조합으로 만들어질 수 있을까? 

답은 YES이다. 위의 두 벡터는 Null space에 존재하는 두 개의 해이고, 독립이다. 또한 Null space의 차원은 free variable의 개수와 같은데, 행렬 A의 free variable은 두 개이고 서로 독립인 두 개의 Null space vector가 존재하므로 식 (10)의 두 벡터는 Null space의 기저이다. 이를 정리하면....

 

 

행렬 A의 column space C(A)의 차원(dim)은 rank의 수 r이고, 

행렬 A의 Null space N(A)의 차원(dim)은 free variable의 개수이다. 이는 전체 column의 수 n에서 pivot variable의 수인 r을 뺀 것과 같다. 따라서 n-r=4-2=2가 A의 Null space의 차원이 된다. 

 

 

 

5. 마치며

 

이번 포스팅에선 선형 대수에서 중요한 개념들인 선형 독립(Linear independence), Span, 기저(basis) 그리고 차원(dimension)에 대해 배웠습니다. 이들 각각은 서로 연관된 개념들이기 때문에 선형 독립부터 차원까지 차례로 하나의 글에 담게 되었네요. 그러다보니 글이 조금 길어졌지만 깊이있는 이해를 위해선 길더라도 처음부터 차례로 보는 것을 추천드립니다. 

 

지난 포스팅(Lecture 7)에선 선형방정식(Linear equation) Ax=0의 해(solution)인 Null space를 계산하는 법에 대해서 배웠다. 이번 포스팅에서는 우변에 값이 존재하는 형태의 선형방정식 Ax=b의 완전해(complete solution)에 대해 알아보자.

 

 

1. Ax=b의 해(solution)

 

어떤 선형방정식 Ax=b에 대한 해가 존재할 수도 있고 존재하지 않을 수도 있다. 해의 존재 여부를 우리는 소거법(Elimination)을 통해 판별할 수 있으며, 만약 해가 존재한다면 이 식에 대한 유일해(unique solution)나 해의 전체 집합을 알아내는 것이 우리의 목적이다. 

 

지난 강의(Lecture 7)에서 Null space를 구할 때 사용했던 행렬을 이용하여 해를 구해보도록 하자. 이번에는 우변이 0이 아닌 어떤 값 b가 존재하는 경우다. 아래 식 (1)은 지난번에 사용했던 행렬을 방정식의 형태로 나타낸 것이다. 

 

 

 

식 (1)의 방정식에서 좌변을 살펴보면 row3는 row1+row2와 같은 것을 알 수 있다. 그렇다면 이 선형방정식의 해가 존재하기 위해선 우변의 b1, b2, b3는 어떤 값이 와야 할까? b1=1, b2=5일 때 b3는 아무런 값이 되어도 상관없을까? b3=8인 경우엔 해가 존재하는가? 

 

결론적으로 이 경우엔 해가 존재하지 않는다. 해가 존재하기 위해선 좌변의 경우와 마찬가지로 b3가 b1+b2이어야 한다. 즉 b3=1+5=6이 되어야 해가 존재한다. 

결국 좌변의 어떤 선형 결합의 결과가 0이 된다면(row1+row2-row3=0), 우변의 같은 선형 결합도 0이 되어야 해가 존재한다

 

이제 실제로 위의 선형방정식의 소거를 통해 결과를 살펴보자. 기존에 우변이 0일 때는 좌변의 계수만 행렬로 만들었지만 우변에 어떤 값 b가 존재할 경우 b를 행렬의 오른쪽에 붙여서 Augmented matrix를 만든다. 아래는 b를 붙여서 만든 Augmented matrix의 모습이다. 

 

 

이제 소거를 해보자. 첫 번째 pivot을 기준으로 [row2=row2-2*row1], [row3=row3-3*row1]을 해주면 아래와 같이 된다. 오른쪽의 b도 같은 상수를 곱해서 동일한 방식으로 계산해주면 아래의 행렬과 같이 된다. 이때 pivot variable이 있는 첫 번째와 세 번째 column이 pivot column이 되고 나머지 두 번째와 네 번째 column이 free column이 된다. 

 

 

 

아직 두 번째 pivot variable(row2, col3)의 아래 원소가 전부 0이 아니므로 [row3=row3-row2]를 통해 소거하면 row3는 모두 0이 된다. 이때 우측의 b항은 아래와 같이 계산된다. 

 

 

소거를 마친 최종적인 U행렬은 아래와 같다. 

 

 

 

위의 식(5)에서 마지막 줄(row3)의 방정식을 살펴보자. 좌변은 계수들이 전부 0이다. 이것은 무엇을 의미하는가? 바로 우변의 값은 b3-b2-b1=0 이 되어야 한다는 것을 쉽게 알 수 있다. 계수가 전부 0이기 때문에 어떤 변수를 곱해도 결과는 당연히 0이 될 수 밖에 없다. 이것을 우리는 해가 존재하기 위해 필요한 조건인 가해 조건(solvability condition)이라 한다. 이 가해 조건이 만족되어야만 이 선형방정식의 해가 존재하는 것이다.

 

 

 

 

가해 조건이 만족되려면 b가 어떤 값이 되어야만 할까? b2와 b1을 우변으로 이항하면 b3=b2+b1과 같이 될 것이다. 즉 b2와 b1의 합이 b3와 같은 크기여야 한다. 이는 앞서 행렬 A의 좌변의 계수들이 row3=row2+row1과 같기 때문이다. 

 

그렇다면 b는 어떤 값이 오면 될까? 결과적으로 b1=1, b2=5, b3=6 일 때 식이 성립됨을 알 수 있다. 이때의 row3의 우변 값은 0이 되어서 식이 성립함을 알 수 있다. 

 

 

이와 같이 b에 대한 가해 조건(solvability condition)이 만족 되었기에 해가 존재하고 우리는 4개의 미지수에 대해 2개의 식으로 해를 구할 수 있다. 

 

그런데 식 (6)에서 나타난 가해 조건(solvability condition)은 일반적인 조건이 아니다. 이것은 식(1)의 선형방정식에 해당되는 내용에 관한 것이다. 그렇다면 이를 일반적인 b에 대한 가해 조건으로 표현하면 어떻게 될까? 이는 아래와 같다. 

 



b에 대한 가해조건(Solvability Condition on b):
  • 우변의 b벡터가 행렬 A의 column space안에 존재할 때, 선형방정식 Ax=b는 해가 존재한다. 
똑같은 말을 약간 다르게 표현해보자. 
  • 행렬 A의 row의 어떤 선형 결합이 zero row를 만들어낸다면, b에 대한 똑같은 선형 결합도 반드시 0이 되어야한다. 
  • (여기서 zero row가 되었다는 것은 어느 한 row가 다른 row에 dependent하다는 의미, 즉 다른 row들이 만들어낸 공간 내에 존재하기 때문에 새로운 차원을 정의하는 데에 기여하지 못한다는 뜻)
 

 

결국 Ax=b의 선형방정식에서 b에 대해 위의 가해 조건이 충족되어야만 해가 존재한다. 위의 가해 조건을 확인해보는 것은 결국 이 선형방정식이 해가 존재하는지를 확인해보는 작업이다. 

 

 

 

 

2. Ax=b의 완전해(complete solution)

 

 

Ax=b의 해가 존재하는지 확인했으면 그 다음은 해를 구하는 과정을 알아내는 것이다. 즉 해를 구하는 과정인 알고리즘을 알아봐야 한다. 

이제 Ax=b의 완전해(complete solution)를 구하는 알고리즘을 살펴보자. 크게 두 단계가 있는데 아래와 같다.  

 



  1. : 특수해(particular solution) x를 찾는다. 모든 free variable을 0으로 설정한 뒤, pivot variable에 대해 Ax=b를 푼다. 
  2. :  Null space해(Null space solution)를 찾은 뒤 특수해와 더해준다. 즉 이다. 
 

 

 

- 1) 특수해(particular solution):

 

첫 번째 과정은 Ax=b에 대한 특수해(particular solution) x를 찾는 것이다. 여기서 특수해라는 것은 소거를 마친 행렬 U에서 free variable을 모두 0으로 만든 다음 pivot variable에 대해서 구한 해를 의미한다. 위의 행렬 A에 대한 특수해를 실제로 구해보자. 우선 식 (7)을 선형방정식의 형태로 다시 써보면 아래 식의 오른쪽과 같다. 

 

 

 

 

식 (8)에서 free variable은 식(7)에서 pivot이 없는 free column에 대응하는 x값들이다. 즉 x2와 x4가 free variable이다. 이들은 0으로 설정하면 식(8)은 (9)와 같이 되고, 후방대입법(back substitution)을 이용해 나머지 값들을 구하면 해는 x1=-2, x3=3/2가 된다.  

 

 

 

따라서 Ax=b에 대한 특수해는 아래와 같다. 

 

 

 

 

- 2) Null space solution:

 

첫 번째 단계인 특수해를 구했으니 이제 Null space 해를 구할 차례이다. Null space의 해는 알다시피 Ax=0을 만족시키는 x이며, 완전해를 계산하기 위한 두 번째 단계이다. 그런데 이번 포스팅에서 사용하는 행렬 A는 지난 강의 Lecture 7에서 사용했던 행렬이다. 지난 강의에서 우리는 이 행렬 A에 대한 special solution을 구한적이 있다. 

special solution은 위의 행렬 A에서 두 개의 free variable중 하나를 1, 나머지 하나를 0으로 만들고 pivot에 대해 계산하고, 반대로 0, 1로 설정하여 각각 계산한 두 개의 해이다. free variable이 두 개 이기 때문에 그 개수만큼 special solution이 만들어진다. 이 special solution 두 개의 선형 결합(Linear combination)이 Null space 전체를 표현하기 때문에 이 special solution들을 그대로 사용하도록 하겠다. 사실 이 special solution이 아닌 Null space상에 존재하는 어떠한 벡터를 사용해도 상관없다

 

special solution의 해를 구하는 자세한 과정은 지난 강의(Lecture 7)를 참고하고 결과적으로 해는 아래와 같다. special solution역시 Null space상에 존재하는 해이기 때문에 완전해를 구하기 위한 두 번째 해로 사용하도록 하겠다.  

 

 

 

두 special solution의 선형 결합이기 때문에 각 해의 앞에 상수c를 각각 곱해준다. 

 

 

 

- 3) Complete solution:

 

두 개의 해(particular, complete solution)를 구했으니 이제 완전해(complete solution)을 구할 차례이다. 완전해는 앞서 언급했듯이 특수해(particular solution)와 Null space해를 더해주면 된다. 이를 식으로 표현하면 아래와 같다. 

 

 

xp는 particular solution을, xn은 Null space solution을 각각 의미한다. 

그렇다면 완전해(complete solution)구하기 위해 이러한 조합을 사용하는 이유는 무엇일까? 아래 식을 보자. 

 

 

Axp=b에서 b가 A의 column space상에 존재한다면 이 선형방정식은 해가 존재한다. 이때 이 해에 우리는 Null space상에 존재하는 어떤 벡터를 더해도 되는데 이유는 식 (13)이 성립하기 때문이다. 즉 Null space에 대한 선형방정식의 우변은 0이다. 따라서 이 두 방정식을 더한다고 해도 우변은 b가 그대로 오기 때문에 수학적으로 가능한 이야기이다. 

 

식(1)의 Ax=b에 대한 완전해(complete solution)는 특수해와 Null space해를 더한 형태인 아래 식(14)가 된다. 

 

 

 

다시 한 번 이야기 하지만 Null space해 전체는 두 개의 special solution의 선형 조합으로 표현이 되고, special solution이 두 개인 이유는 free variable이 두 개이기 때문이다. 

여기서 Null space해는 유일해가 아니기 때문에 subspace인 Null space전체를 표현하기 위해 각각에 상수 c1, c2가 곱해져 있는 것을 볼 수 있다. 

 

그렇다면 특수해(particular solution)에도 상수 c가 곱해질 수 있을까? 

정답은 No다. 

 

식 (13)을 보면 특수해의 경우는 Ax=b의 해를 구하는 것이고 우변의 b가 특정 값으로 정해져 있다. 따라서 우리는 이 식을 만족시키는 어떤 특수한 해를 구하는 것이기 때문에 상수를 곱해선 안된다. 

반면 Null space의 해의 경우엔 space라는 말처럼 Ax=0의 해들의 집합이 공간을 이루는 형태이다. 즉 부분 공간(subspace)이기 때문에 여러 개의 해가 존재할 수 있고 따라서 다양한 해들을 정의할 수 있도록 상수를 곱해주는게 가능하다. 

 

사실 애초에 우변 벡터 b가 0이 아닌 임의의 상수일 땐 해에 대한 부분 공간을 정의할 수 없다고 이미 Lecture 6의 후반부에서 언급하였다. 결론적으로 Ax=b의 완전해는 어떤 하나의 특정해(particular solution)와 Null space해인 부분 공간(subspace)의 합으로 표현될 수 있다

 

 

- Plot of Complete solution:

 

위에서 완전해에 대한 설명은 했는데, 사실 말과 수식만으로는 잘 이해가 가지 않을 수 있다. 그림으로 이해를 돕도록 하자. 완전해를 그려야 하는데 다시 보니 4차원 공간 R4이다. 필자의 머리로는 4차원 공간을 이 포스팅 공간에 그려넣을 방법이 생각나지 않지만 아인슈타인은 4차원 공간을 그렸다고 하니 따라해보도록 하자. 

 

 

 

 

 

이것이 x1, x2, x3, x4로 이루어진 4차원 공간의 plot이다. 왜 이렇게 그려져야 하는지는 필자도 잘 이해가 가지 않는다. 차원이라는 것은 높은 차원이 이전의 모든 차원에 직교(Orthogonal)해야 한다. 4차원에서 4번 째 벡터가 1,2,3번 째 벡터를 어떻게 직교하는지는 잘 모르겠지만 일단 넘어가도록 하자. 

 

위 그림에서 Null space라고 하는 평면은 식 (14)에서 뒤쪽의 상수 c1, c2가 곱해진 두 개의 벡터로 형성되는 평면이다(두 벡터의 선형 결합으로 형성되기 때문에 평면의 형태가 됨). 원래 Null space만 있었다면 이는 R4의 원점을 지나는 부분 공간(subspace)이 된다. 그러나 xp가 더해졌기 때문에, 혹은 xp에 Null space가 더해진 형태이기 때문에 결과적으로 Null space가 xp만큼 shift된 형태가 된다. 즉 원점이 아닌 xp를 지나는 Null space인 것이다. 결국 원점을 지나지 않기 때문에 더이상 부분 공간(subspace)이 아니다

 

위 그림에서 빨간색 벡터와 빨간색 점은 xp를 나타내고 xn은 Null space 평면에 존재하는 어떤 벡터를 나타낸다. 이 둘을 더하면 우리가 구하고자하는 완전해(녹색 벡터)인 x_complete(=xp+xn)를 구하게 된다. 

 

 

 

 

3. Rank

 

지금까지 우리는 선형방정식 Ax=b의 완전해를 구하는 방법을 공부하였다. 여기서 예를 든 행렬 A의 형태는 3x4크기에 pivot variable이 2개, free variable이 2개 있는 형태이고, 이때의 rank는 2이다. 이제 이 예제를 넘어 좀 더 큰 그림을 생각해보자. 행렬의 형태와 크기, 그리고 rank에는 어떠한 상관관계가 있을까? 

 

m by n 크기에 rank r을 갖고 있는 행렬 A가 있다고 가정해보자. m은 row의 수, n은 column의 수이고 r은 rank의 수이다. rank는 앞서 언급했듯이 pivot variable의 개수이다. 이때의 rank는 

을 만족한다. 

r=n일 때를 Full column rank라 하고, r=m일 때를 Full row rank라 한다. 이때 다음 질문을 한 번 생각해보자. 

 

 

Full column or Full row rank일 때, 

- 이는 해(solution)에 관해 무엇을 암시하는가? 

- 이는 Null space에 대하여 무엇을 말하고 있는가? 

- 이는 완전해(complete solution)에 대하여 무엇을 말하는가? 

 

Rank에 대한 각 case별로 해(solution)와 어떤 상관관계를 가지는지 한 번 살펴보도록 하자. 

 

 

- Full column rank (r=n):

 

Full column rank는 r=n을 의미한다. 즉 rank가 column의 개수와 같으며, 모든 column이 pivot을 가지고있다. 이때 중요한 것은 Full column rank일 때 free variable이 없다는 것이다. free variable이 없기 때문에 행렬 A의 Null space는 오직 영벡터(zero vector)뿐이다. 즉 각 column의 선형 조합으로 0을 만들 수 있는 해 x는 오직 zero vector 뿐이다. 

그렇다면 해(solution)는 어떨까? 해가 존재한다면 유일한 해(unique)가 존재하게된다. 이를 정리하면 아래와 같다. 

 

 Full column rank (r=n)
 Rank   =n (number of columns) 
 Free variable  No free variable
 Null space   only  zero vector
 Solution  0 or Unique solution

 

글 만으로는 이해가 어려울 수 있으니 실제 예제를 통해 Full column rank의 형태를 살펴보도록 하자. Full column rank를 보여주기에 적절한 형태인 4x2 행렬을 보자. 소거를 통해 Reduced row echelon form으로 가기까지의 과정을 모두 나타내도록 하겠다. 혹시 소거 과정이 잘 이해가 가지 않는다면 지난 강의를 다시 보길 바란다. 

 

 

 

 

 

식 (15)의 마지막 줄 우측의 행렬이 바로 A의 Reduced row echelon form이다. 결과적으로 row3와 row4는 소거를 통해 영벡터가 되었다. 이는 row3와 row4는 row1과 row2에 dependent하기 때문이다. 즉 row3와 row4는 row1과 row2의 선형 조합으로 만들어진다. 결국 independent한 row는 row1과 row2뿐이다. 

 

이제 Ax=b의 해(solution)에 대해 알아보도록 하자. Full column rank일 때 해는 아예 존재하지 않거나, 혹은 유일해(unique solution)가 존재한다. 이는 free variable을 모두 0으로 만들어서 구한 특수해(particular solution)를 의미하며, 식(15)의 행렬 A는 free variable이 없기 때문에 해가 존재할 경우 바로 특수해가 된다. 

 

그렇다면 이 행렬 A에 대해 Ax=b는 b가 어떤 값이어도 해가 존재할까? 정답은 No다. 

일단 Ax=0인 Null space를 살펴보면 해가 영벡터인 경우를 제외하고 어떠한 column 조합으로도 우변을 0으로 만들 수는 없다. 

Ax=b인 경우에도 역시 항상 해가 존재하지는 않는다. 해가 존재하기 위해선 b가 A의 column들의 선형조합으로 만들어지는 column space에 존재해야한다. 

따라서 해가 존재하기 위해선 b가 A의 column들의 선형조합으로 만들 수 있는 값이어야 한다. 세 가지만 예를 들어보겠다. 

 

 

위와 같이 A의 column space에 존재하는 해들의 경우엔 각 b에 대한 특수해(particular solution) 혹은 유일해(unique solution)가 존재한다. 

이를 MATLAB으로 확인할 수 있다. 행렬 A와 b가 설정되어 있을 때 해(x)를 구하는 명령어는 x=A\b이다. 아래의 코드를 참조하여 상수값을 바꿔가며 확인해 보도록 하자. 

 

 

 

 

 

- Full row rank (r=m):

 

이번에는 Full row rank를 살펴보도록 하자. r=m, 즉 rank와 row의 수가 일치하는 경우이다. 모든 row가 pivot을 가지는 경우이다. 

그렇다면 모든 b에 대해 해를 가지는가? 즉 Ax=b에서 b가 어떤 값을 가지더라도 해를 가질 수 있는가? 정답은 Yes이다. 항상 해가 존재한다. 그렇다면 이때 free variable은 몇 개일까? n-r개 이다. 위에서 예를 들었던 행렬 A의 Transpose의 형태를 가지고 이해를 해보도록 하자. 

 

 

 

소거를 통해 행렬 A의 Reduced row echelon form을 만들었다. 왼쪽의 col1과 col2가 pivot columns을 나타내며 단위 행렬(Identity)의 형태를 띄는 것을 볼 수 있다. 오른쪽의 col3과 col4는 free column을 나타낸다. 여기에선 Full row rank, 즉 row의 숫자와 rank의 숫자가 같기 때문에 zero rows는 없다. 

결론적으로 free variable이 두 개가 존재하기 때문에 항상 해가 존재하며 special solution이나 Null space해도 존재한다. Full row rank에 대해 정리하면 아래와 같다.

 

Full row rank (r=m)
 Rank =m (number of rows) 
 Free variable  n-r or n-m
 Null space  Exist
 Solution  Exist for every b

 

마찬가지로 MATLAB으로 확인해볼 수 있다. 아래 코드를 참고하여 constant를 바꿔가며 해가 맞는지 확인해보도록 하자.

 

 

 

- Full row and column rank (r=m=n):

 

마지막으로 살펴볼 case는 가장 중요한 case라고도 볼 수 있다. 바로 rank가 m와 n과 같은 경우다(r=m=n). 즉 정방행렬(square matrix)이면서 Full rank인 경우를 말한다. 바로 예를 들어 이해해보자. 

 

 

식 (18)의 행렬 A는 2x2크기의 정방행렬이다. A대한 Reduced row echelon form은 단위 행렬과 같은 것을 알 수 있다. 이 경우엔 A는 역행렬을 가질 수 있다(Invertible). 

이 경우에 Null space는 존재하는가? 오직 zero vector만 존재한다. 

모든 b에 대한 Solution은 존재하는가? b에 대한 유일해(unique solution)가 존재한다. 

Full row and column rank에 대해 정리하면 다음과 같다. 

 

Full row and column rank (r=m=n)
 Rank =m=n (number of rows and columns) 
 Free variable  No free variable
 Null space  only zero vector
 Solutions  1 unique solution


아래는 Full row and column rank에 대한 MATLAB 코드이다. 

 

 

 

4. 마치며

 

이번 포스팅에선 선형방정식의 완전해(complete solution)를 구하는 방법에대해 배웠다. 완전해를 구하기 위해선 어떤 행렬 A에 대한 유일해를 구하고 Null space를 구하여 이 둘을 더해줘야 한다는 것을 알았다. 

 

또한 우리는 Rank에 따라 해(solution)가 어떻게 정의되는지, rank와 row와 column의 수가 어떠한 관계를 가지고 있는지에 대해 배웠다. 아래는 Rank에 따른 해와 상관관계를 한 번에 정리한 표다. 

 

r : rank

m: number of rows

n : number of columns

 r=m=n  r=n<m  r=m<n  r<m, r<n
Reduced row echelon form:




- Square invertible case
- Ax=b에 대해 오직 하나의 해만 존재함
Reduced row echelon form: 


- 해가 아예 없거나
- 오직 하나의 유일해(Unique solution)만 존재
 Reduced row echelon form: 
(※ F can be mixed to the I)


- 항상 해가 존재한다. 
- 무한대(
)의 해가 존재
 Reduced row echelon form:
(※ F can be mixed to the I)


- 해가 아예 없거나  
- 무한대(
)의 해가 존재

 

이 말을 기억하자. 

 

Rank는 해의 실제 값들을 제외하곤 해의 모든 것들을 말한다. 

 

우리는 지난 포스팅에서 영공간(Null Space)에 대해 공부하였다. 또한 벡터 공간(Vector Space)과 임의의 행렬 A의 Column space에 대해서도 공부하였다. 이번 포스팅에선 Null space를 구하는 절차, 즉 Ax=0의 해를 구하기 위한 알고리즘(algorithm)을 공부해 보도록 하겠다. 또한 특별한 형태의 솔루션인 기약행 사다리꼴(Reduced row-echelon form)에 대해서도 공부해 보도록 하겠다. 

 

지난 포스팅에서 배웠듯이 Null space는 Ax=b의 선형방정식(Linear equation)에서 우변의 b가 영벡터(zero vector)일 때, 즉 Ax=0의 해에 대한 집합을 의미한다. 이 Null space는 벡터 공간이며 또한 부분 공간(subspace)이기도 하다. 벡터 공간에 대한 강의(Lecture 5, 6)내용을 잘 이해하도록 하자. 

 

 

 

1. Ax=0의 해(Null space)를 계산하기 위한 알고리즘

 

3x4크기의 직사각 행렬(Rectangular Matrix) A를 아래와 같이 정의하자. 행렬 A의 row와 column을 자세히 살펴보자. 뭔가 특이점이 보이는가? 앞선 포스팅의 내용을 성실히 공부했다면 특이점이 보일 것이다.  

 

 

우선 A의 column을 살펴보자. column 2는 column 1의 2배에 해당하는 것을 눈치 챘는가? 즉 column 1과 column 2는 같은 방향을 나타내므로 상호 종속적이다(dependent)

다음은 row를 살펴보자. row 1과 row 2를 더하면 row 3가 된다. 따라서 row 3는 독립적이지 않다(not independent)

 

우리가 이렇게 눈으로 찾은 행렬 A의 특이점들은 A의 소거(Elimination) 과정에서 나타날 것이다. 우리는 지난 포스팅에서 소거법에 대해 공부했다. 지금까지의 소거법은 정방행렬(square matrix)에 대해서만 공부하였지만, 이번에는 직사각 행렬(Rectangular matrix)에 대해 진행할 것이다. 또한 소거 과정에서 pivot의 위치에 0이 나왔을 때 어떻게 진행하는지에 대해서도 알아보자. 

 

다시 한 번 정리하자면 지금 우리의 목표는 Ax=0의 해, 즉 Null space를 구하는 것이다. 이 Null space를 구하는 방법은 행렬 A를 소거(Elimination)하는 것이다. 여기서 중요한 포인트는 소거를 하는 과정에서 우리는 Null space를 변화시키지 않는다는 것이다. 소거 과정에서 사실은 column space는 바꾸겠지만 결과적으로 봤을 때 그 과정에서 해의 집합인 Null space는 바뀌지 않는다. 

 

Ax=0의 방정식을 봤을 때 Null space라는 것은 좌변의 A행렬과 우변의 영벡터 b에 대한 방정식을 만족시켜야만 하는 해의 집합인 것이다. 따라서 소거 과정에서 행렬 A의 column space는 변할 수 있으나 본래의 A와 영벡터 b에 대한 방정식을 만족시키는 해의 집합 자체는 변하지 않는 것이다. 

지금 당장은 이 말이 잘 이해가 가지 않겠지만 앞으로의 과정을 잘 살펴보고 이 말을 다시 한 번 생각해보자. 

 

자 이제 소거를 시작해보자. 

 

A의 첫 번째 pivot은 1이다. pivot 바로 아래의 원소인  A(row2, col1)=2를 소거해야 하므로 row2 = row2 - 2*row1 를 계산하면 식 (2)의 step1과 같이 된다. row3도 역시 소거를 하려면 row3 = row3 - 3*row1 를 계산하면 step2와 같이 된다. 

 

 

 

이것이 소거 과정의 첫 번째 stage다. 첫 번째 pivot의 아래에 있는 원소는 모두 0으로 만들어 소거하였다. 이제 다음 stage인 column 2를 살펴보자. 원래 같았으면 두 번째 pivot은 A(row2, col2)인데, 식(3)과 같이 값이 0이다. Lecture 2에서 배웠듯이 0인 원소는 pivot이 될 수 없다. 

 

만약 이 두 번째 pivot의 아래의 원소 A(row3, col2)가 0이 아닌 값을 가진다면 행 교환(row exchange)을 통해 pivot값을 바꿔서 설정해주면 된다. 그러나 이 역시 0이기 때문에 결과적으로 column 2에서의 소거는 더이상 진행되지 않는다. 즉 두 번째 pivot은 column 2에 없다. 

이것이 의미하는 것이 무엇일까? column 2에 원래 존재해야 할 pivot이 없는 이유는 무엇일까? 바로 A의 column 2는 column 1에 종속적(dependent)이기 때문이다. 식 (2)의 행렬 A를 보면 col1의 2배가 col2인 것을 알 수 있다. 즉 두 column이 같은 선상에 위치한다는 의미이다. 

 

 

 

여기서 멈추지 않고 이제 세 번째 column을 보자. 세 번째 column의 두 번째 row부터는 0이 아닌 값이 존재한다. 결국 두 번째 pivot은 A(row2, col3)=2가 될 것이다. 두 번째 pivot을 기준으로 아래의 원소들을 0으로 만들자. 이때 아래의 row3와 pivot이 있는 row2는 같다. 따라서 row3=row3-1*row2가 될 것이다. 결과는 식 (4)의 step1이 된다. 

 

 

 

이제 소거는 모두 끝났다. 결국 이 행렬이 U행렬인데, 알다시피 U행렬은 상삼각행렬(Upper triangular matrix)를 의미한다. 그러나 이 결과 행렬은 삼각형 모양이 아니라 계단 형태이다. 이를 echelon form이라 한다. 

 

여기서 우리는 행렬 A에 대한 굉장히 중요한 숫자 한 가지를 발견했다. 바로 "pivot의 개수(number of pivots)"이다. 소거를 통해 알아낸 행렬 A의 pivot의 개수는 2이다. pivot 개수 2가 의미하는게 무엇일까? 바로 행렬 A의 Rank이다. 

 

행렬 A의 Rank는 2이다. 

 

 



 임의의 행렬 A에 대해 U행렬을 얻기 위해 행렬 A를 소거(Elimination)한다. 소거 과정에서 pivot의 개수를 알아낼 수 있는데 이때 pivot의 개수가 바로 행렬 A의 Rank이다. 


 Rank는 시스템 행렬 A의 선형 독립(Linearly independent)인 row혹은 column vector의 수를 나타낸다. 이 Rank는 소거 과정에서 나타나는 pivot의 개수와 일치한다. 


Rank of A = number of pivots

 

 

 

 

 

 

 

우리는 지금까지 Ax=0에 대한 해를 구하고자 했다. 그런데 이번에는 위에서 계산한 식(4)의 A를 소거한 행렬인 U에 대한 해, 즉 Ux=0를 구하고자한다. 여기서 한 가지 염두해둬야 할 것은 Ax=0와 Ux=0의 해가 똑같은 Null space에 존재한다는 것이다. A를 소거하여 만든 행렬 U는 비록 A와 비교했을 때 column space는 변했겠지만 해는 동일한 Null space에 존재한다. 이것이 앞단에서 말했던 소거과정에서 Null space는 바뀌지 않는다는 것이다. 

 

결국 Ax=0와 Ux=0의 해는 같은 Null space이다. 

 

그렇다면 Ux=0의 해는 어떻게 기술할 수 있을까? 물론 Ax=0를 계산할때와 같이 해는 존재하겠지만 이 경우엔 조금 다른 관점으로 바라봐야한다. 이를 위해 제목에서도 나와있듯이 이번 포스팅에서 중요한 것 중 하나인 pivot variablefree variable에 대해서 공부해보겠다. 우선 아까 계산한 U행렬을 다시 보자. 

 

 

 

 

U행렬에서 우리는 pivot column과 free column을 찾아야한다. 소거 과정에서 찾았던 pivot이 있는 column이 pivot column이고, 이를 제외한 나머지 column이 free column이다. 

그렇다면 여기에 왜 free라는 단어를 사용했을까? 이는 우리가 Ux=0의 해를 구할 때 free column에 대응되는 변수에 우리가 원하는 임의의 값을 자유롭게 설정할 수 있기 때문이다. 식(5)에서 free column은 2번째와 4번째이므로 solution 벡터 x에서 column2와 column4에 각각 곱해지는 x2와 x4는 우리가 원하는 값으로 설정할 수 있다. 그런 다음 x1과 x3에 대해 해를 구하면 된다. 이해가 잘 안갈테니 바로 예를 들어 설명해보자. 

 

아래는 Ux=0에서 해(solution) x벡터를 나타낸다. 앞서 말했듯이 x2와 x4에 임의의 값을 설정해보자. 일단 계산하기 가장 편리하도록 x2=1, x4=0으로 설정해보자. 100이던 -3891이던 어떤 값을 넣어도 상관없다. 

 

 

x의 free variable값을 설정했으니 이제 Ux=0에 대해서 풀어보자. 행렬로 자세히 풀어서 표현하면 아래 식 (7)과 같다. 

 

 

식 (7)을 다시 방정식으로 표현해보자. U의 row3는 모두 0이기 때문에 제외하면 총 2개의 방정식을 가진다. U의 row1과 row2를 각각 방정식으로 정리하면..

 

 

 

x2와 x4는 1과 0으로 각각 설정해서 값을 알고 있다. 나머지 x1과 x3는 Lecture 2에서 배웠던 후방대입법(Back substitution)을 통해 값을 찾을 수 있다. 이제 값을 찾아보자. 

 

x2=1, x4=0일 때, x3는 값이 얼마인가? 식 (8)의 두 번째 식에 후방대입법을 통해 x3=0임을 알 수 있다. 이제 x2=1, x3=0, x4=0이 되었다. 그렇다면 x1은 얼마인가? x1=-2임을 쉽게 계산할 수 있다. x를 다시 써보면..

 

 

 

 

x가 바로 Ux=0의 해(solution)이며 Null space이다. 또한 Ax=0의 해 이기도 하다. Ux=0와 Ax=0에서 위 x의 의미는 각 행렬에서 -2*col1 + 1*col2 = 0를 의미한다. 즉 column picture형식으로(Lecture 2) 정리하면 아래와 같다. 

 

 

 

Ux=0에서 구한 해 x를 Ax=0에도 똑같이 적용해도 식이 성립하는것을 볼 수 있다. 따라서 맨 처음 말했던 column space는 바뀔지언정 해(solution)인 Null space이는 변하지 않는다는 말이 이제 조금 이해가 될 것이다. 

 

 

 

 

 

 

- More solutions in Null space:

 

우리는 앞서 A와 U에 대한 해 x를 찾았다. 이 해는 Null space에 있다. 따라서 한 개가 아닐 것이다. 그렇다면 나머지 해들은 어떻게 찾을까? 바로 임의의 상수 c를 x에 곱해주면 된다. 식은 아래와 같이 될 것이다. 

 

 

 

 

임의의 상수 c가 곱해진 해 x는 4차원 공간 R4에서 무한대의 2차원 line을 표현한다. 이때 x는 분명 Null space상에 존재한다. 이와 관련해 아래 물음을 한 번 생각해보자. 

 

그렇다면 위의 식(12)에 있는 x는 A와 U에 대한 모든 Null space를 나타낼까? 

 

정답은 No다. 

우리는 이 시스템에서 2개의 free variable을 가지고 있다. 즉 x2와 x4가 free variable인데, 우리는 x2=1, x4=0으로 결정했을 때의 해를 구한 것이다. 다른 free variable을 선택했을 때의 해를 한 번 구해보자. 역시 어떠한 값을 적용해도 상관 없지만 계산을 쉽게 하기 위해 x2=0, x4=1을 대입해보도록 하겠다. 

 

 

위와 같이 값을 설정하고 아까의 후방대입법(back substitution)과정을 반복하면 된다. 식 (8)에 나타난 방정식을 아래와 같이 다시 써보자. 

 

 

후방대입법으로 계산하면 x3=-2, x1=2가 됨을 알 수 있다. x를 정리하면 아래와 같다. 

 

 

 

x가 선형방정식에서 의미하는 것은 2*col1+0*col2-2*col3+1*col4이다. U와 A의 방정식에 각각 대입하여 계산해보면 성립하는 것을 알 수 있다. 

 

 

자 이렇게 해서 우리는 Null space상에 존재하는 두 개의 해 (12)와 (15)를 구했다. 이 두 개의 해는 임의의 free variable을 설정하여 구한 해(solution)이며 이를 special solution이라 한다. 보통 special solution을 계산할 때는 첫 번재 free variable을 1로 놓고 나머지는 0, 그 다음은 두 번재 free variable만 1로 놓고 나머지는 0으로 설정하는 식으로 계산한다. 식 (15)의 x에 관련된 나머지 해들도 역시 여기에 임의의 상수를 곱해주면 구할 수 있다. 

 

 

임의의 상수 d를 직접 곱했을 때에도 식이 성립하는지 각자 확인해보자. 

 

우리는 식 (12)와 (18)에 나타난 두 개의 해를 가졌다. 각각은 Null space상에 존재하고, 이들은 임의의 free variable을 설정하여 만들어진 해들이다. 이제 우리는 이 두 개의 해의 선형 결합(Linear combination)을 통해 전체 Null space를 정의할 수 있다

 

 

 

그렇다면 이 special solution은 얼마나 존재하는 걸까? 이는 각 free variable마다 존재한다. 그럼 free variable은 얼마나 존재하는 걸까? 

 

우리는 앞서 행렬 A의 rank가 2이고 rank는 pivot variable의 수임을 배웠다. pivot variable의 수는 m(rows) x n(columns)행렬에서 column의 수인 n에 대해서 정의된다. 즉 n개의 column중에 pivot이 어느 column에 설정되는지를 보는 것이다. 그렇다면 free variable은 pivot을 뺀 나머지 column의 수가 될 것이다. 즉 column의 수에서 rank의 수를 뺀 것과 같다. 

 

 

column의 수 4에서 rank의 수 2를 뺀 2가 최종적인 free variable의 수가 된다. 조금 더 쉽게 설명하자면 다음과 같다. 

행렬 U는 두 개의 free variable을 가지고 있고 한개의 free variable이 하나의 해(solution)에 대한 line을 표현 했다고 생각하자. 이때 우리는 두 개의 free variable을 가지고 있기에 총 두 개의 line을 가지고 있으며 이 두 라인의 선형 결합으로 하나의 평면(plane)이 행렬 A의 Null space 전체를 표현하는 것이다.  

 

지금까지 배운 알고리즘을 통해 우리는 임의의 행렬 A의 모든 Null space를 구할 수 있다. 

 

 

 

 

 

 

 

 

2. 기약행 사다리꼴 행렬(Reduced row echelon form)

 

우리는 앞의 section에서 행렬 A를 소거하여 U를 만들었다. 이때의 U는 계단 형태를 보였고 이를 echelon형태임을 알았다. 이번 section에선 이 U행렬에대해 좀 더 알아보고 이를 더 간소화(소거) 시킨 형태인 기약행 사다리꼴 (Reduced row echelon form)을 만드는 법을 알아보도록 하자. 이는 쉽게 말해 어떤 행렬에 가우스 소거법(Gauss Elimination)을 적용했을 때 계단 모양이 나오며, 몇 가지 조건을 만족하는 행렬을 의미한다. 우선 U행렬의 식 (5)를 다시 보자. 

 

 

U행렬을 잘 보면 세 번째 row가 전부 0인 것을 알 수 있다. 왜 row3는 0이 될까? 바로 소거 전의 행렬 A의 row3가 row1과 row2의 선형 결합이기 때문이다. 식 (1)을 보면 row3=row1+row2인 것을 볼 수 있다. 결국 row3가 row1과 row2에 종속적(dependent)이기 때문에 소거를 한 행렬 U의 세 번째 row가 0이 되는 것이다. 이러한 관계를 소거(Elimination)작업이 찾아내는 것이다. 

 

자 이제 U행렬을 다시 한 번 간소화 해보도록 하자. 어떻게 하면 될까? Lecture 3에서 배웠던 Gauss-Jordan소거법을 기억하는가? 이와 같이 이번엔 아래에서 위쪽으로 소거를 진행하는 것이다. 그럼 어느 부분을 소거해야할까? 역방향(위쪽)으로 소거를 진행할 땐 pivot원소의 위쪽에 있는 원소들을 소거하는 것이다. 즉 기약행 사다리꼴 행렬(Reduced row echelon form matrix)은 pivot 원소들의 아래, 위로 모두 0이 되어야 한다. 이제 U행렬을 한 번 소거해서 기약행 사다리꼴로 만들어보자. 

 

 

바로 위의 식 (5)에서 pivot 원소가 두 개 존재한다. 첫 번째 pivot(row1, col1)은 아래 위로 모두 원소가 0이다. 그러나 두 번째 pivot(row2, col3)은 위쪽 원소(row1, col3)가 2이다. 따라서 이를 소거해줘야한다. 소거 방법은 소거할 원소가 pivot과 같기 때문에 1을 곱해서 빼주면 된다. 즉 row1 = row1 - row2 와 같이 하면 된다. 결과는 아래와 같다. 

 

 

 

여기서 기약행 사다리꼴이 되기 위한 한 가지 과정을 더 진행해보자. 바로 pivot원소들을 모두 1로 만드는 것이다. 첫 번째 pivot은 이미 1이므로 그대로 놔두고 두 번째 pivot을 1로 만들어보자. 방법은 그냥 간단하게 pivot이 있는 row전체를 pivot으로 나눠주면된다. 결과는 아래와 같다. 

 

 

식 (22)의 마지막 행렬이 바로 기약행 사다리꼴 행렬(Reduced row echelon form matrix)인 R이다. 

이 행렬은 MATLAB에서 rref(A)라는 명령어를 통해 계산할 수 있다. A는 계산하고자 하는 input 행렬이다. 

결국 기약행 사다리꼴 행렬(Reduced row echelon form)이 되기 위해선 다음의 조건들을 만족해야 한다. 

 

 

기약행 사다리꼴 행렬이기 위한 조건:


  • pivot 원소들은 반드시 1이 되어야 한다. 
  • pivot 원소가 있는 column에서 pivot 변수의 모든 아래/위 원소들은 0이 되어야 한다. 
  • 각 row는 처음 나오는 pivot 원소를 만나기 전까지 모든 원소가 0이어야 한다.
  • 모든 원소가 0인 row는 반드시 pivot 변수가 있는 row의 밑에 있어야 한다. 

 

 

 

 

 

 

 

기약행 사다리꼴 행렬은 많은 정보들을 담고 있다. 어떤 정보들을 담고 있을까? 

바로 알아볼 수 있는 정보로는 row1과 row2인 pivot row와 col1과 col3인 pivot column을 볼 수 있다. 또한 U행렬 내에 단위 행렬(identity matrix)를 담고 있다. 아래 식을 보자. 

 

 

 

 

 

빨간색 box는 pivot row를, 파란색 box는 pivot column을 나타낸다. 이 둘이 겹쳐지는 부분을 보자. 2x2 크기의 단위 행렬의 모습이 보일 것이다. 이 단위행렬이 나타나는 당연한 이유는 우리는 행렬 A를 소거하는 과정에서 pivot variable의 위/아래의 모든 원소를 0으로 맞추었고, 모든 pivot을 1이 되도록 만들었다. 따라서 이러한 단위 행렬이 당연히 나타나게 된다. 

 

자 이렇게 해서 우리는 처음에 A행렬에서 가우스 소거를 통해 U행렬을 만들었고, 여기에 한 번더 가우스 소거를 적용하여 R행렬을 만들었다. 즉 A->U->R로 변화한 것이다. 이를 정리해보면 아래와 같다. 

 

우리는 A에서 U로 행렬을 변환한 뒤에도 Ax=0와 Ux=0의 해는 동일한 Null space에 존재함을 알았다. 그렇다면 U를 소거하여 만든 Rx=0의 해도 역시 동일한 Null space에 존재할까? 정답은 Yes이다. 앞서 구한 해를 R행렬에 적용하여 이를 확인해보자. 

 

 

식 (24)를 보면 역시 Rx=0해도 동일한 Null space에 존재하는 것을 알 수 있다. 우리는 행렬을 A에서 R로 변화시켰다. 그 과정에서 비록 각 행렬의 column space는 변했을지 모르나 원래의 행렬에 대한 고유한 성질은 변하지 않았다. 그렇기에 해가 동일한 공간(Null space)에 존재하는 것이다. 우리는 단지 A행렬을 줄이고 줄이고 줄여서 가장 간단한 형태인 R로 만들었다고 생각하면 좋을 것 같다. 

 

 

- Another example:

 

다른 행렬에 대한 Null space계산을 한 번 더 풀어보자. 임의의 행렬을 만들 수도 있으나 앞서 풀었던 A행렬을 전치(transpose)시킨 행렬을 가지고 계산해 보도록 하자. 중복된 내용이 많을 테니 수식으로만 간단히 표현하겠다. 

 

 

 

소거된 행렬 U에 대한 방정식을 쓰면..

 

 

x3=1로 설정한 뒤 후방 대입법(Back substitution)을 통해 나머지 해를 계산하면 x=[-1 -1 1]T이 된다. 여기서 전체 Null space를 표현하려면 임의의 상수 c를 곱한 x가 된다. 

 

 

이 예제에선 pivot이 두 개이고 따라서 Rank=2 이다. free variable은 column의 수에서 rank를 빼주면 되므로 n-r = 3-2 = 1이 된다. free variable이 하나 밖에 없기 때문에 식 (27)의 임의의 상수만 곱한 벡터 x가 전체 Null space를 표현하게 된다. 

 

 

 

3. 마치며

 

이번 포스팅에서는 지난 강의에서 배웠던 Null space를 구하는 알고리즘에 대해 공부하였다. 우리는 임의의 행렬 A를 가우스 소거를 통해 U행렬로 만드는 법을 배웠고 pivot과 free variable이 갖는 의미에 대해서 배웠다. 이 과정에서 pivot의 개수가 그 행렬의 rank를 의미한다는 중요한 사실을 알 수 있었다. 

우리는 또한 A-> U -> R로 만드는 과정을 통해 처음 임의의 행렬 A가 축소된 형태인 기약행 사다리꼴(reduced row echelon form)을 만드는 방법에 대해서도 배웠다. 또한 이 행렬이 갖는 의미를 배웠고 Null space를 정의하는 방법에 대해서도 알 수 있었다. 

 

+ Recent posts