https://ocw.mit.edu/courses/18-06-linear-algebra-spring-2010/video_galleries/video-lectures/
이전 강의에서 nullspace에 대해서 배웠다.
그렇다면 A x = 0 Ax=0 A x = 0 에서 벡터 x를 어떻게 컴퓨터적인 algorithm으로 구할 수 있을까?
예시와 함께 살펴보자.
A = [ 1 2 2 2 2 4 6 8 3 6 8 10 ] A = \begin{bmatrix} 1 & 2 & 2 & 2 \\ 2 & 4 & 6 & 8 \\ 3 & 6 & 8 & 10 \end{bmatrix} A = ⎣ ⎢ ⎡ 1 2 3 2 4 6 2 6 8 2 8 1 0 ⎦ ⎥ ⎤
위 행렬 A A A 를 보고 다음과 같은 점을 알 수 있다.
r o w 1 + r o w 2 = r o w 3 row_1 + row_2 = row_3 r o w 1 + r o w 2 = r o w 3
2 c o l 1 = c o l 2 2col_1 = col_2 2 c o l 1 = c o l 2
따라서 r o w 3 row_3 r o w 3 와 c o l 1 col_1 c o l 1 은 "not independent"
그럼 계속해서 Elimination을 적용해보자.
[ 1 2 2 2 2 4 6 8 3 6 8 10 ] → [ 1 2 2 2 0 0 2 4 0 0 2 4 ] → [ 1 2 2 2 0 0 2 4 0 0 0 0 ] = U \begin{bmatrix} 1 & 2 & 2 & 2 \\ 2 & 4 & 6 & 8 \\ 3 & 6 & 8 & 10 \end{bmatrix} \rightarrow \begin{bmatrix} 1 & 2 & 2 & 2 \\ 0 & 0 & 2 & 4 \\ 0 & 0 & 2 & 4 \end{bmatrix} \rightarrow \begin{bmatrix} 1 & 2 & 2 & 2 \\ 0 & 0 & 2 & 4 \\ 0 & 0 & 0 & 0 \end{bmatrix} = U ⎣ ⎢ ⎡ 1 2 3 2 4 6 2 6 8 2 8 1 0 ⎦ ⎥ ⎤ → ⎣ ⎢ ⎡ 1 0 0 2 0 0 2 2 2 2 4 4 ⎦ ⎥ ⎤ → ⎣ ⎢ ⎡ 1 0 0 2 0 0 2 2 0 2 4 0 ⎦ ⎥ ⎤ = U
위 행렬은 upper matrix(U U U )라고 보기 힘들 수 있겠지만, U U U 이다. 그리고 이러한 형태를 "echelon Form"이라고 부른다.
위 행렬 U U U 에서 pivot은 U 11 ( = 1 ) U_{11}(=1) U 1 1 ( = 1 ) 과 U 23 ( = 2 ) U_{23}(=2) U 2 3 ( = 2 ) 이다.
그리고 pivot의 개수를 rank라 부른다. "# of pivots of A = rank of A = 2 \text{\# of pivots of $A$ = rank of $A$ = $2$} # of pivots of A = rank of A = 2 "
위 행렬 U U U 에서 pivot column(variable)은 c o l 1 col_1 c o l 1 과 c o l 3 col_3 c o l 3 이다.
그리고 free column(variable)은 c o l 2 col_2 c o l 2 와 c o l 4 col_4 c o l 4 다.
그렇다면 위에서 구한 U U U 행렬로 U x = 0 Ux=0 U x = 0 에서의 x x x 벡터를 구해보자.
x = [ 1 0 ] x = \begin{bmatrix} \\ 1 \\ \\ 0 \end{bmatrix} x = ⎣ ⎢ ⎢ ⎢ ⎡ 1 0 ⎦ ⎥ ⎥ ⎥ ⎤
우선 free column에 임의의 값을 대입해보자. (편의상 1 , 0 1, 0 1 , 0 대입)
그런 다음 U x = 0 Ux=0 U x = 0 을 수식으로 정리해보자.
x 1 + 2 x 2 + 2 x 3 + 2 x 4 = 0 ( r o w 1 ) x_1+2x_2+2x_3+2x_4=0 \tag{$row_1$} x 1 + 2 x 2 + 2 x 3 + 2 x 4 = 0 ( r o w 1 )
0 x 1 + 0 x 2 + 2 x 3 + 4 x 4 = 0 ( r o w 2 ) 0x_1+0x_2+2x_3+4x_4=0 \tag{$row_2$} 0 x 1 + 0 x 2 + 2 x 3 + 4 x 4 = 0 ( r o w 2 )
에서 x 2 = 1 , x 4 = 0 x_2=1, x_4=0 x 2 = 1 , x 4 = 0 을 대입해보자.
x 1 + 2 + 2 x 3 = 0 ( r o w 1 ) x_1+2+2x_3=0 \tag{$row_1$} x 1 + 2 + 2 x 3 = 0 ( r o w 1 )
2 x 3 = 0 ( r o w 2 ) 2x_3=0 \tag{$row_2$} 2 x 3 = 0 ( r o w 2 )
따라서 U x = 0 Ux=0 U x = 0 에 대한 벡터 x x x 를 정리하면 다음과 같이 나올 것이다.
x = [ − 2 1 0 0 ] x = \begin{bmatrix} -2 \\ 1 \\ 0 \\ 0 \end{bmatrix} x = ⎣ ⎢ ⎢ ⎢ ⎡ − 2 1 0 0 ⎦ ⎥ ⎥ ⎥ ⎤
이를 아까 원래 행렬 A A A 와 비교해서 보자.
A = [ 1 2 2 2 2 4 6 8 3 6 8 10 ] , x = [ − 2 1 0 0 ] A = \begin{bmatrix} 1 & 2 & 2 & 2 \\ 2 & 4 & 6 & 8 \\ 3 & 6 & 8 & 10 \end{bmatrix}, x = \begin{bmatrix} -2 \\ 1 \\ 0 \\ 0 \end{bmatrix} A = ⎣ ⎢ ⎡ 1 2 3 2 4 6 2 6 8 2 8 1 0 ⎦ ⎥ ⎤ , x = ⎣ ⎢ ⎢ ⎢ ⎡ − 2 1 0 0 ⎦ ⎥ ⎥ ⎥ ⎤
다음과 같은 특징을 알 수 있다.
행렬 A A A 의 − 2 c o l 1 + c o l 2 + 0 c o l 3 + 0 c o l 4 = 0 -2col_1+col_2+0col_3+0col_4=0 − 2 c o l 1 + c o l 2 + 0 c o l 3 + 0 c o l 4 = 0
그리고 x x x 에 스칼라 곱을 해줘도 이 규칙은 변하지 않는다. 따라서 x를 다음과 같이 수정할 수 있다.x = c [ − 2 1 0 0 ] x = c \begin{bmatrix} -2 \\ 1 \\ 0 \\ 0 \end{bmatrix} x = c ⎣ ⎢ ⎢ ⎢ ⎡ − 2 1 0 0 ⎦ ⎥ ⎥ ⎥ ⎤
그러면 혹시 모르니 또 다른 x x x 를 구해보자.
이번에는 x x x 를 다음과 정의하고 시작해보자.
x = [ 0 1 ] x = \begin{bmatrix} \\ 0 \\ \\ 1 \end{bmatrix} x = ⎣ ⎢ ⎢ ⎢ ⎡ 0 1 ⎦ ⎥ ⎥ ⎥ ⎤
그러면 위와 같은 과정들을 거쳐서 x x x 는 다음과 같이 나온다.
x = [ 2 0 − 2 1 ] x = \begin{bmatrix} 2 \\ 0 \\ -2 \\ 1 \end{bmatrix} x = ⎣ ⎢ ⎢ ⎢ ⎡ 2 0 − 2 1 ⎦ ⎥ ⎥ ⎥ ⎤
마찬가지로 행렬 A A A 와 비교해보자.
A = [ 1 2 2 2 2 4 6 8 3 6 8 10 ] , x = [ 2 0 − 2 1 ] A = \begin{bmatrix} 1 & 2 & 2 & 2 \\ 2 & 4 & 6 & 8 \\ 3 & 6 & 8 & 10 \end{bmatrix}, x = \begin{bmatrix} 2 \\ 0 \\ -2 \\ 1 \end{bmatrix} A = ⎣ ⎢ ⎡ 1 2 3 2 4 6 2 6 8 2 8 1 0 ⎦ ⎥ ⎤ , x = ⎣ ⎢ ⎢ ⎢ ⎡ 2 0 − 2 1 ⎦ ⎥ ⎥ ⎥ ⎤
위와 마찬가지로 다음과 같은 특징을 얻는다.
행렬 A A A 의 2 c o l 1 + 0 c o l 2 + − 2 c o l 3 + c o l 4 = 0 2col_1+0col_2+-2col_3+col_4=0 2 c o l 1 + 0 c o l 2 + − 2 c o l 3 + c o l 4 = 0
그리고 x x x 에 스칼라 곱을 해줘도 이 규칙은 변하지 않는다. 따라서 x를 다음과 같이 수정할 수 있다.x = d [ 2 0 − 2 1 ] x = d \begin{bmatrix} 2 \\ 0 \\ -2 \\ 1 \end{bmatrix} x = d ⎣ ⎢ ⎢ ⎢ ⎡ 2 0 − 2 1 ⎦ ⎥ ⎥ ⎥ ⎤
그리고 이전 강의에서 배운 c v = 0 , d w = 0 cv=0, dw=0 c v = 0 , d w = 0 인 벡터 v , w v,w v , w 에 대해서 c v + d w = 0 cv+dw=0 c v + d w = 0 이라는 법칙을 통해 x x x 를 다음과 같이 정리할 수 있겠다.
x = c [ − 2 1 0 0 ] + d [ 2 0 − 2 1 ] x = c \begin{bmatrix} -2 \\ 1 \\ 0 \\ 0 \end{bmatrix} + d \begin{bmatrix} 2 \\ 0 \\ -2 \\ 1 \end{bmatrix} x = c ⎣ ⎢ ⎢ ⎢ ⎡ − 2 1 0 0 ⎦ ⎥ ⎥ ⎥ ⎤ + d ⎣ ⎢ ⎢ ⎢ ⎡ 2 0 − 2 1 ⎦ ⎥ ⎥ ⎥ ⎤
그러면 U x = 0 Ux=0 U x = 0 에서 더 나아가, R x = 0 Rx=0 R x = 0 으로 연산해보자.
여기서 R R R 은 "reduced row echelon form"을 의미한다.
계속해서 이전 예시를 살펴보자.
U = [ 1 2 2 2 0 0 2 4 0 0 0 0 ] U = \begin{bmatrix} 1 & 2 & 2 & 2 \\ 0 & 0 & 2 & 4 \\ 0 & 0 & 0 & 0 \end{bmatrix} U = ⎣ ⎢ ⎡ 1 0 0 2 0 0 2 2 0 2 4 0 ⎦ ⎥ ⎤
아까 위에서 행렬 U U U 를 구했다. 그리고 이 행렬에서 pivot인 U 23 U_{23} U 2 3 을 통해 위에 있는 행의 2를 없애보자.
[ 1 2 2 2 0 0 2 4 0 0 0 0 ] → [ 1 2 0 − 2 0 0 2 4 0 0 0 0 ] \begin{bmatrix} 1 & 2 & 2 & 2 \\ 0 & 0 & 2 & 4 \\ 0 & 0 & 0 & 0 \end{bmatrix} \rightarrow \begin{bmatrix} 1 & 2 & 0 & -2 \\ 0 & 0 & 2 & 4 \\ 0 & 0 & 0 & 0 \end{bmatrix} ⎣ ⎢ ⎡ 1 0 0 2 0 0 2 2 0 2 4 0 ⎦ ⎥ ⎤ → ⎣ ⎢ ⎡ 1 0 0 2 0 0 0 2 0 − 2 4 0 ⎦ ⎥ ⎤
그리고 pivot의 값이 1이 되도록 해보자.
[ 1 2 0 − 2 0 0 2 4 0 0 0 0 ] → [ 1 2 0 − 2 0 0 1 2 0 0 0 0 ] \begin{bmatrix} 1 & 2 & 0 & -2 \\ 0 & 0 & 2 & 4 \\ 0 & 0 & 0 & 0 \end{bmatrix} \rightarrow \begin{bmatrix} 1 & 2 & 0 & -2 \\ 0 & 0 & 1 & 2 \\ 0 & 0 & 0 & 0 \end{bmatrix} ⎣ ⎢ ⎡ 1 0 0 2 0 0 0 2 0 − 2 4 0 ⎦ ⎥ ⎤ → ⎣ ⎢ ⎡ 1 0 0 2 0 0 0 1 0 − 2 2 0 ⎦ ⎥ ⎤
그러면 이제 최종 목적인 R R R 행렬을 구할 수 있다. 여기서 r r e f ( A ) rref(A) r r e f ( A ) 는 "행렬 A A A 의 reduced row echelon form"이라는 의미이다.
우선 위 행렬에서 칼럼들을 나눠보자.
pivot columns : c o l 1 col_1 c o l 1 , c o l 3 col_3 c o l 3
free columns: c o l 2 col_2 c o l 2 , c o l 4 col_4 c o l 4
pivot cloumns와 free columns를 각각 따로 묶어보자.
p i v o t c o l u m n s = [ 1 0 0 1 ] = I pivot \ columns = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} =I p i v o t c o l u m n s = [ 1 0 0 1 ] = I
f r e e c o l u m n s = [ 2 − 2 0 2 ] = F free \ columns = \begin{bmatrix} 2 & -2 \\ 0 & 2 \end{bmatrix} =F f r e e c o l u m n s = [ 2 0 − 2 2 ] = F
F F F 와 아까 본 U x = 0 Ux=0 U x = 0 의 x x x 벡터를 비교해보자.
F = [ 2 − 2 0 2 ] , x = c [ − 2 1 0 0 ] + d [ 2 0 − 2 1 ] F = \begin{bmatrix} 2 & -2 \\ 0 & 2 \end{bmatrix} , x = c \begin{bmatrix} -2 \\ 1 \\ 0 \\ 0 \end{bmatrix} + d \begin{bmatrix} 2 \\ 0 \\ -2 \\ 1 \end{bmatrix} F = [ 2 0 − 2 2 ] , x = c ⎣ ⎢ ⎢ ⎢ ⎡ − 2 1 0 0 ⎦ ⎥ ⎥ ⎥ ⎤ + d ⎣ ⎢ ⎢ ⎢ ⎡ 2 0 − 2 1 ⎦ ⎥ ⎥ ⎥ ⎤
뭔가 유사한 점이 보이는 것 같다.
아까 pivot columns에 속했던 c o l 1 col_1 c o l 1 과 c o l 3 col_3 c o l 3 에 대한 행렬들의 값만 놓고 비교했을 때, 유사한 점이 보인다. 즉, pivot columns는 F F F 의 columns와 유사하다는 것을 알 수 있다.
그리고 free columns는 I I I 와 똑같이 나온다.
[ − 2 − 0 − ] , [ 2 − − 2 − ] ≈ − [ 2 − 2 0 2 ] = − F \begin{bmatrix}-2 \\ - \\ 0 \\ -\end{bmatrix},\begin{bmatrix}2 \\ - \\ -2 \\ -\end{bmatrix} \approx -\begin{bmatrix} 2 & -2 \\ 0 & 2 \end{bmatrix}=-F ⎣ ⎢ ⎢ ⎢ ⎡ − 2 − 0 − ⎦ ⎥ ⎥ ⎥ ⎤ , ⎣ ⎢ ⎢ ⎢ ⎡ 2 − − 2 − ⎦ ⎥ ⎥ ⎥ ⎤ ≈ − [ 2 0 − 2 2 ] = − F
[ − 1 − 0 ] , [ − 0 − 1 ] ≈ [ 1 0 0 1 ] = I \begin{bmatrix}- \\ 1 \\ - \\ 0\end{bmatrix},\begin{bmatrix}- \\ 0 \\ - \\ 1\end{bmatrix} \approx \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}=I ⎣ ⎢ ⎢ ⎢ ⎡ − 1 − 0 ⎦ ⎥ ⎥ ⎥ ⎤ , ⎣ ⎢ ⎢ ⎢ ⎡ − 0 − 1 ⎦ ⎥ ⎥ ⎥ ⎤ ≈ [ 1 0 0 1 ] = I
그리고 R R R 은 다음과 같이 정의할 수 있다.
R = [ I F 0 0 ] R= \begin{bmatrix} I & F \\0 & 0 \end{bmatrix} R = [ I 0 F 0 ]
r o w 1 row_1 r o w 1 : r r r 개의 pivot rows에 대한 정보
c o l 1 col_1 c o l 1 : r r r 개의 pivot cols에 대한 정보
c o l 2 col_2 c o l 2 : n − r n-r n − r 개의 free cols에 대한 정보
그리고 이제 R x = 0 Rx=0 R x = 0 에서 N N N (nullspace 행렬)을 구해보자.
R N = [ I F 0 0 ] ⏟ R N = 0 RN= \underbrace{ \begin{bmatrix} I & F \\0 & 0\end{bmatrix} }_R N = 0 R N = R [ I 0 F 0 ] N = 0
N = [ − F I ] N= \begin{bmatrix} -F \\ I \end{bmatrix} N = [ − F I ]
여기서 N N N 의 칼럼들을 통해 문제를 풀이할 수 있다. 아까 F F F 의 칼럼들은 pivot을, I I I 의 칼럼들은 free라는 것을 확인했다.
따라서,
R x = [ I F ] [ x p i v o t x f r e e ] = 0 Rx= \begin{bmatrix} I & F \end{bmatrix} \begin{bmatrix} x_{pivot} \\ x_{free} \end{bmatrix} = 0 R x = [ I F ] [ x p i v o t x f r e e ] = 0
x p i v o t + F x f r e e = 0 x_{pivot} + Fx_{free} = 0 x p i v o t + F x f r e e = 0
이라는 수식을 구할 수 있다.
그런데 왜 N = [ − F I ] N= \begin{bmatrix} -F \\ I \end{bmatrix} N = [ − F I ] 에서 [ x p i v o t x f r e e ] \begin{bmatrix} x_{pivot} \\ x_{free} \end{bmatrix} [ x p i v o t x f r e e ] 이 나올 수 있는 건지 직관적으로 이해가 잘 안 갔다. F F F 에 해당하는 게 free이고 I I I 에 해당하는 게 pivot인데 순서가 반대로 나오는 게 이해가 안 됐다.
그리고 내 나름대로 이해를 해 봤다. 직관적으로 해석했을 때, pivot 변수들은 free변수들의 값에 의해서 결정된다. 따라서 p i v o t = k × f r e e pivot = k\times free p i v o t = k × f r e e 와 같은 형식으로 나올 것이다. 따라서 R x = 0 Rx=0 R x = 0 에서 R = [ I F ] R=\begin{bmatrix} I & F \end{bmatrix} R = [ I F ] 이니깐, x = [ x p i v o t x f r e e ] x=\begin{bmatrix} x_{pivot} \\ x_{free} \end{bmatrix} x = [ x p i v o t x f r e e ] 가 나오는 것이고, x p i v o t = − F x f r e e x_{pivot}=-Fx_{free} x p i v o t = − F x f r e e 가 나온다. 이를 N N N 으로 다루기 위해, x = [ x p i v o t x f r e e ] = [ − F x f r e e x f r e e ] = [ − F I ] ⏟ N x f r e e x=\begin{bmatrix} x_{pivot} \\ x_{free} \end{bmatrix}=\begin{bmatrix} -Fx_{free} \\ x_{free} \end{bmatrix}=\underbrace{\begin{bmatrix} -F \\ I \end{bmatrix}}_{N}x_{free} x = [ x p i v o t x f r e e ] = [ − F x f r e e x f r e e ] = N [ − F I ] x f r e e 로 나오는 것이라고 생각한다.
이제 예시와 함께 정리해보자.
A = [ 1 2 3 2 4 6 2 6 8 2 8 10 ] A = \begin{bmatrix} 1 & 2 & 3 \\ 2 & 4 & 6 \\ 2 & 6 & 8 \\ 2 & 8 & 10 \end{bmatrix} A = ⎣ ⎢ ⎢ ⎢ ⎡ 1 2 2 2 2 4 6 8 3 6 8 1 0 ⎦ ⎥ ⎥ ⎥ ⎤
위 행렬에서 c o l 1 col_1 c o l 1 과 c o l 2 col_2 c o l 2 는 independent하다.
반면에 c o l 3 col_3 c o l 3 는 c o l 1 + c o l 2 col_1+col_2 c o l 1 + c o l 2 와 같으므로 not independent하다.
따라서 c o l 1 col_1 c o l 1 과 c o l 2 col_2 c o l 2 는 pivot columns, c o l 3 col_3 c o l 3 는 free column이다.
계속해서 연산을 수행해보자.
A = [ 1 2 3 2 4 6 2 6 8 2 8 10 ] → [ 1 2 3 0 0 0 0 2 2 0 4 4 ] → [ 1 2 3 0 2 2 0 0 0 0 4 4 ] → [ 1 0 1 0 1 1 0 0 0 0 0 0 ] = R A = \begin{bmatrix} 1 & 2 & 3 \\ 2 & 4 & 6 \\ 2 & 6 & 8 \\ 2 & 8 & 10 \end{bmatrix} \rightarrow \begin{bmatrix} 1 & 2 & 3 \\ 0 & 0 & 0 \\ 0 & 2 & 2 \\ 0 & 4 & 4 \end{bmatrix} \rightarrow \begin{bmatrix} 1 & 2 & 3 \\ 0 & 2 & 2 \\ 0 & 0 & 0 \\ 0 & 4 & 4 \end{bmatrix} \rightarrow \begin{bmatrix} 1 & 0 & 1 \\ 0 & 1 & 1 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \end{bmatrix} = R A = ⎣ ⎢ ⎢ ⎢ ⎡ 1 2 2 2 2 4 6 8 3 6 8 1 0 ⎦ ⎥ ⎥ ⎥ ⎤ → ⎣ ⎢ ⎢ ⎢ ⎡ 1 0 0 0 2 0 2 4 3 0 2 4 ⎦ ⎥ ⎥ ⎥ ⎤ → ⎣ ⎢ ⎢ ⎢ ⎡ 1 0 0 0 2 2 0 4 3 2 0 4 ⎦ ⎥ ⎥ ⎥ ⎤ → ⎣ ⎢ ⎢ ⎢ ⎡ 1 0 0 0 0 1 0 0 1 1 0 0 ⎦ ⎥ ⎥ ⎥ ⎤ = R
따라서 R x = 0 Rx=0 R x = 0 에서,
x = c [ − F I ] = c [ − 1 − 1 1 ] x= c\begin{bmatrix} -F \\ I \end{bmatrix} = c\begin{bmatrix} -1 \\ -1 \\ 1 \end{bmatrix} x = c [ − F I ] = c ⎣ ⎢ ⎡ − 1 − 1 1 ⎦ ⎥ ⎤
N = [ − F I ] = [ − 1 − 1 1 ] N = \begin{bmatrix} -F \\ I \end{bmatrix} = \begin{bmatrix} -1 \\ -1 \\ 1 \end{bmatrix} N = [ − F I ] = ⎣ ⎢ ⎡ − 1 − 1 1 ⎦ ⎥ ⎤
을 알 수 있다.
예시로 free variable x 3 x_3 x 3 를 1로 대입해보자.
x 1 + x 3 = 0 x_1 + x_3 = 0 x 1 + x 3 = 0
x 2 + x 3 = 0 x_2 + x_3 = 0 x 2 + x 3 = 0
에서,
이 되어, x = [ − 1 − 1 1 ] x=\begin{bmatrix} -1 \\ -1 \\ 1 \end{bmatrix} x = ⎣ ⎢ ⎡ − 1 − 1 1 ⎦ ⎥ ⎤ 이라는 결과가 나온다.