본문으로 건너뛰기

절3.1행렬 변환

목표
  1. 행렬을 기하학적으로 함수로 보는 법을 배웁니다.
  2. 행렬 변환의 예인 반사, 확대, 회전, 층밀림, 사영을 배웁니다.
  3. 변환과 관련된 용어인 정의역, 공역, 치역을 이해합니다.
  4. 행렬 변환의 정의역, 공역, 치역을 이해합니다.
  5. 그림: 흔히 쓰이는 행렬 변환.
  6. 용어: 변환 / 함수, 정의역, 공역, 치역, 항등변환, 행렬 변환.

이 절에서는 행렬을 기하학적으로 함수, 즉 변환으로 이해하는 법을 배웁니다. 먼저 변환 일반을 간단히 살펴본 뒤, 행렬에서 비롯되는 변환인 행렬 변환으로 범위를 좁힙니다.

소절3.1.1함수로서의 행렬

비형식적으로 말하면, 함수란 입력을 받아 출력을 내놓는 규칙입니다. 예를 들어 f(x) = x^2는 수 하나 x를 입력으로 받아 그 수의 제곱을 출력하는 함수입니다: f(2) = 4\text{.} 이 소절에서는 행렬을 함수로 해석합니다.

A를 m개의 행과 n개의 열을 가진 행렬이라고 합시다. 행렬 방정식 b=Ax를 생각해 봅시다(Ax=b 대신 이렇게 쓰는 것은 독자에게 y=f(x)라는 표기를 떠올리게 하기 위해서입니다). x를 바꾸면 b도 바뀝니다. 이런 식으로 A를 독립변수가 x이고 종속변수가 b인 함수로 생각합니다.

  • 독립변수(입력)는 x이며, 이는 \R^n의 벡터입니다.
  • 종속변수(출력)는 b이며, 이는 \R^m의 벡터입니다.

가능한 모든 출력 벡터의 집합은 Ax=b가 해를 갖게 하는 벡터 b들의 집합입니다. 이 참고 in 절 2.3에 따르면 이는 A의 열공간과 같습니다.

\begin{tikzpicture}[thin border nodes]
  \path[use as bounding box] (-3,-5.5) -- (15,3);
  \draw[grid lines, light gray] (-3,-3) grid (3,3);

  \node (A) at (0,-3.5) {$\R^n$};
  \node (B) at (8,-3.5) {$\R^m$};
  \draw[->] (A.east) +(5mm,0) -- node[midway,above=1mm] {$b=Ax$}
    ($(B.west)-(5mm,0)$);

  \point["$x$" left] (P) at (1,1,5);

  \begin{scope}[myxyz, xshift=8cm]
    \path[clip, resetxy] (-3,-3) rectangle (3,3);

    \def\v{(-1,2,1)}
    \def\w{(0,1,-1)}

    \node[coordinate] (X) at \v {};
    \node[coordinate] (Y) at \w {};

    \draw[very thin] (-2,0,0) -- (0,0,0);
    \draw[very thin] (0,-2,0) -- (0,0,0);
    \draw[very thin] (0,0,-2) -- (0,0,0);

    \begin{scope}[x=(X), y=(Y), transformxy]
      \fill[seq4!10, nearly opaque] (-1,-1) rectangle (1,1);
      \draw[step=.5cm, seq4!30, very thin] (-1,-1) grid (1,1);
      \point["$Ax$" {fill=none,below}] (Q) at (-.5,.5);
      \node[coordinate,
          pin={[pin edge={very thin,-},pin distance=3mm,anchor=north]-70:$\Col(A)$}]
        at (0.1,1) {};
    \end{scope}

    \draw[->, very thin] (0,0,0) -- (2,0,0);
    \draw[->, very thin] (0,0,0) -- (0,2,0);
    \draw[->, very thin] (0,0,0) -- (0,0,2);

    \draw[resetxy] (-3,-3) rectangle (3,3);

  \end{scope}

  \draw[|->, shorten >=.35mm, shorten <=.35mm]
    (P.east) .. controls +(0:3cm) and +(190:3cm) .. (Q.west);

\end{tikzpicture}

소절3.1.2변환

이 시점에서 함수에 관한 개념과 용어를 정리해 두는 것이 편리합니다. 이 책에서는 함수를 변환이라고 부르겠습니다. 이렇게 하면 행렬을 함수로 보는 논의를 체계화할 수 있습니다.

정의

\R^n에서 \R^m으로의 변환은 \R^n의 각 벡터 x에 \R^m의 벡터 T(x)를 대응시키는 규칙 T입니다.

  • \R^n을 T의 정의역이라고 합니다.
  • \R^m을 T의 공역이라고 합니다.
  • \R^n에 속하는 x에 대하여, \R^m의 벡터 T(x)를 T에 의한 x의 상이라고 합니다.
  • 모든 상의 집합 \{T(x)\mid x\text{ in }\R^n\}을 T의 치역이라고 합니다.

