https://www.youtube.com/watch?v=XkY2DOUCWMU&list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab&index=4
안녕하세요 여러분?
지난 시간에는 선형변환이 어떤 것인지 설명해드렸고
선형변환을 행렬을 이용해 표현하는 방법도 소개해드렸습니다.
지난 번에 다룬 내용을 다시 요약해드리겠습니다. 왜냐하면 이건 정말 중요한 것이거든요.
물론, 요약만으로 부족하다고 느낀다면 다시 이전 동영상 전체를 시청하는 것도 좋은 방법입니다.
기술적으로 말하자면, 선형변환은 한마디로 함수입니다. 벡터를 집어넣으면 [벡터가 정의역]
벡터가 나오는 것이지요. [벡터가 치역]
지난번에 제가 이것을 시각적으로 보여드렸습니다. 어떻게 선형변환을 생각할 수 있는 지를요.
공간을 이리저리 비틀면서 말이죠. 물론 격자선들은 여전히 평행하고 균등간격을 유지한 채로요.
그리고 원점은 고정되어 있습니다.
여기서 중요한 점은,
기저벡터가 선형변환에 의해 어떻게 옮겨졌는지를 알면, 그 선형 변환이 무엇인지 파악할 수 있다는 것입니다.
예를 들어, 2차원 공간에서는 i-hat 벡터와 j-hat 벡터로요.
왜냐하면 모든 벡터들은 이 i-hat 벡터와 j-hat 벡터의 선형 결합으로 모두 표현이 가능하기 때문이죠.
좌표값이 (x,y) 인 벡터는
i-hat 벡터의 x 배 + j-hat 벡터의 y 배로 표현됩니다.
선형변환을 하고 나서도,
격자선들이 여전히 평행을 유지하고 균등간격을 유지한다는
멋진 결론을 얻었죠.
변환된 벡터는 변환된 i-hat 의 x배 + 변환된 j-hat 의 y 배로 표현된다는 것도요.
이 말의 뜻은 만약 우리가 변환된 i-hat 의 좌표값과
변환된 j-hat의 좌표값을 안다면,
초기값 (x, y) 에서 시작한 벡터가 변환 후 어디로 갈지 계산해낼 수 있다는 것입니다.
바로 변환된 i-hat 좌표값의 x 배와
변환된 j-hat 좌표값의 y 배를 이용해서 말이죠.
관례적으로 i-hat 과 j-hat 의 변형후 좌표값을
행렬로 표현합니다.
그리고 이 열들(벡터) 각각을 x, y로 스케일링한 것을
행렬-벡터 곱셈으로 정의합니다.
이 방법으로 보면,
한 행렬은 하나의 선형변환을 나타냅니다.
그리고 벡터에 행렬을 곱하는 것은 수식적으로 그 벡터를 선형변환하는 것과 같습니다.
됐습니다. 요약 끝. 새 주제로 넘어갑시다.
아마도 선형변환을 하고 나서 거기에 다시 선형변환을 하는 것도 설명하고 싶어하는 사람도 있을 것입니다.
예를 들면,
시계방향으로 90도 회전시키고,
그리고 나서 옆으로 밀면(shearing) 어떻게 되는 지를요.
전체 효과는
또 다른 하나의 선형변환이라는 것입니다.
회전과 밂과는 구별되는 무언가라는 것이죠.
이렇게 새로 생겨난 선형변환을 흔히 두 개의 선형변환의 합성이라고 일컫습니다.
다른 선형변환과 마찬가지로,
이 선형변환도 행렬로 표현이 가능합니다. 위와 같이 i-hat, j-hat을 이용해서요.
여기서 i-hat 의 최종도착지는
(1,1)입니다.
그럼 이것을 행렬의 첫번째 열로 적으면 됩니다.
마찬가지로, j-hat 의 최종도착지는 (-1, 0)입니다.
그럼 이걸 행렬의 두번째 열로 적으면 됩니다.
이 새 행렬이 바로 회전하고 미는 변환의 최종 효과을 나타냅니다.
하지만 연속되는 변환이 아니라, 단지 하나의 변환으로서만 표현하고 있죠.
새 행렬을 생각해보는 방법이 있습니다.
어떤 벡터를 가져다가 회전시키고 미는 변환을 시키면,
결과가 무엇인기 계산해야되는 이 긴 과정은 다음과 같습니다.
우선 회전을 나타내는 행렬에 벡터를 곱합니다.
그리고 그 결과를 미는 것을 나타내는 행렬 오른쪽에다 놓고 곱하면
이것이 수치적으로 표현된, 어떤 벡터에다가 회전 시키고 민 것을 적용한 뒤의 결과입니다.
하지만 우리가 방금 구한 행렬을 곱해도 같은 결과값을 얻습니다.
어떤 벡터를 고르던지 말이죠.
우리가 구한 새 행렬은 회전하고 미는 것과 같은 효과를 나타내기 때문입니다.
지금까지 설명한 것들을 기반으로 해서,
이 새 행렬을, 두 원본 행렬의 곱(product)이라고 불러도 될 것 같습니다.
그렇지 않나요?
그럼 잠시, 행렬의 곱을 좀 더 일반적으로 계산하는 방법에 대해 생각해보겠습니다.
근데 숫자들 사이에서 헤매기 쉬우므로 조심하십시오.
항상 여러분들이 기억해야 할 것은, 두 행렬의 곱셈은
기하학적으로 한 변환을 적용하고나서 다른 변환을 적용한 것과 같다는 것입니다.
근데 이상한 점이 있는데, 읽을 때 오른쪽에서 왼쪽방향으로 봐야합니다.
우측의 행렬이 첫번째 변환을 의미하고,
좌측의 행렬로 그 다음 변환 적용을 나타내죠.
이것은 함수 표기법에서 유래한 것입니다.
함수를 변수의 왼쪽에다 적기 때문이죠.
그래서 두 함수를 합성할 때마다, 오른쪽에서 왼쪽으로 읽어야 합니다.
히브리어 독자들에게 좋은 소식일 테지만, 우리에게는 나쁜 소식입니다.
다른 예를 살펴 보죠.
행렬 (1, 1), (-2, 0) 이 있을때,
이 변환은 이렇게 보일텐데,
이 변환을 M1 이라고 합시다.
그 다음 행렬 (0, 1), (2, 0) 을 있을때,
이 변환은 이렇게 보일텐데,
이번엔 M2 라고 합시다.
M1을 적용하고 나서 M2를 적용한 결과는
우리에게 새로운 변환을 나타내죠.
자, 이 행렬을 찾아봅시다.
하지만 이번엔, 애니메이션을 보지 않고 찾아내봅시다.
대신에 각 행렬을 나타내는 수치만 가지고 찾아내봅시다.
우선 i-hat 벡터가 어떻게 되는지 부터 봅시다.
M1 변환 적용 후 나타나는 새로운 i-hat 좌표는
정의에 의해, M1의 첫 번째 열에 나타나죠.
즉, (1, 1)
M2를 적용한 후를 살펴보려면,
M2 행렬에 이 벡터 (1,1)를 곱하면 됩니다.
지난번에 설명한 방법으로 계산하면,
벡터 (2, 1) 라는 값을 얻을 수 있습니다.
이 벡터가 합성행렬의 첫 번째 열입니다.
마찬가지로, j-hat 에도 적용해보면,
M1의 두 번째 열이 첫번째 변환 후인 좌표 (-2, 0)가 되고
다음, M2 행렬을 이 벡터에다 곱하면,
행렬-벡터 곱으로 계산해서 (0, -2)이라는 값을 얻을 수 있습니다.
이것이 합성행렬의 두번째 열입니다.
다시 한 번 설명드리겠습니다. 하지만 이번에는
각 행렬 안에 숫자를 변수로 대체해서 보여드리겠습니다.
아까 전과 같이 진행할 것이라서,
기호가 더 많고, 쓸 공간도 더 많이 필요하겠죠.
하지만 이전에 행렬 곱셈을 요령으로 배웠던 사람이라면 꽤 만족할 것입니다.
i-hat 벡터가 어떻게 되는 지부터 봅시다.
오른쪽 행렬의 첫째 열부터 보죠.
이것은 첫번째 변환 후의 i-hat의 위치입니다.
이 열을 왼쪽 행렬에다가 곱하면,
한 번 변환을 거친 i-hat이 최종적으로 어디에 도달하는지 알 수 있습니다.
그래서 합성행렬의 첫번째 열은
항상 왼쪽 행렬과 오른쪽 행렬의 첫째열의 곱셈과 같습니다.
마찬가지로, j-hat 은 오른쪽 행렬의 두번째 열의 값을 거쳐
왼쪽 행렬을 곱하여서 최종 위치가 나옵니다.
따라서, 이 값이 합성 행렬의 두번째 열입니다.
주의할 점은, 기호가 너무 많기 때문에
이것을 기억하기 위해서 어떤 요령으로 많이들 가르치죠.
특정 알고리즘 순서로서 기억하기 쉽게 말이요.
하지만 그렇게 암기하기 전에 꼭,
행렬 곱셈이 무엇을 나타낸는지 생각해보는 습관을 가졌으면 좋겠습니다.
그것은 한 변환을 적용한 후, 다른 변환을 적용한다는 것.
방금 제가 설명드린 것들은 여러분들이 행렬의 곱셈에 대해 더 쉽게 이해할 수 있도록 어떤 틀을 제공해 줄것입니다.
예를들어, 다음과 같은 질문이 있습니다.
우리가 두 행렬을 곱할 때 그 두 행렬을 곱하는 순서가 상관있을까요?
간단한 예제를 통해 알아봅시다.
앞에서 했었던 방법으로 말이죠.
i-hat 은 고정이고 j-hat 만 오른쪽으로 밀어지는 미는 (shear) 변환과
90 ° 회전 변환을 이용해서요.
만약 먼저 민 후 회전시키면,
i-hat 의 결과는 (0, 1)이고
j-hat 의 결과는 (-1, 1) 가 된다는 것을 알 수 있습니다.
두 벡터가 서로 가까이 위치하고 있네요.
이번엔 먼저 회전을 하고 나서 밀면,
i-hat 은 (1, 1)
j-hat 은 (-1, 0) 위치가 된다는 것을 알 수 있습니다.
이 둘은 보시다시피 서로 멀리 떨어져 있네요.
곱하는 순서에 따라 결과가 달라지기 때문에 결론은 곱하는 순서가 중요합니다.
주목할 점은 변환에 대해서 떠올릴 때
변환은 시각화함으로써 머릿속으로 떠올릴 수 있는 것들이라는 것이죠.
행렬 곱셈하는 것 그 자체는 중요하지 않아요.
제가 선형대수학을 처음 접했을 때가 기억나는 데,
행렬 곱셈의 결합법칙(Asoociativity)에 대해 증명하라는 숙제가 있었습니다.
결합법칙은 행렬 A, B, C가 있어서
이것을 모두 곱할 때,
AB 먼저 곱하고 나서 오른쪽에 C를 곱하거나
BC 먼저 곱하고나서 왼쪽에 A를 곱하거나 그 순서는 상관이 없다는 것을 의미합니다.
다시 말해서, 괄호를 어디다 집어넣든 크게 상관이 없다는 거죠
여러분들이 결합법칙을 수치적으로 제가 방금 아까 했던 것처럼 증명하려 한다면
그 방법은 아주 끔찍하고 결합법칙이 무엇인지 깨우치는 데 좋지 못합니다.
하지만 행렬의 곱셈을 한 변환을 적용하고 나서 다시 다른 변환을 적용하는 것이라고 생각한다면,
이 문제는 정말 간단합니다.
왜 그런지 이해가 되나요?
결합법칙이 나타내는 것은 CB, A 순서로 적용하는 것이
C, BA 순서로 적용하는 것과 같다는 겁니다.
더이상 증명할 게 없어요.
그냥 동일한 세 변환을 같은 순서대로 적용하는 것에 불과합니다.
꼼수처럼 느껴질 지도 모르지만 전혀 그렇지 않아요.
이 방법은 행렬 곱셈이 결합법칙이 성립된다는 것을 증명하는 아주 좋은 방법입니다.
게다가 이렇게 하면 왜 결합법칙이 참인지 아주 잘 설명해주죠.
저는 여러분들이 이 아이디어를 잘 활용하시기를 바랍니다.
서로 다른 두 개의 변환을 떠올려서 한 변환을 적용한 후 다른 변환을 적용하는 것과
행렬 곱셈을 수치적으로 하는 것에 대해 한 번 궁구해보십시오.
이렇게 함으로써 행렬 곱셈에 대해 정말로 깊게 이해할 수 있게 될 것입니다.
다음 동영상에서는 이 아이디어를 2차원 이상으로 확장해보겠습니다.
그 때 봅시다!