선형 변환, 행렬의 곱 (Matrix multiplication as composition)
그렇다면 선형 변환을 여러번 하게 되면 그것은 수식으로 어떻게 표현할 수 있을까요?
1 2
3
위의 상황과 같이 왼쪽으로 90도 회전 시킨 뒤 (rotation) 옆으로 기울이면 (shear) 노란 벡터는 어떤 식으로 변하는지 알아보도록 하겠습니다.
결과 부터 말하면 다음과 같습니다.
( )를 통해 rotation(회전)부분을 벡터[x,y]에 곱해주고, 뒤이어 shear(기울인)부분을 곱해주면 됩니다.
그런데 이는 한번에 그냥 3번 벡터를 표현한 것과 같습니다.
즉 Shear 와 Rotation 행렬의 곱을 먼저 해주고 벡터에 곱해준 것과 같다는 말이죠.
표현적인 부분에서 짚고 넘어갈 것이 있습니다.
우선 행렬의 곱에서 읽는 순서는 우측에서 좌측 ← 순서로 읽습니다.
이는 함수 표현 f( g( x ) )에서 유래되었다고 합니다.
무튼! 그렇다면 계산 과정이 어떻게 되는지 알아볼까요?
우선 M1의 선형 변환 이후 바뀐
i_hat 벡터의 값은 [1,1]입니다.
그리고 이는 M2의 선형 변환을 또 거치게 되니
이 벡터와 M2행렬을 곱해줍니다.
이 값은 최종 행렬 값의 첫 열을 채우게 됩니다.
다음으로 j_hat 벡터에 대해 알아보겠습니다.
같은 방식으로 곱해주면 이는 최종 행렬의 두번쨰 열을 채우게 됩니다.
이를 변수로 치환하여 일반화 시켜보겠습니다.
e f
g h
이 과정 속에서 두번의 선형 변환이 이루어 진다는 것을 생각하면 이해가 수월 해집니다.
자 그렇다면 M2 * M1은 곱해줄 때 그 순서가 중요할까요?
Shear → Rotation
Rotation → Shear
위의 경우와 같이 밀고 돌린 경우, 돌리고 민 경우의 벡터는 다르게 나타납니다.
즉 이와 같이 곱하는 순서가 굉장히 중요하다고 할 수 있죠!
f(g(x))와 g(f(x))가 다르듯이 말이죠.
결합 법칙
그렇다면 (AB)C 와 A(BC)는 같을까요?
정답은 그렇다 입니다.
M3*(M2*M1) = (M3*M2)*M1
질문...
→ (AB)C = A(BC). (BA)C =B(AC), (BA)C != B(CA)
행렬에서 특정 위치에 있는 값은 결국 곱해질 놈들끼리 곱해지기 때문에 뭘 먼저 곱해주든지 상관이 없다.!