표기 T\colon\R^n\To\R^m은 “T가 \R^n에서 \R^m으로의 변환이다”라는 뜻입니다.

T를 x를 입력으로 받아 T(x)를 출력으로 내놓는 “기계”로 생각하면 도움이 될 수 있습니다.

\tikzset{
  pics/gear/.style args={#1/#2}{
    code = { % #1 = number of gears, #2 = tooth length
      \filldraw[fill=black!30] (1cm-#2/2,0)
        let \n{angle} = {360/#1} in
          \foreach \gear [evaluate=\gear as \startangle using \gear*\n{angle}]
              in {1,...,#1}
            {
              arc[radius=1cm-#2/2, start angle=\startangle-\n{angle},
                  delta angle=\n{angle}/4]
              -- (\startangle-3*\n{angle}/4+\n{angle}/10:1cm+#2/2)
              arc[radius=1cm+#2/2,
                  start angle=\startangle-3*\n{angle}/4+\n{angle}/10,
                  end angle  =\startangle-  \n{angle}/4-\n{angle}/10]
              -- (\startangle-  \n{angle}/4:1cm-#2/2)
              arc[radius=1cm-#2/2, start angle=\startangle-\n{angle}/4,
                  delta angle=\n{angle}/4]
            };
          \draw (0,0) circle[radius=.4cm];
        }
    },
  % machine is an input/output machine for illustrating functions
  machine/.pic = {
    \filldraw[rounded corners=.3mm, fill=steel!30] (1.5, -1)
      -- (1.5, -.5) -- (1.5-.2, -.5) -- (1.5-.2, .4) -- (1.5, .4)
      -- (1.5, 1) -- (-1.5, 1) -- (-1.5, -1) -- cycle;
    \filldraw[fill=steel!30] (-1.5, -.2)
      -- (-1.5-.5, -.5) -- (-1.5-.5, .5) -- (-1.5, .2);
    \coordinate (-input) at (-1.5-.5, 0);
    %\fill (-1.5-.4, -.05) rectangle (-1.5+.5, .05);
    %\fill (-1.5+.3, -.15) -- (-1.5+.7, 0) -- (-1.5+.3, .15);
    \filldraw[yshift=-.1cm, fill=black!30] (1.5-.2, -.3)
      -- (1.5+.4, -.3)
      arc[radius=.15, start angle=-90, end angle=90]
      -- (1.5-.2,0);
    \draw[yshift=-.1cm] (1.5+.4, -.15) circle[radius=.1];
    %\fill (1.5-.7, -.05) rectangle (1.5+.2, .05);
    %\fill (1.5+.0, -.15) -- (1.5+.4, 0) -- (1.5+.0, .15);
    \coordinate (-output) at (1.5+.5, 0);
    \pic[transform shape, scale=.4] at (-.4, -.4) {gear={15/.2cm}};
    \pic[transform shape, scale=.4] at ( .4, -.4) {gear={15/.2cm}};
    % Need to expand \tikzpictextoptions *first* so as not to confuse \pgfkeys
    \expandafter\node\expandafter[\tikzpictextoptions] at (0, .5) {\tikzpictext};
    },
}
\begin{tikzpicture}[thin border nodes, scale=.9]
  \draw[grid lines, light gray] (-3,-3) grid (3,3);

  \node (A) at (0,-3.5) {$\R^n$};
  \node (B) at (10,-3.5) {$\R^m$};
  \node at (0,-4) {domain};
  \node at (10,-4) {codomain};
  \draw[->] (A.east) +(5mm,0) -- node[midway,above=1mm] {$T$}
    ($(B.west)-(5mm,0)$);

  \point["$x$" left] (P) at (1,1,5);

  \begin{scope}[myxyz, xshift=10cm]
    \path[clip, resetxy] (-3,-3) rectangle (3,3);

    \def\v{(-1,2,1)}
    \def\w{(0,1,-1)}

    \node[coordinate] (X) at \v {};
    \node[coordinate] (Y) at \w {};

    \draw[very thin] (-2,0,0) -- (0,0,0);
    \draw[very thin] (0,-2,0) -- (0,0,0);
    \draw[very thin] (0,0,-2) -- (0,0,0);

    \begin{scope}[x=(X), y=(Y), transformxy]
      \fill[seq4!10, nearly opaque] (-1,-1) rectangle (1,1);
      \draw[step=.5cm, seq4!30, very thin] (-1,-1) grid (1,1);
      \point["$T(x)$" {fill=none,below}] (Q) at (-.5,.5);
      \node[coordinate,
          pin={[pin edge={very thin,-},pin distance=3mm,anchor=north]-70:range}]
        at (0.1,1) {};
    \end{scope}

    \draw[->, very thin] (0,0,0) -- (2,0,0);
    \draw[->, very thin] (0,0,0) -- (0,2,0);
    \draw[->, very thin] (0,0,0) -- (0,0,2);

    \draw[resetxy] (-3,-3) rectangle (3,3);

  \end{scope}

  \pic[scale=.75, "$T$"] (machine) at (5,0) {machine};
  \node[coordinate] (IN) at (5cm-1.7cm,0) {};
  \node[coordinate] (OUT) at (5cm+1.7cm,0) {};
  \draw[->, shorten >=.35mm, shorten <=.35mm] (P.east)
    .. controls +(0:1cm) and +(180:1cm) .. (IN);
  \draw[->, shorten >=.35mm, shorten <=.35mm] (OUT)
    .. controls +(0:1cm) and +(190:2cm) .. (Q.west);

\end{tikzpicture}

정의역 \R^n의 점들은 T의 입력입니다. 이는 단순히 n개의 성분을 갖는 벡터, 즉 n개의 수로 이루어진 목록에 대해 T의 값을 구하는 것이 의미가 있다는 뜻입니다. 마찬가지로, 공역 \R^m의 점들은 T의 출력입니다. 이는 T의 값을 구한 결과가 항상 m개의 성분을 갖는 벡터라는 뜻입니다.

T의 치역은 공역의 벡터 중에서 어떤 입력에 대해 실제로 함수 T의 출력으로 나타나는 모든 벡터의 집합입니다. 다시 말해, 치역은 T(x)=b가 정의역에서 해 x를 갖도록 하는 공역의 모든 벡터 b입니다.

정의

항등변환 \Id_{\R^n}\colon\R^n\to\R^n은 다음 규칙으로 정의되는 변환입니다.

\begin{equation*}
\Id_{\R^n}(x) = x \qquad\text{for all $x$ in $\R^n$}.
\end{equation*}

다시 말해, 항등변환은 입력 벡터를 움직이지 않습니다. 즉 출력은 입력과 같습니다. 항등 변환의 정의역과 공역은 모두 \R^n이며, \R^n의 모든 벡터는 자기 자신의 출력이므로 치역 또한 \R^n입니다.

소절3.1.3행렬 변환

이제 앞의 소절에서 다룬 일반적인 개념과 용어를 첫 번째 소절에서 살펴본 행렬로 정의되는 함수에 특수화해 봅시다.

정의

A를 m\times n 행렬이라고 합시다. A에 연관된 행렬 변환은 다음과 같은 변환입니다.

\begin{equation*}
T\colon \R^n\To\R^m \sptxt{defined by} T(x) = Ax.
\end{equation*}

이는 \R^n의 벡터 x를 \R^m의 벡터 Ax로 보내는 변환입니다.

A의 열이 n개이면, A에는 성분이 n개인 벡터만 곱할 수 있습니다. 이 때문에 T(x)=Ax의 정의역은 \R^n입니다. A의 행이 n개이면, \R^n의 모든 벡터 x에 대해 Ax의 성분은 m개입니다. 이 때문에 T(x)=Ax의 공역은 \R^m입니다.

행렬 변환 T의 정의는 주어진 벡터에서 T의 값을 구하는 방법을 알려 줍니다. 입력 벡터에 행렬을 곱하면 됩니다. 예를 들어,

\begin{equation*}
A = \mat{1 2 3; 4 5 6}
\end{equation*}

라 하고 T(x)=Ax를 대응하는 행렬 변환이라 합시다. 그러면 다음과 같습니다.

\begin{equation*}
T\vec{-1 -2 -3} = A\vec{-1 -2 -3} = \mat{1 2 3; 4 5 6}\vec{-1 -2 -3}
= \vec{-14 -32}.
\end{equation*}

A의 열이 v_1,v_2,\ldots,v_n이라고 가정합시다. A에 일반적인 벡터 x를 곱하면 다음을 얻습니다.

\begin{equation*}
Ax = \mat{| | ,, |; v_1 v_2 \cdots, v_n; | | ,, |}\vec{x_1 x_2 \vdots, x_n}
= x_1v_1 + x_2v_2 + \cdots + x_nv_n.
\end{equation*}

이는 v_1,v_2,\ldots,v_n의 일반적인 일차결합일 뿐입니다. 따라서 T(x) = Ax의 출력은 정확히 A의 열들의 일차결합입니다. 즉, T의 치역은 A의 열공간입니다. 이 참고 in 절 2.3을 참고하십시오.

A를 m\times n 행렬이라 하고, T(x)=Ax를 대응하는 행렬 변환이라 합시다.

  • T의 정의역은 \R^n이며, 여기서 n은 A의 열의 개수입니다.
  • T의 공역은 \R^m이며, 여기서 m은 A의 행의 개수입니다.
  • T의 치역은 A의 열공간입니다.

n\times n 정사각행렬의 경우, T(x) = Ax의 정의역과 공역은 모두 \R^n입니다. 이러한 상황에서는 T를 \R^n 위에서 작용하는 것으로 볼 수 있습니다. 즉, T는 같은 공간 안에서 벡터들을 이리저리 옮깁니다.