ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 행렬곱의 의미에 대해
    수학/선형대수 2024. 11. 23. 00:30

    행렬에 대해 처음 배우다보면 행렬들의 덧셈이나 스칼라곱은 굉장히 자연스러워 보이지만 행렬곱은 왜 그렇게 정했는지 감이 오지 않을 수 있다. 달리 말하면 행렬곱을 그렇게 정해서 특별히 문제가 될 것도 없지만 그렇다고 굳이 꼭 그렇게 정할 이유가 있어보이지 않고 아무렇게나 정해도 되는 상황에서 적당히 정한 것처럼 보일 수 있다는 뜻이다. (실제로는 그렇지 않다는 얘기를 하려는 중이다.)

     

    예를 들어 행렬들의 곱이라는 이름을 가진 연산을 다음과 같이 정해도 되지 않을까?

    $$
    \begin{bmatrix}
    a_1 & b_1 \\
    c_1 & d_1
    \end{bmatrix}
    \ast
    \begin{bmatrix}
    a_2 & b_2 \\
    c_2 & d_2
    \end{bmatrix}
    = \begin{bmatrix}
    a_1 a_2 & b_1 b_2 \\
    c_1 c_2 & d_1 d_2
    \end{bmatrix}
    $$

    위와 같은 연산 \( \ast \)를 뭐라고 부르던간에 이렇게 정하고 나서 언젠가 쓸모가 있을 때 사용하는건 괜찮을 수도 있다.

    심지어 \( \ast \)를 행렬곱이라고 부르고 일상적으로 행렬곱이라고 부르는 연산의 이름을 좀 바꿔서 사용할 수 있을지도 모른다.

    하지만 우리가 흔히 행렬곱이라고 부르는 그 연산은 방금 위에서 적은 (보통은 별로 쓰지 않는) \( \ast \) 연산보다 훨씬 자연스럽고 유용함을 설명하는 것이 이 글의 목적이다.

    벡터의 선형변환

    일반적으로 선형변환 \( f(\mathbf{x}) \)라고 하는 것은 일차변환이라고도 부르며, 다음과 같은 성질을 가지는 함수를 말한다.

    $$ f(\mathbf{x} + \mathbf{y}) = f(\mathbf{x}) + f(\mathbf{y}), \quad f(k \mathbf{x}) = k f(\mathbf{x}) $$

    그런데 벡터에 대해서는 이런 추상적인 정의를 사용하지 않고 선형변환을 표현하는 방법이 있는데 \( f(\mathbf{x}) \)는 다음과 같이 표현할 수 있고, 이 글에서 벡터의 선형변환은 항상 이런 연산을 의미할 것이다.

     

    \( \mathbf{x} = \langle x_1, x_2, \ldots , x_n \rangle \)가 \( n \) 차원 벡터이고 \( f(\mathbf{x}) \)가 \( m \) 차원 벡터 \( \langle y_1, y_2, \ldots , y_m \rangle \)라고 하면,

     

    \(y_1 = a_{11} x_1 + a_{12} x_2 + \ldots + a_{1n} x_n \)

    \(y_2 = a_{21} x_1 + a_{22} x_2 + \ldots + a_{2n} x_n \)

    \( \hspace{3cm} \vdots \)

    \(y_m = a_{m1} x_1 + a_{m2} x_2 + \ldots + a_{mn} x_n \)

     

    으로 나타낼 수 있다.

     

    선형변환이 왜 중요한지를 여기에서 길게 얘기하지는 않겠다. 다만 우리가 흔히 접하는 연립일차방정식이 이런 비슷한 형태로 되어있는 등 여기저기에서 자주 등장한다.

    행렬곱의 의미

    우선 위에서 \( y_i \)들을 정의하는 오른편 식들이 (통상적인 의미의) 행렬과 (열)벡터의 곱임을 알 필요가 있다.

    $$
    \begin{bmatrix}
    a_{11} & \dots & a_{1n} \\
    \vdots & \ddots & \vdots \\
    a_{m1} & \dots & a_{mn} \\
    \end{bmatrix}
    \begin{bmatrix}
    x_1 \\ \vdots \\ x_n \\
    \end{bmatrix}
    $$

    즉, 벡터 \( \mathbf{x} \)에 어떤 행렬 \( A_1 \)을 왼쪽에서 곱하는 연산은 그 벡터의 선형변환을 표현하도록 정의되고 이를 \( A_1 \mathbf{x} \)라고 쓴다. 그러면 이런 선형변환을 두 번 연달아 하는 연산은 여기에 새로운 행렬 \( A_2 \)를 왼쪽에 곱하는 것이어야 한다. 행렬과 벡터 사이의 곱을 위와 같이 정한 상황에서 아직 행렬들 사이의 곱셈을 정의하지 않았다고 치고 이제 행렬들의 곱을 어떻게 정하면 좋을까 생각해본다면, 선형변환 \( A_1 \)과 \( A_2 \)를 차례로 적용한 결과인 \( A_2 ( A_1 \mathbf{x}) \)가 \( A_2 A_1 \mathbf{x} \)이 되도록 행렬의 곱 \( A_2 A_1 \)을 정하는 것이 필요하다. 우리가 아는 그 행렬곱이 실제로 이렇게 되도록 정의되어 있는지 확인해보자.

     

    설명의 편의를 위해 3차원 벡터와 \( 3 \times 3 \) 행렬들로 예시를 보이면 다음과 같은데, 일반적인 차원의 벡터에 대해서도 여전히 성립하는 내용이다.

    $$ A = \begin{bmatrix}
    a_{11} & a_{12} & a_{13} \\
    a_{21} & a_{22} & a_{23} \\
    a_{31} & a_{32} & a_{33} \\
    \end{bmatrix}, \quad
    B = \begin{bmatrix}
    b_{11} & b_{12} & b_{13} \\
    b_{21} & b_{22} & b_{23} \\
    b_{31} & b_{32} & b_{33} \\
    \end{bmatrix} $$ 라고 하면,

     

    벡터 \( \mathbf{x} = \begin{bmatrix} x_1 \\ x_2 \\ x_3 \\ \end{bmatrix} \)에 행렬 \( B \)를 곱하는 선형변환의 결과인 벡터 \( B \mathbf{x} \)는

    $$ \begin{bmatrix}
    b_{11} x_1 + b_{12} x_2 + b_{13} x_3 \\
    b_{21} x_1 + b_{22} x_2 + b_{23} x_3 \\
    b_{31} x_1 + b_{32} x_2 + b_{33} x_3 \\
    \end{bmatrix} $$

    이고 이 결과의 왼쪽에 행렬 \( A \)를 곱하면,

    $$ \begin{bmatrix}
    a_{11} ( b_{11} x_1 + b_{12} x_2 + b_{13} x_3 ) + a_{12} ( b_{21} x_1 + b_{22} x_2 + b_{23} x_3 ) + a_{13} ( b_{31} x_1 + b_{32} x_2 + b_{33} x_3 ) \\
    a_{21} ( b_{11} x_1 + b_{12} x_2 + b_{13} x_3 ) + a_{22} ( b_{21} x_1 + b_{22} x_2 + b_{23} x_3 ) + a_{23} ( b_{31} x_1 + b_{32} x_2 + b_{33} x_3 ) \\
    a_{31} ( b_{11} x_1 + b_{12} x_2 + b_{13} x_3 ) + a_{32} ( b_{21} x_1 + b_{22} x_2 + b_{23} x_3 ) + a_{33} ( b_{31} x_1 + b_{32} x_2 + b_{33} x_3 ) \\
    \end{bmatrix} $$

    이 되는데, 행렬들과 벡터의 곱으로는 \( A(B \mathbf{x}) \)이 되고, 이 결과를 행렬 부분과 원래 벡터 \( \mathbf{x} \)의 곱으로 표현하면,

    $$ \begin{bmatrix}
    a_{11} b_{11} + a_{12} b_{21} + a_{13} b_{31} & a_{11} b_{12} + a_{12} b_{22} + a_{13} b_{32} & a_{11} b_{13} + a_{12} b_{23} + a_{13} b_{33} \\
    a_{21} b_{11} + a_{22} b_{21} + a_{23} b_{31} & a_{21} b_{12} + a_{22} b_{22} + a_{23} b_{32} & a_{21} b_{13} + a_{22} b_{23} + a_{23} b_{33} \\
    a_{31} b_{11} + a_{32} b_{21} + a_{33} b_{31} & a_{31} b_{12} + a_{32} b_{22} + a_{33} b_{32} & a_{31} b_{13} + a_{32} b_{23} + a_{33} b_{33} \\
    \end{bmatrix}
    \begin{bmatrix} x_1 \\ x_2 \\ x_3 \\ \end{bmatrix} $$

     

    즉, \( A(B \mathbf{x}) = (AB) \mathbf{x} \)이 되도록 행렬 \( AB \)를 정의한다면 \( AB \)는 통상적인 의미의 행렬의 곱과 같음을 알 수 있고, 우리가 위에서 확인하려고 했던 내용(선형변환을 벡터에 차례로 적용한 합성변환이 각각의 선형변환에 대응되는 행렬들의 곱과 같은 의미를 가지는지)에 대한 긍정적인 답을 얻게 되었다.

     

    '수학 > 선형대수' 카테고리의 다른 글

    특이값 분해 (SVD)  (1) 2024.06.14
    고윳값 분해와 직교 대각화  (0) 2024.05.11
Designed by Tistory.