선형 결합(Linear Combination)(벡터에 Scalar를 곱하는 상수배, 즉 Scaling 그리고 벡터끼리의 합)만으로도 이해할 수 있는 선형 변환(Linear Transformation)에 대해서 배워보았다. 벡터공간의 좌표계을 구성하는 기저벡터만 알고있으면 '변환'을 할 수 있고, 그 기저벡터를 행렬(Matrix)으로 표현하여 벡터에 곱해주는 것이 선형 변환을 계산하는 방법이란 것을 알 수 있었다.
Review
Technically speaking, Linear Transformation are functions with vectors as inputs and vectors as outputs, but I showed last time how we can think about them visually as smooshing around space in such a way that grid lines stay parallel and evenly spaced, and so that the origin remains fixed.
The Key of Linear Transformation is basis vectorsi^,j^. This is because any other vector could be described as a linear combination of those basis vectors.
01. 행렬곱
간단한 퀴즈를 통해 아래와 같은 상황을 생각해보자. (기저벡터 i^=[1,0], j^=[0,1]가 구성하는 벡터공간 내 존재하는) 벡터 v = [x,y] 를 아래와 같이 변환시키려면 어떻게 할까?
CounterClockWise로 90도 회전
(1칸의 Grid가 오른쪽으로 45도정도로) Shear
먼저 반시계방향으로 90도 회전하면 원래의 기저벡터는 아래와 같이 변할 것이다.
i^1=[01],j^1=[−10]
그러면 Step 1.까지 변환된 벡터는 아래와 같다.
v1=x[01]+y[−10]
그다음 Shear(전단, 즉 짜부)하면 기저벡터는 아래와 같이 변할 것이다.
i^2=[11],j^2=[−10]
그러면 Step 2.까지 변환된 벡터는 아래와 같다.
v2=x[11]+y[−10](1)
[!] 음 그러니까, 여러번의 선형변환을 한다하였을때 어차피 맨 마지막의 기저벡터 값만 알고 있으면 되는거임. (CCW로 90도 회전, CW로 90도 회전하면 원래와 동일한것처럼...)
이번에는 앞서 진행하였던 선형 변환을 끊어서 생각해보자
CounterClockWise 90도 회전
Shear
각 선형변환의 기저벡터는 아래와 같다. (각각의 선형 변환을 하면 기저벡터가 어떻게 되어있을지 상상하면 된다)
두 번의 선형변환을 진행한 후의 기저벡터들(1)과 각각의 선형변환을 행렬곱한(2) 두 수식을 봐보자.
v2=x[11]+y[−10](1)
[1011][01−10]=[11−10](2)
그렇다. 위 설명한 내용을 쭉 보면 아래와 같은 내용을 알 수 있다.
행렬, 즉 Matrix를 벡터에 곱하는 것은 선형변환을 의미
각기 다른 선형 변환을 여러번 수행 = 최종 기저벡터로의 선형 변환
(선형변환하는 순서, 즉 행렬곱의 순서만 지킨다면) 벡터에 행렬곱하는것을 여러번 수행 = 여러 행렬을 먼저 곱한 뒤 벡터에 행렬곱
[+]composition : 합성, 배합, 배치 ex) Function Composition, 합성함수
위 첫번째 그림 좌측 수식처럼 벡터에 각각의 선형변환(Rotation, Shear)을 진행하여도 우측 수식처럼 두 개의 선형변환 결과물 행렬(Rotation+Shear)임을 알 수 있다.
[+][!] 여기서 (중고등학교때 배운)행렬곱 공식과 (이번에 배운) 선형변환과의 연결고리를 알 수 있다.
아래 수식에서 선형변환을 하지 않은 (초기)벡터 v=[x,y]의 기저벡터 i^=[1,0], j^=[0,1]에서 i^에만 초점을 맞춰보자.
[acbd][xy]=x[ac]+y[bd](3)
위와 같은 선형 변환을 통해서 원래의 기저벡터 i^=[1,0]은 i^1=[a,c]로 변환이 되었다. 여기서 한번 더 선형변환을 해준다면... ( i^1 에만 초점을 맞춘다)
[egfh][ac]=a[eg]+c[fh]=[ae+cfag+ch](4)
(중고등학교때 배운)행렬곱 공식이 슬슬 보인다.
사실 행렬과 벡터의 곱을 통한 선형변환은 기저벡터의 변환으로 생각할 수 있다. 위 (3)수식처럼 벡터 v의 기저벡터는 [1001] 처럼 표현할 수 있으며 이 행렬과 [acbd]와의 곱은 그냥 그대로 [acbd]이 된다. 즉 선형변환 후 기저벡터가 [acbd]라는 뜻.
그렇다면 또 한번의 선형변환을 할 경우 위 기저벡터 [acbd] = [ac],[bd] 각각이 선형변환됨을 의미한다.
따라서 편의상 첫번째 기저벡터 [ac]를 [egfh]를 통해 선형변환하는 것이 (4) 수식이다. 이제 아래와 같이 행렬곱 공식과 각 기저벡터를 선형변환하는 것을 비교해보면...
🔰 먼저 행렬곱 공식
[egfh][acbd]=[ea+fcga+hceb+fdgb+hd](5)
🔰 그 다음 벡터의 선형변환 (4) 수식
[egfh][ac]=a[eg]+c[fh]=[ae+cfag+ch](4)
(5)수식의 (첫번째) 기저벡터와 (4)수식의 값은 동일함을 알 수 있다.
이제 행렬곱 공식과 벡터의 선형변환과의 연결고리를 알 수 있다. (뭐... 다르게 말하자면 두 행렬, 즉 Matrix의 곱을 두가지 방식으로 생각하여 할 수 있다라고 알고 있으면 될것같다)
✅ Quiz - 행렬곱셈의 결합법칙(Associativity)
행렬, 즉 Matrix A,B,C에 대해서 아래의 수식이 성립하는지를 확인하라
(AB)C=A(BC)
Answer : 이를 수식적으로 생각하여 증명할 수 있으나 아주 간단하게 선형변환 개념으로 생각하면 그냥 성립함을 간단하게 알 수 있다.