선형대수[Linear Algebra]: 행렬곱셈(Matrix multiplication)의 개념 정리
1. 서론
선형대수를 하면서 사실 제일 큰게 수를 다루는 '감각'이 아닌가 싶다.
'엄밀하게 왜이래?'를 따지는 것도 중요하지만, 사실은 약간 '어~ 이게 이러니까 이렇게 되네? 오 쫌 재밌네?'하면서 받아들이고 사용하다보면 나중에 크게 이해되는 때가 오기도 한다.(그리고 그건 어떤 내부적이든 외부적이든 깨달음의 순간이 왔을 때 익숙했었어야지만이 깨달을 수 있다는 부분이기도 하다..)
그리고 선형대수는 아주 재밌게도, 직관적으로 '어 이거 되는거 아냐?'했을 때 되는 경우가 굉장히 많다. 사실 그래서 선대 수학자들이 '이게 왜 돼!?!?'하면서 연구를 더욱 더 심도있게 진행시키지 않았을까~ 하는 생각도 든다.
그래서 결론은 다른 고급(?)선형대수를 들어가기 전에, 가장 기본적인 행렬 곱셈의 개념부터 한번 정리하고 가면 좋겠다고 생각을 했다.
우리가 흔하게 아는 고등학교 때 배웠던 요소별로 채워넣는 행렬곱셈 말고도 행렬을 가로로(열로) 세로로(행으로) 찢어서 계산도 가능하다는 아주 재밌는 사실이 있기 때문이다.
2. 행렬의 곱셈방식은 몇가지?
그렇다면 행렬의 곱셈방식은 몇가지나 있을까?
물론 '방식'이 여러가지 인거지, '답'은 하나다.
결론부터 말하자면 곱셈방식은 사실 네가지다.
행렬을 행과 열로 찢어서 조합할 수 있다고 하면, 꽤나 많은 경우의 수가 나오겠지만
행렬곱셈을 수행하면 그 대원칙인 $ \sum row * column $가 수행되고, 따라서 (n x m) * (m x k) = (n x k)의 행렬이 나온다는 것만 알고 있으면 경우의 수는 사실 아래의 네가지로 귀결된다.
행(row) * 열(column), 행렬(matrix) * 열(column), 행(row) * 행렬(matrix), 열(column) * 행(row)
두 행렬을 모두 행과 열로 찢어서 곱해 볼 수 있는 두가지 방식이 있을 것이고
또 다른 하나는 한 행렬 전체를 다른 행렬을 찢어서 곱해볼 수 있을 것이다.
그렇다면 남은 건 하나. '진짜 되는가?'이다.
사실 '개념'적으로 저렇게 나눠 놓은거지, 사실 실제 계산을 하면 결국 $ \sum row * column $이 수행되기때문에 결과는 항상 모두 같을 수 밖에 없다. 다만 저런 개념을 알고 있으면 행렬 곱셈을 조작할 때 좀더 자유롭게 조작이 가능해진다는 장점?
3. 간단한 행렬로 진짜 되는지 보기
$ A = \begin{bmatrix} 1&2\\ 3&4 \end{bmatrix} $
$ B = \begin{bmatrix} 1&2\\ 1&3 \end{bmatrix} $
두 행렬을 가지고 $ A * B = C $를 해 볼 예정입니다.
3-1. row * column
가장 기본적인 행렬 곱셈 방식이죠.
$ C = \begin{bmatrix} a_{11}*b_{11}+a_{12}*b_{21}&a_{11}*b_{12}+a_{12}*b_{22}\\ a_{21}*b_{11}+a_{22}*b_{21}&a_{21}*b_{12}+a_{22}*b_{22} \end{bmatrix} $
$ \quad \, = \begin{bmatrix} 1*1+2*1&1*2+2*3\\ 3*1+4*1&3*2+4*3 \end{bmatrix} $
$ \quad \, = \begin{bmatrix} 3&8\\ 7&18 \end{bmatrix} $
3-2. matrix * column
여기서부터 재밌어집니다. matrix*column은 결과를 column으로 내보내고, 그렇기 때문에 결과에서 column으로 stack됩니다.
$ C = \begin{bmatrix} A*\begin{bmatrix} 1\\1 \end{bmatrix} & A*\begin{bmatrix} 2\\3 \end{bmatrix} \end{bmatrix} $
$ \quad \, = \begin{bmatrix} \begin{bmatrix} 1&2\\ 3&4 \end{bmatrix}*\begin{bmatrix} 1\\1 \end{bmatrix} & \begin{bmatrix} 1&2\\ 3&4 \end{bmatrix}*\begin{bmatrix} 2\\3 \end{bmatrix} \end{bmatrix} $
$ \quad \, = \begin{bmatrix} 3&8\\ 7&18 \end{bmatrix} $
3-3. row * matrix
row * matrix는 결과를 row로 내보내고, 결과적으로 row로 stack됩니다.
$ C = \begin{bmatrix} \begin{bmatrix} 1&2 \end{bmatrix}*B \\ \begin{bmatrix} 3&4 \end{bmatrix}*B \end{bmatrix} $
$ \quad \, = \begin{bmatrix} \begin{bmatrix} 1&2 \end{bmatrix} * \begin{bmatrix} 1&2\\ 1&3 \end{bmatrix} \\ \begin{bmatrix} 3&4 \end{bmatrix} * \begin{bmatrix} 1&2\\ 1&3 \end{bmatrix} \end{bmatrix} $
$ \quad \, = \begin{bmatrix} 3&8\\ 7&18 \end{bmatrix} $
3-4. column * row
두 행렬을 일반적인 행렬 곱셈 방식인 row*column이 아닌 반대로 column*row로 찢어서 계산합니다.
위의 행렬을 기준으로 보면 column*row로 계산하게되면 (2, 1) x (1, 2)가 되므로 (2, 2)의 확장이 일어나는 것과 마찬가지 결과가 생깁니다.
찢어서 계산했을 때 matrix가 2x2로 확장되므로, 결과값을 더해줍니다.
$ C = \begin{bmatrix} 1\\3 \end{bmatrix}*\begin{bmatrix} 1&2 \end{bmatrix} + \begin{bmatrix} 2\\4 \end{bmatrix}*\begin{bmatrix} 1&3 \end{bmatrix} $
$ \quad \, = \begin{bmatrix} 1&2\\3&6 \end{bmatrix} + \begin{bmatrix} 2&6\\4&12 \end{bmatrix} $
$ \quad \, = \begin{bmatrix} 3&8\\ 7&18 \end{bmatrix} $
4. 결론
이것으로 결국 어떤 방식으로 곱하든 결과는 같다는 걸 알았습니다.
반대로, 결과가 같다면 여러 방법으로 행렬의 곱셈을 조작해 볼 수 있습니다.
'Study > Mathematics' 카테고리의 다른 글
피보나치 수열을 선형대수로 풀어보자 (0) | 2025.03.30 |
---|---|
사이클로이드의 면적구하기(면적분) (0) | 2024.11.17 |
직선 두개로 뢸로 삼각형(Reuleaux triangle) 4등분 하기[그러나 이제 적분이 없는] (0) | 2024.11.14 |
직선 두개로 뢸로 삼각형(Reuleaux triangle) 4등분 하기 (0) | 2024.11.12 |
[수학/패러독스] 아리스토텔레스의 바퀴 역설(Aristotle's wheel paradox) (0) | 2024.10.07 |